|
27 | 27 | (swap! db assoc :version 4) |
28 | 28 |
|
29 | 29 | ;; Current state should be version 4 |
30 | | - (is (= {:version 4} @db)) |
| 30 | + (is (= {:version 4} (tu/materialize @db))) |
31 | 31 |
|
32 | 32 | ;; Access historical versions (0-indexed) |
33 | | - (is (= {:version 1} (xdb/deref-at db 0))) |
34 | | - (is (= {:version 2} (xdb/deref-at db 1))) |
35 | | - (is (= {:version 3} (xdb/deref-at db 2))) |
36 | | - (is (= {:version 4} (xdb/deref-at db 3))) |
| 33 | + (is (= {:version 1} (tu/materialize (xdb/deref-at db 0)))) |
| 34 | + (is (= {:version 2} (tu/materialize (xdb/deref-at db 1)))) |
| 35 | + (is (= {:version 3} (tu/materialize (xdb/deref-at db 2)))) |
| 36 | + (is (= {:version 4} (tu/materialize (xdb/deref-at db 3)))) |
37 | 37 |
|
38 | 38 | ;; Using -1 should return the latest version |
39 | | - (is (= {:version 4} (xdb/deref-at db -1)))))) |
| 39 | + (is (= {:version 4} (tu/materialize (xdb/deref-at db -1))))))) |
40 | 40 |
|
41 | 41 | (deftest deref-at-complex-data-test |
42 | 42 | (testing "deref-at works with complex nested data" |
|
47 | 47 | (swap! db assoc :metadata {:count 2}) |
48 | 48 |
|
49 | 49 | ;; Check historical versions |
50 | | - (is (= {:users []} (xdb/deref-at db 0))) |
| 50 | + (is (= {:users []} (tu/materialize (xdb/deref-at db 0)))) |
51 | 51 | (is (= {:users [{:name "Alice"}]} (tu/materialize (xdb/deref-at db 1)))) |
52 | 52 | (is (= {:users [{:name "Alice"} {:name "Bob"}]} |
53 | 53 | (tu/materialize (xdb/deref-at db 2)))) |
|
61 | 61 | (swap! db conj 2) |
62 | 62 | (swap! db conj 3) |
63 | 63 |
|
64 | | - (is (= [1] (xdb/deref-at db 0))) |
65 | | - (is (= [1 2] (xdb/deref-at db 1))) |
66 | | - (is (= [1 2 3] (xdb/deref-at db 2)))))) |
| 64 | + (is (= [1] (tu/materialize (xdb/deref-at db 0)))) |
| 65 | + (is (= [1 2] (tu/materialize (xdb/deref-at db 1)))) |
| 66 | + (is (= [1 2 3] (tu/materialize (xdb/deref-at db 2))))))) |
67 | 67 |
|
68 | 68 | (deftest history-index-test |
69 | 69 | (testing "history-index returns the current transaction count" |
|
407 | 407 | (is (nil? (get (xdb/deref-at db 2) :value))) |
408 | 408 | (is (= 2 (get (xdb/deref-at db 3) :value)))))) |
409 | 409 |
|
410 | | -(deftest reset-preserves-slot-efficiency-test |
411 | | - (testing "reset! with ISlot values uses slot directly" |
| 410 | +(deftest reset-preserves-data-integrity-test |
| 411 | + (testing "reset! with ISlot values from another database preserves data integrity" |
412 | 412 | (with-open [db1 (xdb/xit-db :memory) |
413 | 413 | db2 (xdb/xit-db :memory)] |
414 | 414 | ;; Create large nested data |
415 | 415 | (reset! db1 {:data (vec (range 100)) |
416 | 416 | :nested {:more (vec (range 50))}}) |
417 | 417 |
|
418 | | - ;; Reset db2 with the value (should use slot efficiently) |
| 418 | + ;; Reset db2 with the value (materializes for cross-database safety) |
419 | 419 | (reset! db2 @db1) |
420 | 420 |
|
421 | 421 | ;; Verify data integrity |
|
0 commit comments