@@ -650,6 +650,7 @@ serde_string_impl_pk!(Descriptor, "a script descriptor");
650
650
#[ cfg( test) ]
651
651
mod tests {
652
652
use super :: checksum:: desc_checksum;
653
+ use super :: tr:: Tr ;
653
654
use super :: DescriptorTrait ;
654
655
use bitcoin:: blockdata:: opcodes:: all:: { OP_CLTV , OP_CSV } ;
655
656
use bitcoin:: blockdata:: script:: Instruction ;
@@ -1116,6 +1117,44 @@ mod tests {
1116
1117
assert_eq ! ( check, & Ok ( Instruction :: Op ( OP_CSV ) ) )
1117
1118
}
1118
1119
1120
+ #[ test]
1121
+ fn tr_roundtrip_key ( ) {
1122
+ let script = Tr :: < DummyKey > :: from_str ( "tr()" ) . unwrap ( ) . to_string ( ) ;
1123
+ assert_eq ! ( script, format!( "tr()#x4ml3kxd" ) )
1124
+ }
1125
+
1126
+ #[ test]
1127
+ fn tr_roundtrip_script ( ) {
1128
+ let descriptor = Tr :: < DummyKey > :: from_str ( "tr(,{pk(),pk()})" )
1129
+ . unwrap ( )
1130
+ . to_string ( ) ;
1131
+
1132
+ assert_eq ! ( descriptor, "tr(,{pk(),pk()})#7dqr6v8r" )
1133
+ }
1134
+
1135
+ #[ test]
1136
+ fn tr_roundtrip_tree ( ) {
1137
+ let p1 = "020000000000000000000000000000000000000000000000000000000000000001" ;
1138
+ let p2 = "020000000000000000000000000000000000000000000000000000000000000002" ;
1139
+ let p3 = "020000000000000000000000000000000000000000000000000000000000000003" ;
1140
+ let p4 = "020000000000000000000000000000000000000000000000000000000000000004" ;
1141
+ let p5 = "f54a5851e9372b87810a8e60cdd2e7cfd80b6e31" ;
1142
+ let descriptor = Tr :: < PublicKey > :: from_str ( & format ! (
1143
+ "tr({},{{pk({}),{{pk({}),or_d(pk({}),pkh({}))}}}})" ,
1144
+ p1, p2, p3, p4, p5
1145
+ ) )
1146
+ . unwrap ( )
1147
+ . to_string ( ) ;
1148
+
1149
+ assert_eq ! (
1150
+ descriptor,
1151
+ format!(
1152
+ "tr({},{{pk({}),{{pk({}),or_d(pk({}),pkh({}))}}}})#fdhmu4fj" ,
1153
+ p1, p2, p3, p4, p5
1154
+ )
1155
+ )
1156
+ }
1157
+
1119
1158
#[ test]
1120
1159
fn roundtrip_tests ( ) {
1121
1160
let descriptor = Descriptor :: < bitcoin:: PublicKey > :: from_str ( "multi" ) ;
0 commit comments