()
| 316 | |
| 317 | #[test] |
| 318 | fn test_del_change() { |
| 319 | let dir = tempdir().unwrap(); |
| 320 | let db_path = dir.path().join("pristine"); |
| 321 | let pristine = Pristine::open(&db_path).unwrap(); |
| 322 | |
| 323 | let mut txn = pristine.write_txn().unwrap(); |
| 324 | |
| 325 | // Create a view with 3 changes |
| 326 | let mut view = txn.open_or_create_view("test").unwrap(); |
| 327 | |
| 328 | let hash1 = Hash::of(b"change 1"); |
| 329 | let hash2 = Hash::of(b"change 2"); |
| 330 | let hash3 = Hash::of(b"change 3"); |
| 331 | |
| 332 | let id1 = txn.register_change(&hash1).unwrap(); |
| 333 | let id2 = txn.register_change(&hash2).unwrap(); |
| 334 | let id3 = txn.register_change(&hash3).unwrap(); |
| 335 | |
| 336 | txn.put_change(&mut view, id1, &hash1).unwrap(); |
| 337 | txn.put_change(&mut view, id2, &hash2).unwrap(); |
| 338 | txn.put_change(&mut view, id3, &hash3).unwrap(); |
| 339 | txn.update_view(&view).unwrap(); |
| 340 | |
| 341 | assert_eq!(view.change_count, 3); |
| 342 | |
| 343 | // Remove the middle change (id2) |
| 344 | let removed_seq = txn.del_change(&mut view, id2, &hash2).unwrap(); |
| 345 | assert_eq!(removed_seq, Some(1)); // Was at sequence 1 |
| 346 | |
| 347 | // View should now have 2 changes |
| 348 | assert_eq!(view.change_count, 2); |
| 349 | |
| 350 | // Change 1 should still be at sequence 0 |
| 351 | let seq0 = txn.get_change_at_seq(&view, 0).unwrap(); |
| 352 | assert_eq!(seq0, Some(id1)); |
| 353 | |
| 354 | // Change 3 should now be at sequence 1 (shifted down) |
| 355 | let seq1 = txn.get_change_at_seq(&view, 1).unwrap(); |
| 356 | assert_eq!(seq1, Some(id3)); |
| 357 | |
| 358 | // Merkle state should be recomputed |
| 359 | let expected_state = Merkle::ZERO.next(&hash1).next(&hash3); |
| 360 | assert_eq!(view.state, expected_state); |
| 361 | |
| 362 | txn.update_view(&view).unwrap(); |
| 363 | txn.commit().unwrap(); |
| 364 | } |
| 365 | |
| 366 | #[test] |
| 367 | fn test_del_change_not_in_view() { |
nothing calls this directly
no test coverage detected