@@ -43,7 +43,7 @@ func TestNewDefaultPaymentDataFees(t *testing.T) {
4343 {
4444 name : "P2WPKH" ,
4545 address : btcutilAddress (t , "bc1qhl00zlummcd9zc5ppu3klmnp4m7slkuvuq4lz0" , chainParams ),
46- sum : 99 ,
46+ sum : 108 ,
4747 },
4848 {
4949 name : "P2WSH" ,
@@ -81,6 +81,56 @@ func TestNewDefaultPaymentDataFees(t *testing.T) {
8181 }
8282}
8383
84+ func TestTxSizeEstimation (t * testing.T ) {
85+ params := & chaincfg .MainNetParams
86+ bridge , err := txbuilder .NewDefaultPaymentDataFees (btcutilAddress (t , "bc1pvep2j3hym7tp69zyd3pwhe7a7exztrtg6wwhdd66fwx2ewfwag7qgawmug" , params ))
87+ require .NoError (t , err )
88+
89+ bridge .WitnessSizeVBytes .SetInt64 (92 ) // INFO: Not standard script.
90+
91+ sender , err := txbuilder .NewDefaultPaymentDataFees (btcutilAddress (t , "bc1p9spaecu0aszezcs2f48uk0fxcqgxry0menjn8jwjnv9pjmsew09s3j36k8" , params ))
92+ require .NoError (t , err )
93+
94+ feePayer , err := txbuilder .NewDefaultPaymentDataFees (btcutilAddress (t , "bc1qhl00zlummcd9zc5ppu3klmnp4m7slkuvuq4lz0" , params ))
95+ require .NoError (t , err )
96+
97+ commission , err := txbuilder .NewDefaultPaymentDataFees (btcutilAddress (t , "33qK7XqdJ3v5ySvnN9PugSRZsK2ahL5U1B" , params ))
98+ require .NoError (t , err )
99+
100+ tests := []struct {
101+ RoughTxSize * txbuilder.RoughTxSize
102+ Estimation int
103+ }{
104+ {
105+ RoughTxSize : & txbuilder.RoughTxSize {
106+ IncludeHeader : true ,
107+ Elements : []* txbuilder.EstimationElement {
108+ {PaymentDataFees : bridge , InputsNumber : 6 , OutputsNumber : 2 },
109+ {PaymentDataFees : sender , InputsNumber : 1 , OutputsNumber : 0 },
110+ },
111+ ExtraExpenses : big .NewInt (17 ),
112+ },
113+ Estimation : 970 ,
114+ },
115+ {
116+ RoughTxSize : & txbuilder.RoughTxSize {
117+ IncludeHeader : true ,
118+ Elements : []* txbuilder.EstimationElement {
119+ {PaymentDataFees : bridge , InputsNumber : 0 , OutputsNumber : 1 },
120+ {PaymentDataFees : sender , InputsNumber : 1 , OutputsNumber : 1 },
121+ {PaymentDataFees : feePayer , InputsNumber : 1 , OutputsNumber : 1 },
122+ {PaymentDataFees : commission , InputsNumber : 0 , OutputsNumber : 1 },
123+ },
124+ ExtraExpenses : big .NewInt (17 ),
125+ },
126+ Estimation : 312 ,
127+ },
128+ }
129+ for _ , test := range tests {
130+ require .EqualValues (t , test .Estimation , test .RoughTxSize .Estimate ().Int64 ())
131+ }
132+ }
133+
84134func btcutilAddress (t * testing.T , address string , params * chaincfg.Params ) btcutil.Address {
85135 addr , err := btcutil .DecodeAddress (address , params )
86136 require .NoError (t , err )
0 commit comments