@@ -625,6 +625,7 @@ serde_string_impl_pk!(Descriptor, "a script descriptor");
625
625
#[ cfg( test) ]
626
626
mod tests {
627
627
use super :: checksum:: desc_checksum;
628
+ use super :: tr:: Tr ;
628
629
use super :: DescriptorTrait ;
629
630
use bitcoin:: blockdata:: opcodes:: all:: { OP_CLTV , OP_CSV } ;
630
631
use bitcoin:: blockdata:: script:: Instruction ;
@@ -1092,6 +1093,44 @@ mod tests {
1092
1093
assert_eq ! ( check, & Ok ( Instruction :: Op ( OP_CSV ) ) )
1093
1094
}
1094
1095
1096
+ #[ test]
1097
+ fn tr_roundtrip_key ( ) {
1098
+ let script = Tr :: < DummyKey > :: from_str ( "tr()" ) . unwrap ( ) . to_string ( ) ;
1099
+ assert_eq ! ( script, format!( "tr()#x4ml3kxd" ) )
1100
+ }
1101
+
1102
+ #[ test]
1103
+ fn tr_roundtrip_script ( ) {
1104
+ let descriptor = Tr :: < DummyKey > :: from_str ( "tr(,{pk(),pk()})" )
1105
+ . unwrap ( )
1106
+ . to_string ( ) ;
1107
+
1108
+ assert_eq ! ( descriptor, "tr(,{pk(),pk()})#7dqr6v8r" )
1109
+ }
1110
+
1111
+ #[ test]
1112
+ fn tr_roundtrip_tree ( ) {
1113
+ let p1 = "020000000000000000000000000000000000000000000000000000000000000001" ;
1114
+ let p2 = "020000000000000000000000000000000000000000000000000000000000000002" ;
1115
+ let p3 = "020000000000000000000000000000000000000000000000000000000000000003" ;
1116
+ let p4 = "020000000000000000000000000000000000000000000000000000000000000004" ;
1117
+ let p5 = "f54a5851e9372b87810a8e60cdd2e7cfd80b6e31" ;
1118
+ let descriptor = Tr :: < PublicKey > :: from_str ( & format ! (
1119
+ "tr({},{{pk({}),{{pk({}),or_d(pk({}),pkh({}))}}}})" ,
1120
+ p1, p2, p3, p4, p5
1121
+ ) )
1122
+ . unwrap ( )
1123
+ . to_string ( ) ;
1124
+
1125
+ assert_eq ! (
1126
+ descriptor,
1127
+ format!(
1128
+ "tr({},{{pk({}),{{pk({}),or_d(pk({}),pkh({}))}}}})#fdhmu4fj" ,
1129
+ p1, p2, p3, p4, p5
1130
+ )
1131
+ )
1132
+ }
1133
+
1095
1134
#[ test]
1096
1135
fn roundtrip_tests ( ) {
1097
1136
let descriptor = Descriptor :: < bitcoin:: PublicKey > :: from_str ( "multi" ) ;
0 commit comments