- // 9 sats isn't enough to pay fee on a dummy transaction...
- assert_eq!(tx.get_weight() as u64, 40); // ie 10 vbytes
- assert!(maybe_add_change_output(&mut tx, 9, 0, 253, Script::new()).is_err());
+ let output_spk = ScriptBuf::new_p2pkh(&PubkeyHash::hash(&[0; 0]));
+ assert_eq!(output_spk.dust_value().to_sat(), 546);
+ // base size = version size + varint[input count] + input size + varint[output count] + output size + lock time size
+ // total size = version size + marker + flag + varint[input count] + input size + varint[output count] + output size + lock time size
+ // weight = 3 * base size + total size = 3 * (4 + 1 + 0 + 1 + 0 + 4) + (4 + 1 + 1 + 1 + 0 + 1 + 0 + 4) = 3 * 10 + 12 = 42
+ assert_eq!(tx.weight().to_wu(), 42);
+ // 10 sats isn't enough to pay fee on a dummy transaction...
+ assert!(maybe_add_change_output(&mut tx, Amount::from_sat(10), 0, 250, output_spk.clone()).is_err());