22import org .bouncycastle .jce .provider .BouncyCastleProvider ;
33import org .bouncycastle .util .encoders .Hex ;
44import org .junit .jupiter .api .Test ;
5+ import org .junit .jupiter .params .ParameterizedTest ;
6+ import org .junit .jupiter .params .provider .Arguments ;
7+ import org .junit .jupiter .params .provider .MethodSource ;
58
69import java .io .ByteArrayInputStream ;
710import java .io .IOException ;
811import java .security .Security ;
912import java .util .List ;
13+ import java .util .stream .Stream ;
1014
1115import static io .github .bitcoineducation .bitcoinjava .OpCodes .*;
1216import static java .math .BigInteger .valueOf ;
@@ -106,12 +110,6 @@ public void p2trScript() {
106110 assertEquals (script .getType (), Script .P2TR );
107111 }
108112
109- @ Test
110- public void p2pkhScript () {
111- Script script = Script .p2pkhScript (Base58 .decodeWithChecksumToHex ("1GtpSrGhRGY5kkrNz4RykoqRQoJuG2L6DS" ));
112- assertEquals (script .getType (), Script .P2PKH );
113- }
114-
115113 @ Test
116114 public void p2wshScript2 () {
117115 Script redeemScript = new Script (List .of (
@@ -120,4 +118,61 @@ public void p2wshScript2() {
120118 ));
121119 assertEquals ("tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7" , redeemScript .p2wshAddress (AddressConstants .TESTNET_P2WPKH_ADDRESS_PREFIX ));
122120 }
121+
122+ @ ParameterizedTest
123+ @ MethodSource ("p2wpkhAddressParameters" )
124+ public void p2wpkhAddress (String address , String prefix ) {
125+ Script script = Script .p2wpkhScript (Bech32 .decode (prefix , address )[1 ]);
126+ assertEquals (script .p2wpkhAddress (prefix ), address );
127+ }
128+
129+ @ ParameterizedTest
130+ @ MethodSource ("p2trAddressParameters" )
131+ public void p2trAddress (String address , String prefix ) {
132+ Script script = Script .p2trScript (Bech32 .decode (prefix , address )[1 ]);
133+ assertEquals (script .p2trAddress (prefix ), address );
134+ }
135+
136+ @ ParameterizedTest
137+ @ MethodSource ("p2pkhScriptParameters" )
138+ public void p2pkhScript (String address , String prefix ) {
139+ Script script = Script .p2pkhScript (Base58 .decodeWithChecksumToHex (address ));
140+ assertEquals (script .getType (), Script .P2PKH );
141+ assertEquals (script .p2pkhAddress (prefix ), address );
142+ }
143+
144+ public static Stream <Arguments > p2trAddressParameters () {
145+ return Stream .of (
146+ Arguments .of ("tb1psmxksw0jx8eu5ds5yphsszyjagw5ug2ce2z35j0mk8ytkunh3f2sugn56k" , AddressConstants .TESTNET_P2WPKH_ADDRESS_PREFIX ),
147+ Arguments .of ("bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr" , AddressConstants .MAINNET_P2WPKH_ADDRESS_PREFIX ),
148+ Arguments .of ("bc1p4qhjn9zdvkux4e44uhx8tc55attvtyu358kutcqkudyccelu0was9fqzwh" , AddressConstants .MAINNET_P2WPKH_ADDRESS_PREFIX ),
149+ Arguments .of ("bc1p3qkhfews2uk44qtvauqyr2ttdsw7svhkl9nkm9s9c3x4ax5h60wqwruhk7" , AddressConstants .MAINNET_P2WPKH_ADDRESS_PREFIX )
150+ );
151+ }
152+
153+ public static Stream <Arguments > p2wpkhAddressParameters () {
154+ return Stream .of (
155+ Arguments .of ("tb1q63rv8027mnhszkmf0f5qkxhk48r9tcyk0n6m8l" , AddressConstants .TESTNET_P2WPKH_ADDRESS_PREFIX ),
156+ Arguments .of ("bcrt1qq5p8alfstj5fwqaj89xr0ssaadcmg6px98hsq5" , AddressConstants .REGTEST_P2WPKH_ADDRESS_PREFIX ),
157+ Arguments .of ("bc1q3qau48a0gs3yya4fd5pm2qqm88rzh7j83ypcs9" , AddressConstants .MAINNET_P2WPKH_ADDRESS_PREFIX ),
158+ Arguments .of ("bc1qlm2ukja7p7u6yjdphanj34dekd6p4f24vap4f9" , AddressConstants .MAINNET_P2WPKH_ADDRESS_PREFIX ),
159+ Arguments .of ("bc1qjgl6gkfdkte0556v6sgwnunrnr54p39msm38na" , AddressConstants .MAINNET_P2WPKH_ADDRESS_PREFIX )
160+ );
161+ }
162+
163+ public static Stream <Arguments > p2pkhScriptParameters () {
164+ return Stream .of (
165+ Arguments .of ("1GtpSrGhRGY5kkrNz4RykoqRQoJuG2L6DS" , AddressConstants .MAINNET_P2PKH_ADDRESS_PREFIX ),
166+ Arguments .of ("1osGyLLcLGuLmadLy2vZ7y5ZkaefxoEMu" , AddressConstants .MAINNET_P2PKH_ADDRESS_PREFIX ),
167+ Arguments .of ("1FNSrAooN1cN85rXBAsHak5JxXgZPsNAXs" , AddressConstants .MAINNET_P2PKH_ADDRESS_PREFIX ),
168+ Arguments .of ("19RXAAj2WFyBXbVWcoGUANn3SWma61DGVW" , AddressConstants .MAINNET_P2PKH_ADDRESS_PREFIX ),
169+ Arguments .of ("1Dx9NMqtbpoaZvJRWmX1Ej9cK1GVoubyed" , AddressConstants .MAINNET_P2PKH_ADDRESS_PREFIX ),
170+ Arguments .of ("moQMmyts9f3u3Th1zdQVvvK3GWKpNSQeaM" , AddressConstants .TESTNET_P2PKH_ADDRESS_PREFIX ),
171+ Arguments .of ("mzUce6b1PmmSKqNWZfgkMpj3rnZ4rrsP9v" , AddressConstants .TESTNET_P2PKH_ADDRESS_PREFIX ),
172+ Arguments .of ("mux4bhrfGMDrvdLeSqSpVy6tpCG9GDqPMN" , AddressConstants .TESTNET_P2PKH_ADDRESS_PREFIX ),
173+ Arguments .of ("mzNdm9Caku7C8MvTMXhu4DCtVm27LBwhAA" , AddressConstants .TESTNET_P2PKH_ADDRESS_PREFIX ),
174+ Arguments .of ("mj71KbiTptpzRXBVJknYKaAG8Z5Nxx63Df" , AddressConstants .TESTNET_P2PKH_ADDRESS_PREFIX )
175+ );
176+ }
177+
123178}
0 commit comments