use md_codec::decode::decode_md1_string;
use md_codec::descriptor_to_template;
const CORPUS: &[(&str, &str, &str)] = &[
("wpkh", "md1yqpqqxqq8xtwhw4xwn4qh", "wpkh(@0/<0;1>/*)"),
(
"sh_wsh_multi",
"md1yppqqxpsscy96gddy0v67f8tp",
"sh(wsh(multi(2,@0/<0;1>/*,@1/<0;1>/*)))",
),
(
"wsh_multi",
"md1yppqqxppsg2vlumagltz27le",
"wsh(multi(2,@0/<0;1>/*,@1/<0;1>/*))",
),
(
"wsh_sortedmulti",
"md1yppqqxppcg2zwgjsnaf20fmv",
"wsh(sortedmulti(2,@0/<0;1>/*,@1/<0;1>/*))",
),
(
"tr_nums_multi_a",
"md1yz80tgggqps8yq3psc6g0fzjxsj620",
"tr(50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,multi_a(2,@0/<0;1>/*,@1/<0;1>/*,@2/<0;1>/*))",
),
(
"tr_nums_sortedmulti_a",
"md1yz80tgggqps8ys3psu9rrkfee0tpv2",
"tr(50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,sortedmulti_a(2,@0/<0;1>/*,@1/<0;1>/*,@2/<0;1>/*))",
),
(
"tr_nonnums_keypath",
"md1yqpqqxqsqgprhfjpjaz6d",
"tr(@0/<0;1>/*)",
),
(
"tr_nonnums_leaf",
"md1yp80tgggqpsyj5zpmragnq8pn7h",
"tr(@0/<0;1>/*,pk(@1/<0;1>/*))",
),
(
"pathological_or_i",
"md1yzfdsssj5qqcyefnfgdsqr6zgqvzzcrfln7t3kzht2u",
"wsh(or_i(and_v(v:pk(@0/<0;1>/*),after(1000000)),multi(2,@1/<0;1>/*,@2/<0;1>/*)))",
),
(
"use_site_override",
"md1yppqqxppsg2qknq2zc2ktzhwekmddzh",
"wsh(multi(2,@0/<0;1>/*,@1/<2;3>/*))",
),
(
"sha256_leaf",
"md1yp80tgggqpsy5e54wsqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgtstwnn9zjd3s7",
"tr(@0/<0;1>/*,and_v(v:pk(@1/<0;1>/*),sha256(0000000000000000000000000000000000000000000000000000000000000001)))",
),
(
"hash160_leaf",
"md1yp80tgggqpsy5e540qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsdjl8890lrfs9z",
"tr(@0/<0;1>/*,and_v(v:pk(@1/<0;1>/*),hash160(0000000000000000000000000000000000000001)))",
),
(
"wrapper_chain_thresh",
"md1yzfdsssj5qqcy6pz9qu2fey3fnf2wqqqqqjqu5afd8p60nnsc",
"wsh(thresh(2,pk(@0/<0;1>/*),s:pk(@1/<0;1>/*),snj:and_v(v:pk(@2/<0;1>/*),older(144))))",
),
];
#[test]
fn renderer_matches_frozen_md_cli_0_11_2_snapshot() {
for (label, md1, expected) in CORPUS {
let d = decode_md1_string(md1)
.unwrap_or_else(|e| panic!("[{label}] decode_md1_string failed: {e}"));
let got = descriptor_to_template(&d)
.unwrap_or_else(|e| panic!("[{label}] descriptor_to_template failed: {e}"));
assert_eq!(
&got, expected,
"[{label}] renderer drifted from the frozen md-cli 0.11.2 snapshot",
);
}
}