diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2021-05-10 06:59:53 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2021-05-10 06:59:53 -0700 |
commit | 326d267efb40ae2f8c750fede3343f68e732e1d3 (patch) | |
tree | 27e606c073c069ee9bd816988068d9b445b1d54c | |
parent | 7e98059bb196082fc649daee698ddddda025499a (diff) | |
download | txr-326d267efb40ae2f8c750fede3343f68e732e1d3.tar.gz txr-326d267efb40ae2f8c750fede3343f68e732e1d3.tar.bz2 txr-326d267efb40ae2f8c750fede3343f68e732e1d3.zip |
diff/isec: reset hash/tree iter instead making new.
* lib.c (seq_iter_rewind): Use hash_reset and tree_reset
to rewind the existing iterator rather than allocating a new
one.
* tests/010/hash.tl: New file, covering uni, diff and isec for
hash tables.
* tests/010/tree.tl: New tests.
-rw-r--r-- | lib.c | 4 | ||||
-rw-r--r-- | tests/010/hash.tl | 6 | ||||
-rw-r--r-- | tests/010/tree.tl | 5 |
3 files changed, 13 insertions, 2 deletions
@@ -740,10 +740,10 @@ static void seq_iter_rewind(seq_iter_t *it, val self) it->ui.index = 0; break; case SEQ_HASHLIKE: - it->ui.iter = hash_begin(it->inf.obj); + it->ui.iter = hash_reset(it->ui.iter, it->inf.obj); break; case SEQ_TREELIKE: - it->ui.iter = tree_begin(it->inf.obj); + it->ui.iter = tree_reset(it->ui.iter, it->inf.obj); break; default: break; diff --git a/tests/010/hash.tl b/tests/010/hash.tl new file mode 100644 index 00000000..b8c386e2 --- /dev/null +++ b/tests/010/hash.tl @@ -0,0 +1,6 @@ +(load "../common") + +(mtest + (uni #H(() ("a") ("b")) #H(() ("b") ("c"))) (("a") ("b") ("c")) + (diff #H(() ("a") ("b")) #H(() ("b") ("c"))) (("a")) + (isec #H(() ("a") ("b")) #H(() ("b") ("c"))) (("b"))) diff --git a/tests/010/tree.tl b/tests/010/tree.tl index 86a21167..c2fe5382 100644 --- a/tests/010/tree.tl +++ b/tests/010/tree.tl @@ -127,3 +127,8 @@ tr #T((identity < =) 1 2 3) (copy-search-tree tr) #T((identity < =) 1 2 3) (make-similar-tree tr) #T((identity < =)))) + +(mtest + (uni #T(() "a" "b") #T(() "b" "c")) ("a" "b" "c") + (diff #T(() "a" "b") #T(() "b" "c")) ("a") + (isec #T(() "a" "b") #T(() "b" "c")) ("b")) |