Skip to content

Commit fab37cc

Browse files
test: move all tests in tests module
1 parent cad6677 commit fab37cc

File tree

13 files changed

+1364
-1390
lines changed

13 files changed

+1364
-1390
lines changed

bdk-ffi/src/bitcoin.rs

Lines changed: 0 additions & 377 deletions
Original file line numberDiff line numberDiff line change
@@ -771,380 +771,3 @@ pub enum DescriptorType {
771771
/// Tr Descriptor
772772
Tr,
773773
}
774-
775-
#[cfg(test)]
776-
mod tests {
777-
use crate::bitcoin::Address;
778-
use crate::bitcoin::Network;
779-
use crate::bitcoin::Psbt;
780-
781-
#[test]
782-
fn test_is_valid_for_network() {
783-
// ====Docs tests====
784-
// https://docs.rs/bitcoin/0.29.2/src/bitcoin/util/address.rs.html#798-802
785-
786-
let docs_address_testnet_str = "2N83imGV3gPwBzKJQvWJ7cRUY2SpUyU6A5e";
787-
let docs_address_testnet =
788-
Address::new(docs_address_testnet_str.to_string(), Network::Testnet).unwrap();
789-
assert!(
790-
docs_address_testnet.is_valid_for_network(Network::Testnet),
791-
"Address should be valid for Testnet"
792-
);
793-
assert!(
794-
docs_address_testnet.is_valid_for_network(Network::Signet),
795-
"Address should be valid for Signet"
796-
);
797-
assert!(
798-
docs_address_testnet.is_valid_for_network(Network::Regtest),
799-
"Address should be valid for Regtest"
800-
);
801-
802-
let docs_address_mainnet_str = "32iVBEu4dxkUQk9dJbZUiBiQdmypcEyJRf";
803-
let docs_address_mainnet =
804-
Address::new(docs_address_mainnet_str.to_string(), Network::Bitcoin).unwrap();
805-
assert!(
806-
docs_address_mainnet.is_valid_for_network(Network::Bitcoin),
807-
"Address should be valid for Bitcoin"
808-
);
809-
810-
// ====Bech32====
811-
812-
// | Network | Prefix | Address Type |
813-
// |-----------------|---------|--------------|
814-
// | Bitcoin Mainnet | `bc1` | Bech32 |
815-
// | Bitcoin Testnet | `tb1` | Bech32 |
816-
// | Bitcoin Signet | `tb1` | Bech32 |
817-
// | Bitcoin Regtest | `bcrt1` | Bech32 |
818-
819-
// Bech32 - Bitcoin
820-
// Valid for:
821-
// - Bitcoin
822-
// Not valid for:
823-
// - Testnet
824-
// - Signet
825-
// - Regtest
826-
let bitcoin_mainnet_bech32_address_str = "bc1qxhmdufsvnuaaaer4ynz88fspdsxq2h9e9cetdj";
827-
let bitcoin_mainnet_bech32_address = Address::new(
828-
bitcoin_mainnet_bech32_address_str.to_string(),
829-
Network::Bitcoin,
830-
)
831-
.unwrap();
832-
assert!(
833-
bitcoin_mainnet_bech32_address.is_valid_for_network(Network::Bitcoin),
834-
"Address should be valid for Bitcoin"
835-
);
836-
assert!(
837-
!bitcoin_mainnet_bech32_address.is_valid_for_network(Network::Testnet),
838-
"Address should not be valid for Testnet"
839-
);
840-
assert!(
841-
!bitcoin_mainnet_bech32_address.is_valid_for_network(Network::Signet),
842-
"Address should not be valid for Signet"
843-
);
844-
assert!(
845-
!bitcoin_mainnet_bech32_address.is_valid_for_network(Network::Regtest),
846-
"Address should not be valid for Regtest"
847-
);
848-
849-
// Bech32 - Testnet
850-
// Valid for:
851-
// - Testnet
852-
// - Regtest
853-
// Not valid for:
854-
// - Bitcoin
855-
// - Regtest
856-
let bitcoin_testnet_bech32_address_str =
857-
"tb1p4nel7wkc34raczk8c4jwk5cf9d47u2284rxn98rsjrs4w3p2sheqvjmfdh";
858-
let bitcoin_testnet_bech32_address = Address::new(
859-
bitcoin_testnet_bech32_address_str.to_string(),
860-
Network::Testnet,
861-
)
862-
.unwrap();
863-
assert!(
864-
!bitcoin_testnet_bech32_address.is_valid_for_network(Network::Bitcoin),
865-
"Address should not be valid for Bitcoin"
866-
);
867-
assert!(
868-
bitcoin_testnet_bech32_address.is_valid_for_network(Network::Testnet),
869-
"Address should be valid for Testnet"
870-
);
871-
assert!(
872-
bitcoin_testnet_bech32_address.is_valid_for_network(Network::Signet),
873-
"Address should be valid for Signet"
874-
);
875-
assert!(
876-
!bitcoin_testnet_bech32_address.is_valid_for_network(Network::Regtest),
877-
"Address should not not be valid for Regtest"
878-
);
879-
880-
// Bech32 - Signet
881-
// Valid for:
882-
// - Signet
883-
// - Testnet
884-
// Not valid for:
885-
// - Bitcoin
886-
// - Regtest
887-
let bitcoin_signet_bech32_address_str =
888-
"tb1pwzv7fv35yl7ypwj8w7al2t8apd6yf4568cs772qjwper74xqc99sk8x7tk";
889-
let bitcoin_signet_bech32_address = Address::new(
890-
bitcoin_signet_bech32_address_str.to_string(),
891-
Network::Signet,
892-
)
893-
.unwrap();
894-
assert!(
895-
!bitcoin_signet_bech32_address.is_valid_for_network(Network::Bitcoin),
896-
"Address should not be valid for Bitcoin"
897-
);
898-
assert!(
899-
bitcoin_signet_bech32_address.is_valid_for_network(Network::Testnet),
900-
"Address should be valid for Testnet"
901-
);
902-
assert!(
903-
bitcoin_signet_bech32_address.is_valid_for_network(Network::Signet),
904-
"Address should be valid for Signet"
905-
);
906-
assert!(
907-
!bitcoin_signet_bech32_address.is_valid_for_network(Network::Regtest),
908-
"Address should not not be valid for Regtest"
909-
);
910-
911-
// Bech32 - Regtest
912-
// Valid for:
913-
// - Regtest
914-
// Not valid for:
915-
// - Bitcoin
916-
// - Testnet
917-
// - Signet
918-
let bitcoin_regtest_bech32_address_str = "bcrt1q39c0vrwpgfjkhasu5mfke9wnym45nydfwaeems";
919-
let bitcoin_regtest_bech32_address = Address::new(
920-
bitcoin_regtest_bech32_address_str.to_string(),
921-
Network::Regtest,
922-
)
923-
.unwrap();
924-
assert!(
925-
!bitcoin_regtest_bech32_address.is_valid_for_network(Network::Bitcoin),
926-
"Address should not be valid for Bitcoin"
927-
);
928-
assert!(
929-
!bitcoin_regtest_bech32_address.is_valid_for_network(Network::Testnet),
930-
"Address should not be valid for Testnet"
931-
);
932-
assert!(
933-
!bitcoin_regtest_bech32_address.is_valid_for_network(Network::Signet),
934-
"Address should not be valid for Signet"
935-
);
936-
assert!(
937-
bitcoin_regtest_bech32_address.is_valid_for_network(Network::Regtest),
938-
"Address should be valid for Regtest"
939-
);
940-
941-
// ====P2PKH====
942-
943-
// | Network | Prefix for P2PKH | Prefix for P2SH |
944-
// |------------------------------------|------------------|-----------------|
945-
// | Bitcoin Mainnet | `1` | `3` |
946-
// | Bitcoin Testnet, Regtest, Signet | `m` or `n` | `2` |
947-
948-
// P2PKH - Bitcoin
949-
// Valid for:
950-
// - Bitcoin
951-
// Not valid for:
952-
// - Testnet
953-
// - Regtest
954-
let bitcoin_mainnet_p2pkh_address_str = "1FfmbHfnpaZjKFvyi1okTjJJusN455paPH";
955-
let bitcoin_mainnet_p2pkh_address = Address::new(
956-
bitcoin_mainnet_p2pkh_address_str.to_string(),
957-
Network::Bitcoin,
958-
)
959-
.unwrap();
960-
assert!(
961-
bitcoin_mainnet_p2pkh_address.is_valid_for_network(Network::Bitcoin),
962-
"Address should be valid for Bitcoin"
963-
);
964-
assert!(
965-
!bitcoin_mainnet_p2pkh_address.is_valid_for_network(Network::Testnet),
966-
"Address should not be valid for Testnet"
967-
);
968-
assert!(
969-
!bitcoin_mainnet_p2pkh_address.is_valid_for_network(Network::Regtest),
970-
"Address should not be valid for Regtest"
971-
);
972-
973-
// P2PKH - Testnet
974-
// Valid for:
975-
// - Testnet
976-
// - Regtest
977-
// Not valid for:
978-
// - Bitcoin
979-
let bitcoin_testnet_p2pkh_address_str = "mucFNhKMYoBQYUAEsrFVscQ1YaFQPekBpg";
980-
let bitcoin_testnet_p2pkh_address = Address::new(
981-
bitcoin_testnet_p2pkh_address_str.to_string(),
982-
Network::Testnet,
983-
)
984-
.unwrap();
985-
assert!(
986-
!bitcoin_testnet_p2pkh_address.is_valid_for_network(Network::Bitcoin),
987-
"Address should not be valid for Bitcoin"
988-
);
989-
assert!(
990-
bitcoin_testnet_p2pkh_address.is_valid_for_network(Network::Testnet),
991-
"Address should be valid for Testnet"
992-
);
993-
assert!(
994-
bitcoin_testnet_p2pkh_address.is_valid_for_network(Network::Regtest),
995-
"Address should be valid for Regtest"
996-
);
997-
998-
// P2PKH - Regtest
999-
// Valid for:
1000-
// - Testnet
1001-
// - Regtest
1002-
// Not valid for:
1003-
// - Bitcoin
1004-
let bitcoin_regtest_p2pkh_address_str = "msiGFK1PjCk8E6FXeoGkQPTscmcpyBdkgS";
1005-
let bitcoin_regtest_p2pkh_address = Address::new(
1006-
bitcoin_regtest_p2pkh_address_str.to_string(),
1007-
Network::Regtest,
1008-
)
1009-
.unwrap();
1010-
assert!(
1011-
!bitcoin_regtest_p2pkh_address.is_valid_for_network(Network::Bitcoin),
1012-
"Address should not be valid for Bitcoin"
1013-
);
1014-
assert!(
1015-
bitcoin_regtest_p2pkh_address.is_valid_for_network(Network::Testnet),
1016-
"Address should be valid for Testnet"
1017-
);
1018-
assert!(
1019-
bitcoin_regtest_p2pkh_address.is_valid_for_network(Network::Regtest),
1020-
"Address should be valid for Regtest"
1021-
);
1022-
1023-
// ====P2SH====
1024-
1025-
// | Network | Prefix for P2PKH | Prefix for P2SH |
1026-
// |------------------------------------|------------------|-----------------|
1027-
// | Bitcoin Mainnet | `1` | `3` |
1028-
// | Bitcoin Testnet, Regtest, Signet | `m` or `n` | `2` |
1029-
1030-
// P2SH - Bitcoin
1031-
// Valid for:
1032-
// - Bitcoin
1033-
// Not valid for:
1034-
// - Testnet
1035-
// - Regtest
1036-
let bitcoin_mainnet_p2sh_address_str = "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy";
1037-
let bitcoin_mainnet_p2sh_address = Address::new(
1038-
bitcoin_mainnet_p2sh_address_str.to_string(),
1039-
Network::Bitcoin,
1040-
)
1041-
.unwrap();
1042-
assert!(
1043-
bitcoin_mainnet_p2sh_address.is_valid_for_network(Network::Bitcoin),
1044-
"Address should be valid for Bitcoin"
1045-
);
1046-
assert!(
1047-
!bitcoin_mainnet_p2sh_address.is_valid_for_network(Network::Testnet),
1048-
"Address should not be valid for Testnet"
1049-
);
1050-
assert!(
1051-
!bitcoin_mainnet_p2sh_address.is_valid_for_network(Network::Regtest),
1052-
"Address should not be valid for Regtest"
1053-
);
1054-
1055-
// P2SH - Testnet
1056-
// Valid for:
1057-
// - Testnet
1058-
// - Regtest
1059-
// Not valid for:
1060-
// - Bitcoin
1061-
let bitcoin_testnet_p2sh_address_str = "2NFUBBRcTJbYc1D4HSCbJhKZp6YCV4PQFpQ";
1062-
let bitcoin_testnet_p2sh_address = Address::new(
1063-
bitcoin_testnet_p2sh_address_str.to_string(),
1064-
Network::Testnet,
1065-
)
1066-
.unwrap();
1067-
assert!(
1068-
!bitcoin_testnet_p2sh_address.is_valid_for_network(Network::Bitcoin),
1069-
"Address should not be valid for Bitcoin"
1070-
);
1071-
assert!(
1072-
bitcoin_testnet_p2sh_address.is_valid_for_network(Network::Testnet),
1073-
"Address should be valid for Testnet"
1074-
);
1075-
assert!(
1076-
bitcoin_testnet_p2sh_address.is_valid_for_network(Network::Regtest),
1077-
"Address should be valid for Regtest"
1078-
);
1079-
1080-
// P2SH - Regtest
1081-
// Valid for:
1082-
// - Testnet
1083-
// - Regtest
1084-
// Not valid for:
1085-
// - Bitcoin
1086-
let bitcoin_regtest_p2sh_address_str = "2NEb8N5B9jhPUCBchz16BB7bkJk8VCZQjf3";
1087-
let bitcoin_regtest_p2sh_address = Address::new(
1088-
bitcoin_regtest_p2sh_address_str.to_string(),
1089-
Network::Regtest,
1090-
)
1091-
.unwrap();
1092-
assert!(
1093-
!bitcoin_regtest_p2sh_address.is_valid_for_network(Network::Bitcoin),
1094-
"Address should not be valid for Bitcoin"
1095-
);
1096-
assert!(
1097-
bitcoin_regtest_p2sh_address.is_valid_for_network(Network::Testnet),
1098-
"Address should be valid for Testnet"
1099-
);
1100-
assert!(
1101-
bitcoin_regtest_p2sh_address.is_valid_for_network(Network::Regtest),
1102-
"Address should be valid for Regtest"
1103-
);
1104-
}
1105-
1106-
#[test]
1107-
fn test_to_address_data() {
1108-
// P2PKH address
1109-
let p2pkh = Address::new(
1110-
"1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2".to_string(),
1111-
Network::Bitcoin,
1112-
)
1113-
.unwrap();
1114-
let p2pkh_data = p2pkh.to_address_data();
1115-
println!("P2PKH data: {:#?}", p2pkh_data);
1116-
1117-
// P2SH address
1118-
let p2sh = Address::new(
1119-
"3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy".to_string(),
1120-
Network::Bitcoin,
1121-
)
1122-
.unwrap();
1123-
let p2sh_data = p2sh.to_address_data();
1124-
println!("P2SH data: {:#?}", p2sh_data);
1125-
1126-
// Segwit address (P2WPKH)
1127-
let segwit = Address::new(
1128-
"bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4".to_string(),
1129-
Network::Bitcoin,
1130-
)
1131-
.unwrap();
1132-
let segwit_data = segwit.to_address_data();
1133-
println!("Segwit data: {:#?}", segwit_data);
1134-
}
1135-
1136-
#[test]
1137-
fn test_psbt_spend_utxo() {
1138-
let psbt = Psbt::new("cHNidP8BAH0CAAAAAXHl8cCbj84lm1v42e54IGI6CQru/nBXwrPE3q2fiGO4AAAAAAD9////Ar4DAAAAAAAAIgAgYw/rnGd4Bifj8s7TaMgR2tal/lq+L1jVv2Sqd1mxMbJEEQAAAAAAABYAFNVpt8vHYUPZNSF6Hu07uP1YeHts4QsAAAABALUCAAAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////BAJ+CwD/////AkAlAAAAAAAAIgAgQyrnn86L9D3vDiH959KJbPudDHc/bp6nI9E5EBLQD1YAAAAAAAAAACZqJKohqe3i9hw/cdHe/T+pmd+jaVN1XGkGiXmZYrSL69g2l06M+QEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQErQCUAAAAAAAAiACBDKuefzov0Pe8OIf3n0ols+50Mdz9unqcj0TkQEtAPViICAy4V+d/Qff71zzPXxK4FWG5x+wL/Ku93y/LG5p+0rI2xSDBFAiEA9b0OdASAs0P2uhQinjN7QGP5jX/b32LcShBmny8U0RUCIBebxvCDbpchCjqLAhOMjydT80DAzokaalGzV7XVTsbiASICA1tMY+46EgxIHU18bgHnUvAAlAkMq5LfwkpOGZ97sDKRRzBEAiBpmlZwJocNEiKLxexEX0Par6UgG8a89AklTG3/z9AHlAIgQH/ybCvfKJzr2dq0+IyueDebm7FamKIJdzBYWMXRr/wBIgID+aCzK9nclwhbbN7KbIVGUQGLWZsjcaqWPxk9gFeG+FxIMEUCIQDRPBzb0i9vaUmxCcs1yz8uq4tq1mdDAYvvYn3isKEhFAIgfmeTLLzMo0mmQ23ooMnyx6iPceE8xV5CvARuJsd88tEBAQVpUiEDW0xj7joSDEgdTXxuAedS8ACUCQyrkt/CSk4Zn3uwMpEhAy4V+d/Qff71zzPXxK4FWG5x+wL/Ku93y/LG5p+0rI2xIQP5oLMr2dyXCFts3spshUZRAYtZmyNxqpY/GT2AV4b4XFOuIgYDLhX539B9/vXPM9fErgVYbnH7Av8q73fL8sbmn7SsjbEYCapBE1QAAIABAACAAAAAgAAAAAAAAAAAIgYDW0xj7joSDEgdTXxuAedS8ACUCQyrkt/CSk4Zn3uwMpEY2bvrelQAAIABAACAAAAAgAAAAAAAAAAAIgYD+aCzK9nclwhbbN7KbIVGUQGLWZsjcaqWPxk9gFeG+FwYAKVFVFQAAIABAACAAAAAgAAAAAAAAAAAAAEBaVIhA7cr8fTHOPtE+t0zM3iWJvpfPvsNaVyQ0Sar6nIe9tQXIQMm7k7OY+q+Lsge3bVACuSa9r19Js+lNuTtEhehWkpe1iECelHmzmhzDsQTDnApIcnWRz3oFR68UX1ag8jfk/SKuopTriICAnpR5s5ocw7EEw5wKSHJ1kc96BUevFF9WoPI35P0irqKGAClRVRUAACAAQAAgAAAAIABAAAAAAAAACICAybuTs5j6r4uyB7dtUAK5Jr2vX0mz6U25O0SF6FaSl7WGAmqQRNUAACAAQAAgAAAAIABAAAAAAAAACICA7cr8fTHOPtE+t0zM3iWJvpfPvsNaVyQ0Sar6nIe9tQXGNm763pUAACAAQAAgAAAAIABAAAAAAAAAAAA".to_string())
1139-
.unwrap();
1140-
let psbt_utxo = psbt.spend_utxo(0);
1141-
1142-
println!("Psbt utxo: {:?}", psbt_utxo);
1143-
1144-
assert_eq!(
1145-
psbt_utxo,
1146-
r#"{"value":9536,"script_pubkey":"0020432ae79fce8bf43def0e21fde7d2896cfb9d0c773f6e9ea723d1391012d00f56"}"#,
1147-
"Psbt utxo does not match the expected value"
1148-
);
1149-
}
1150-
}

0 commit comments

Comments
 (0)