round-a-value.https.window.js (5545B)
1 // META: script=/resources/testdriver.js 2 // META: script=/resources/testdriver-vendor.js 3 // META: script=/common/utils.js 4 // META: script=resources/fledge-util.sub.js 5 // META: timeout=long 6 7 "use strict"; 8 9 promise_test(async test => { 10 const uuid = generateUuid(test); 11 await runReportTest( 12 test, uuid, 13 { generateBid: 14 `return {'adCost': 1.99, 15 'bid': 9, 16 'render': interestGroup.ads[0].renderURL};`, 17 reportWinSuccessCondition: 18 // Possible stochastic rounding results for 1.99 19 `browserSignals.adCost === 1.9921875 || browserSignals.adCost === 1.984375`, 20 reportWin: 21 `sendReportTo('${createBidderReportURL(uuid)}');` }, 22 // expectedReportURLs 23 [createBidderReportURL(uuid)] 24 ); 25 }, 'Check adCost is stochastically rounded with 8 bit mantissa and exponent.'); 26 27 promise_test(async test => { 28 const uuid = generateUuid(test); 29 await runReportTest( 30 test, uuid, 31 { generateBid: 32 `return {'bid': 1.99, 33 'render': interestGroup.ads[0].renderURL};`, 34 reportWinSuccessCondition: 35 // Possible stochastic rounding results for 1.99 36 `browserSignals.bid === 1.9921875 || browserSignals.bid === 1.984375`, 37 reportWin: 38 `sendReportTo('${createBidderReportURL(uuid)}');` }, 39 // expectedReportURLs 40 [createBidderReportURL(uuid)] 41 ); 42 }, 'Check bid is stochastically rounded with 8 bit mantissa and exponent.'); 43 44 promise_test(async test => { 45 const uuid = generateUuid(test); 46 await runReportTest( 47 test, uuid, 48 { scoreAd: 49 `return {desirability: 1.99, 50 allowComponentAuction: false}`, 51 reportResultSuccessCondition: 52 // Possible stochastic rounding results for 1.99 53 `browserSignals.desirability === 1.9921875 || browserSignals.desirability === 1.984375`, 54 reportResult: 55 `sendReportTo('${createBidderReportURL(uuid)}');` }, 56 // expectedReportURLs 57 [createBidderReportURL(uuid)] 58 ); 59 }, 'Check desirability is stochastically rounded with 8 bit mantissa and exponent.'); 60 61 promise_test(async test => { 62 const uuid = generateUuid(test); 63 await joinInterestGroup(test, uuid, 64 { 65 biddingLogicURL: createBiddingScriptURL({ bid: 1.99 }), 66 name: 'other interest group 1' }); 67 await runReportTest( 68 test, uuid, 69 { reportResultSuccessCondition: 70 // Possible stochastic rounding results for 1.99 71 `browserSignals.highestScoringOtherBid === 1.9921875 || browserSignals.highestScoringOtherBid === 1.984375`, 72 reportResult: 73 `sendReportTo('${createBidderReportURL(uuid)}');` }, 74 // expectedReportURLs 75 [createBidderReportURL(uuid)] 76 ); 77 }, 'Check highestScoringOtherBid is stochastically rounded with 8 bit mantissa and exponent.'); 78 79 promise_test(async test => { 80 const uuid = generateUuid(test); 81 await runReportTest( 82 test, uuid, 83 { generateBid: 84 `return {'adCost': 2, 85 'bid': 9, 86 'render': interestGroup.ads[0].renderURL};`, 87 reportWinSuccessCondition: 88 `browserSignals.adCost === 2`, 89 reportWin: 90 `sendReportTo('${createBidderReportURL(uuid)}');` }, 91 // expectedReportURLs 92 [createBidderReportURL(uuid)] 93 ); 94 }, 'Value is ignored as a non-valid floating-point number.'); 95 96 promise_test(async test => { 97 const uuid = generateUuid(test); 98 await runReportTest( 99 test, uuid, 100 { generateBid: 101 `return {'adCost': 1E-46, 102 'bid': 9, 103 'render': interestGroup.ads[0].renderURL};`, 104 reportWinSuccessCondition: 105 `browserSignals.adCost === 0`, 106 reportWin: 107 `sendReportTo('${createBidderReportURL(uuid)}');` }, 108 // expectedReportURLs 109 [createBidderReportURL(uuid)] 110 ); 111 }, 'Value is rounded to 0 if value is greater than 0 and its exponent is less than -128.'); 112 113 promise_test(async test => { 114 const uuid = generateUuid(test); 115 await runReportTest( 116 test, uuid, 117 { generateBid: 118 `return {'adCost': -1E-46, 119 'bid': 9, 120 'render': interestGroup.ads[0].renderURL};`, 121 reportWinSuccessCondition: 122 `browserSignals.adCost === -0`, 123 reportWin: 124 `sendReportTo('${createBidderReportURL(uuid)}');` }, 125 // expectedReportURLs 126 [createBidderReportURL(uuid)] 127 ); 128 }, 'Value is rounded to -0 if value is greater than 0 and its exponent is less than -128.'); 129 130 promise_test(async test => { 131 const uuid = generateUuid(test); 132 await runReportTest( 133 test, uuid, 134 { generateBid: 135 `return {'adCost': 1E+39, 136 'bid': 9, 137 'render': interestGroup.ads[0].renderURL};`, 138 reportWinSuccessCondition: 139 `browserSignals.adCost === Infinity`, 140 reportWin: 141 `sendReportTo('${createBidderReportURL(uuid)}');` }, 142 // expectedReportURLs 143 [createBidderReportURL(uuid)] 144 ); 145 }, 'Value is rounded to Infinity if value is greater than 0 and its exponent is greater than 127.'); 146 147 promise_test(async test => { 148 const uuid = generateUuid(test); 149 await runReportTest( 150 test, uuid, 151 { generateBid: 152 `return {'adCost': -1E+39, 153 'bid': 9, 154 'render': interestGroup.ads[0].renderURL};`, 155 reportWinSuccessCondition: 156 `browserSignals.adCost === -Infinity`, 157 reportWin: 158 `sendReportTo('${createBidderReportURL(uuid)}');` }, 159 // expectedReportURLs 160 [createBidderReportURL(uuid)] 161 ); 162 }, 'Value is rounded to -Infinity if value is less than 0 and its exponent is greater than 127.');