message: policy: unit test Segwit dust thresholds
diff: @@ -943,6 +943,33 @@ BOOST_AUTO_TEST_CASE(test_IsStandard)
  BOOST_CHECK(!IsStandardTx(CTransaction(t), reason));
  BOOST_CHECK_EQUAL(reason, "bare-multisig");
  fIsBareMultisigStd = DEFAULT_PERMIT_BAREMULTISIG;
  +
  + // Check P2WPKH outputs dust threshold
  + t.vout[0].scriptPubKey = CScript() << OP_0 << ParseHex("ffffffffffffffffffffffffffffffffffffffff");
  + t.vout[0].nValue = 294;
  + BOOST_CHECK(IsStandardTx(CTransaction(t), reason));
  + t.vout[0].nValue = 293;
  + BOOST_CHECK(!IsStandardTx(CTransaction(t), reason));
  + BOOST_CHECK_EQUAL(reason, "dust");
  +
  + // Check P2WSH outputs dust threshold
  + t.vout[0].scriptPubKey = CScript() << OP_0 << ParseHex("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
  + t.vout[0].nValue = 330;
  + BOOST_CHECK(IsStandardTx(CTransaction(t), reason));
  + t.vout[0].nValue = 329;
  + BOOST_CHECK(!IsStandardTx(CTransaction(t), reason));
  + BOOST_CHECK_EQUAL(reason, "dust");
  +
  + // Check future Witness Program versions dust threshold
  + for (int op = OP_2; op <= OP_16; op += 1) {
  + t.vout[0].scriptPubKey = CScript() << (opcodetype)op << ParseHex("ffff");
  + t.vout[0].nValue = 240;
  + BOOST_CHECK(IsStandardTx(CTransaction(t), reason));
  +
  + t.vout[0].nValue = 239;
  + BOOST_CHECK(!IsStandardTx(CTransaction(t), reason));
  + BOOST_CHECK_EQUAL(reason, "dust");
  + }
  }
  BOOST_AUTO_TEST_SUITE_END()
  