diff options
Diffstat (limited to 'tests/unit/util/table.scm')
-rw-r--r-- | tests/unit/util/table.scm | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/unit/util/table.scm b/tests/unit/util/table.scm new file mode 100644 index 00000000..564dff74 --- /dev/null +++ b/tests/unit/util/table.scm @@ -0,0 +1,48 @@ +(define-module (test table) + :use-module (srfi srfi-64) + :use-module (srfi srfi-88) + :use-module ((hnh util) :select (->)) + :use-module (hnh util table)) + +(test-expect-fail "Equivalent tables are equal") + +(define t (table)) + +(test-assert "Empty tables are empty" (null? (table->list t))) + +(test-equal "Adding elements work" + '((a . 10) (b . 20)) + (-> t + (table-put 'a 10) + (table-put 'b 20) + table->list)) + +(test-assert "Original table is unchanged" + (null? (table->list t))) + +(test-equal "Insertion order doesn't matter, when serializing to lists" + (-> t + (table-put 'a 10) + (table-put 'b 20) + table->list) + (-> t + (table-put 'b 20) + (table-put 'a 10) + table->list)) + +;;; TODO this doesn't work, since the trees don't rebalance +(test-equal "Equivalent tables are equal" + (-> t + (table-put 'a 10) + (table-put 'b 20) + (table-put 'c 30)) + (-> t + (table-put 'c 30) + (table-put 'b 20) + (table-put 'a 10))) + +;;; TODO test table-get +;; (table-get t 'key) +;; (table-put t 'key value) + +'((hnh util table)) |