MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / test_reinsert_change

Function test_reinsert_change

atomic-core/src/pristine/txn/write/tests.rs:396–437  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

394
395 #[test]
396 fn test_reinsert_change() {
397 let dir = tempdir().unwrap();
398 let db_path = dir.path().join("pristine");
399 let pristine = Pristine::open(&db_path).unwrap();
400
401 let mut txn = pristine.write_txn().unwrap();
402
403 // Create a view with 2 changes
404 let mut view = txn.open_or_create_view("test").unwrap();
405
406 let hash1 = Hash::of(b"change 1");
407 let hash2 = Hash::of(b"change 2");
408 let hash3 = Hash::of(b"change 3");
409
410 let id1 = txn.register_change(&hash1).unwrap();
411 let id2 = txn.register_change(&hash2).unwrap();
412 let id3 = txn.register_change(&hash3).unwrap();
413
414 txn.put_change(&mut view, id1, &hash1).unwrap();
415 txn.put_change(&mut view, id2, &hash2).unwrap();
416 txn.update_view(&view).unwrap();
417
418 assert_eq!(view.change_count, 2);
419
420 // Insert change 3 at position 1 (between change 1 and 2)
421 txn.reinsert_change(&mut view, id3, &hash3, 1).unwrap();
422
423 // View should now have 3 changes
424 assert_eq!(view.change_count, 3);
425
426 // Verify order: 1, 3, 2
427 assert_eq!(txn.get_change_at_seq(&view, 0).unwrap(), Some(id1));
428 assert_eq!(txn.get_change_at_seq(&view, 1).unwrap(), Some(id3));
429 assert_eq!(txn.get_change_at_seq(&view, 2).unwrap(), Some(id2));
430
431 // Merkle state should be recomputed
432 let expected_state = Merkle::ZERO.next(&hash1).next(&hash3).next(&hash2);
433 assert_eq!(view.state, expected_state);
434
435 txn.update_view(&view).unwrap();
436 txn.commit().unwrap();
437 }
438
439 #[test]
440 fn test_reinsert_change_at_end() {

Callers

nothing calls this directly

Calls 10

write_txnMethod · 0.80
open_or_create_viewMethod · 0.80
register_changeMethod · 0.80
put_changeMethod · 0.80
update_viewMethod · 0.80
commitMethod · 0.80
unwrapMethod · 0.45
pathMethod · 0.45
reinsert_changeMethod · 0.45
nextMethod · 0.45

Tested by

no test coverage detected