@@ -1205,6 +1205,30 @@ mod tests {
1205
1205
assert ! ( !policy. for_each_key( |k| k. starts_with( "key" ) ) ) ;
1206
1206
}
1207
1207
1208
+ #[ test]
1209
+ fn tranaslate_pk ( ) {
1210
+ pub struct TestTranslator ;
1211
+ impl Translator < String , String , ( ) > for TestTranslator {
1212
+ fn pk ( & mut self , pk : & String ) -> Result < String , ( ) > {
1213
+ let new = format ! ( "NEW-{}" , pk) ;
1214
+ Ok ( new. to_string ( ) )
1215
+ }
1216
+ fn sha256 ( & mut self , hash : & String ) -> Result < String , ( ) > { Ok ( hash. to_string ( ) ) }
1217
+ fn hash256 ( & mut self , hash : & String ) -> Result < String , ( ) > { Ok ( hash. to_string ( ) ) }
1218
+ fn ripemd160 ( & mut self , hash : & String ) -> Result < String , ( ) > { Ok ( hash. to_string ( ) ) }
1219
+ fn hash160 ( & mut self , hash : & String ) -> Result < String , ( ) > { Ok ( hash. to_string ( ) ) }
1220
+ }
1221
+ let policy = Policy :: < String > :: from_str ( "or(and(pk(A),pk(B)),pk(C))" ) . unwrap ( ) ;
1222
+ let mut t = TestTranslator ;
1223
+
1224
+ let want = Policy :: < String > :: from_str ( "or(and(pk(NEW-A),pk(NEW-B)),pk(NEW-C))" ) . unwrap ( ) ;
1225
+ let got = policy
1226
+ . translate_pk ( & mut t)
1227
+ . expect ( "failed to translate keys" ) ;
1228
+
1229
+ assert_eq ! ( got, want) ;
1230
+ }
1231
+
1208
1232
#[ test]
1209
1233
fn translate_unsatisfiable_pk ( ) {
1210
1234
let policy = Policy :: < String > :: from_str ( "or(and(pk(A),pk(B)),pk(C))" ) . unwrap ( ) ;
0 commit comments