Skip to content

Commit e3a1a3d

Browse files
committed
wollet: add test merging Update v3 with v4 with last_unused
1 parent 911dd73 commit e3a1a3d

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

lwk_wollet/src/update.rs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,6 +1201,50 @@ mod test {
12011201
assert_eq!(update.last_unused.internal, 8);
12021202
}
12031203

1204+
#[test]
1205+
fn test_merge_v3_then_v4_preserves_following_last_unused_on_restore() {
1206+
let desc: WolletDescriptor = lwk_test_util::wollet_descriptor_string().parse().unwrap();
1207+
let network = Network::default_regtest();
1208+
let wollet_status = WolletBuilder::new(network, desc.clone()).build().unwrap().status();
1209+
let mut update = Update {
1210+
version: 3,
1211+
wollet_status,
1212+
new_txs: DownloadTxResult::default(),
1213+
txid_height_new: vec![],
1214+
txid_height_delete: vec![],
1215+
timestamps: vec![],
1216+
scripts_with_blinding_pubkey: vec![],
1217+
tip: super::default_blockheader(),
1218+
unspent: vec![],
1219+
last_unused: LastUnused::default(),
1220+
};
1221+
1222+
let following = Update {
1223+
version: 4,
1224+
wollet_status: wollet_status + 1,
1225+
new_txs: DownloadTxResult::default(),
1226+
txid_height_new: vec![],
1227+
txid_height_delete: vec![],
1228+
timestamps: vec![],
1229+
scripts_with_blinding_pubkey: vec![],
1230+
tip: super::default_blockheader(),
1231+
unspent: vec![],
1232+
last_unused: LastUnused {
1233+
external: 7,
1234+
internal: 11,
1235+
},
1236+
};
1237+
1238+
update.merge(following);
1239+
assert_eq!(update.version, 4);
1240+
1241+
let merged = Update::deserialize(&update.serialize().unwrap()).unwrap();
1242+
let mut wollet = WolletBuilder::new(network, desc).build().unwrap();
1243+
wollet.apply_update(merged).unwrap();
1244+
1245+
assert_eq!(wollet.address(None).unwrap().index(), 7);
1246+
}
1247+
12041248
#[test]
12051249
fn test_apply_v4_update_fetch_max_semantics() {
12061250
let desc: WolletDescriptor = lwk_test_util::wollet_descriptor_string().parse().unwrap();

0 commit comments

Comments
 (0)