@@ -105,19 +105,26 @@ BOOST_AUTO_TEST_CASE(BlockPolicyEstimates)
105105 // Highest feerate is 10*baseRate and gets in all blocks,
106106 // second highest feerate is 9*baseRate and gets in 9/10 blocks = 90%,
107107 // third highest feerate is 8*base rate, and gets in 8/10 blocks = 80%,
108- // so estimateFee(1) should return 10*baseRate.
108+ // so estimateFee(1) would return 10*baseRate but is hardcoded to return failure
109109 // Second highest feerate has 100% chance of being included by 2 blocks,
110110 // so estimateFee(2) should return 9*baseRate etc...
111111 for (int i = 1 ; i < 10 ;i++) {
112112 origFeeEst.push_back (mpool.estimateFee (i).GetFeePerK ());
113113 origPriEst.push_back (mpool.estimatePriority (i));
114114 if (i > 1 ) { // Fee estimates should be monotonically decreasing
115- BOOST_CHECK (origFeeEst[i-1 ] <= origFeeEst[i-2 ]);
115+ if (i > 2 ) {
116+ BOOST_CHECK (origFeeEst[i-1 ] <= origFeeEst[i-2 ]);
117+ }
116118 BOOST_CHECK (origPriEst[i-1 ] <= origPriEst[i-2 ]);
117119 }
118120 int mult = 11 -i;
119- BOOST_CHECK (origFeeEst[i-1 ] < mult*baseRate.GetFeePerK () + deltaFee);
120- BOOST_CHECK (origFeeEst[i-1 ] > mult*baseRate.GetFeePerK () - deltaFee);
121+ if (i > 1 ) {
122+ BOOST_CHECK (origFeeEst[i-1 ] < mult*baseRate.GetFeePerK () + deltaFee);
123+ BOOST_CHECK (origFeeEst[i-1 ] > mult*baseRate.GetFeePerK () - deltaFee);
124+ }
125+ else {
126+ BOOST_CHECK (origFeeEst[i-1 ] == CFeeRate (0 ).GetFeePerK ());
127+ }
121128 BOOST_CHECK (origPriEst[i-1 ] < pow (10 ,mult) * basepri + deltaPri);
122129 BOOST_CHECK (origPriEst[i-1 ] > pow (10 ,mult) * basepri - deltaPri);
123130 }
@@ -127,9 +134,12 @@ BOOST_AUTO_TEST_CASE(BlockPolicyEstimates)
127134 while (blocknum < 250 )
128135 mpool.removeForBlock (block, ++blocknum, dummyConflicted);
129136
137+ BOOST_CHECK (mpool.estimateFee (1 ) == CFeeRate (0 ));
130138 for (int i = 1 ; i < 10 ;i++) {
131- BOOST_CHECK (mpool.estimateFee (i).GetFeePerK () < origFeeEst[i-1 ] + deltaFee);
132- BOOST_CHECK (mpool.estimateFee (i).GetFeePerK () > origFeeEst[i-1 ] - deltaFee);
139+ if (i > 1 ) {
140+ BOOST_CHECK (mpool.estimateFee (i).GetFeePerK () < origFeeEst[i-1 ] + deltaFee);
141+ BOOST_CHECK (mpool.estimateFee (i).GetFeePerK () > origFeeEst[i-1 ] - deltaFee);
142+ }
133143 BOOST_CHECK (mpool.estimatePriority (i) < origPriEst[i-1 ] + deltaPri);
134144 BOOST_CHECK (mpool.estimatePriority (i) > origPriEst[i-1 ] - deltaPri);
135145 }
@@ -169,8 +179,10 @@ BOOST_AUTO_TEST_CASE(BlockPolicyEstimates)
169179 }
170180 mpool.removeForBlock (block, 265 , dummyConflicted);
171181 block.clear ();
182+ BOOST_CHECK (mpool.estimateFee (1 ) == CFeeRate (0 ));
172183 for (int i = 1 ; i < 10 ;i++) {
173- BOOST_CHECK (mpool.estimateFee (i).GetFeePerK () > origFeeEst[i-1 ] - deltaFee);
184+ if (i > 1 )
185+ BOOST_CHECK (mpool.estimateFee (i).GetFeePerK () > origFeeEst[i-1 ] - deltaFee);
174186 BOOST_CHECK (mpool.estimatePriority (i) > origPriEst[i-1 ] - deltaPri);
175187 }
176188
@@ -190,8 +202,10 @@ BOOST_AUTO_TEST_CASE(BlockPolicyEstimates)
190202 mpool.removeForBlock (block, ++blocknum, dummyConflicted);
191203 block.clear ();
192204 }
205+ BOOST_CHECK (mpool.estimateFee (1 ) == CFeeRate (0 ));
193206 for (int i = 1 ; i < 10 ; i++) {
194- BOOST_CHECK (mpool.estimateFee (i).GetFeePerK () < origFeeEst[i-1 ] - deltaFee);
207+ if (i > 1 )
208+ BOOST_CHECK (mpool.estimateFee (i).GetFeePerK () < origFeeEst[i-1 ] - deltaFee);
195209 BOOST_CHECK (mpool.estimatePriority (i) < origPriEst[i-1 ] - deltaPri);
196210 }
197211
0 commit comments