Skip to content

Commit 2375fd9

Browse files
committed
Add roundtrip tests
1 parent ba0823f commit 2375fd9

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

src/descriptor/mod.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,7 @@ serde_string_impl_pk!(Descriptor, "a script descriptor");
650650
#[cfg(test)]
651651
mod tests {
652652
use super::checksum::desc_checksum;
653+
use super::tr::Tr;
653654
use super::DescriptorTrait;
654655
use bitcoin::blockdata::opcodes::all::{OP_CLTV, OP_CSV};
655656
use bitcoin::blockdata::script::Instruction;
@@ -1116,6 +1117,44 @@ mod tests {
11161117
assert_eq!(check, &Ok(Instruction::Op(OP_CSV)))
11171118
}
11181119

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+
11191158
#[test]
11201159
fn roundtrip_tests() {
11211160
let descriptor = Descriptor::<bitcoin::PublicKey>::from_str("multi");

0 commit comments

Comments
 (0)