|
@@ -1,217 +0,0 @@
|
|
-#include "test.h"
|
|
|
|
-
|
|
|
|
-int test_keyset_stack()
|
|
|
|
-{
|
|
|
|
- LSUP_Keyset ks_s;
|
|
|
|
- LSUP_Keyset *ks = &ks_s;
|
|
|
|
-
|
|
|
|
- LSUP_keyset_init(ks, 10, .5);
|
|
|
|
-
|
|
|
|
- EXPECT_INT_EQ(ks->capacity, 10);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_done(ks);
|
|
|
|
-
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-int test_keyset_heap()
|
|
|
|
-{
|
|
|
|
- LSUP_Keyset *ks = LSUP_keyset_new(10, .5);
|
|
|
|
-
|
|
|
|
- EXPECT_INT_EQ(ks->capacity, 10);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_free(ks);
|
|
|
|
-
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-int test_keyset_add_remove()
|
|
|
|
-{
|
|
|
|
- LSUP_Keyset *ks = LSUP_keyset_new(10, .5);
|
|
|
|
-
|
|
|
|
- LSUP_TripleKey k1 = {1,1,1};
|
|
|
|
- LSUP_TripleKey k2 = {1,1,2};
|
|
|
|
- LSUP_TripleKey k3 = {1,1,3};
|
|
|
|
- LSUP_TripleKey k4 = {1,2,1};
|
|
|
|
- LSUP_TripleKey k5 = {1,2,1}; // Duplicate
|
|
|
|
-
|
|
|
|
- LSUP_keyset_add(ks, &k1, LSUP_KS_CHECK_DUP);
|
|
|
|
- LSUP_keyset_add(ks, &k2, LSUP_KS_CHECK_DUP);
|
|
|
|
- LSUP_keyset_add(ks, &k3, LSUP_KS_CHECK_DUP);
|
|
|
|
- LSUP_keyset_add(ks, &k4, LSUP_KS_CHECK_DUP);
|
|
|
|
- LSUP_keyset_add(ks, &k5, LSUP_KS_CHECK_DUP);
|
|
|
|
-
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(ks), 4);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_tell(ks), 3);
|
|
|
|
-
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_seek(ks, 1), true);
|
|
|
|
- ASSERT(
|
|
|
|
- memcmp(LSUP_keyset_peek(ks), &k2, sizeof(LSUP_TripleKey)) == 0,
|
|
|
|
- "Key not corresponding to index!");
|
|
|
|
-
|
|
|
|
- LSUP_TripleKey k6 = {1,1,2};
|
|
|
|
- LSUP_keyset_remove(ks, &k6);
|
|
|
|
-
|
|
|
|
- ASSERT(!LSUP_keyset_contains(ks, &k6), "Triple not removed!");
|
|
|
|
- ASSERT(!LSUP_keyset_contains(ks, &k2), "Triple not removed!");
|
|
|
|
-
|
|
|
|
- EXPECT_INT_EQ(ks->free_i, 4);
|
|
|
|
-
|
|
|
|
- LSUP_Keyset *ks2 = malloc(sizeof(LSUP_Keyset));
|
|
|
|
- LSUP_keyset_sparse_copy(ks, ks2);
|
|
|
|
-
|
|
|
|
- EXPECT_INT_EQ(ks2->free_i, 3);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_free(ks);
|
|
|
|
- LSUP_keyset_free(ks2);
|
|
|
|
-
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-int test_keyset_lookup()
|
|
|
|
-{
|
|
|
|
- LSUP_Keyset *ks = LSUP_keyset_new(10, .5);
|
|
|
|
- LSUP_Keyset res_s;
|
|
|
|
- LSUP_Keyset *res = &res_s;
|
|
|
|
-
|
|
|
|
- LSUP_TripleKey k1 = {1,1,1};
|
|
|
|
- LSUP_TripleKey k2 = {1,1,2};
|
|
|
|
- LSUP_TripleKey k3 = {1,2,1};
|
|
|
|
- LSUP_TripleKey k4 = {2,1,3};
|
|
|
|
-
|
|
|
|
- LSUP_keyset_add(ks, &k1, 0);
|
|
|
|
- LSUP_keyset_add(ks, &k2, 0);
|
|
|
|
- LSUP_keyset_add(ks, &k3, 0);
|
|
|
|
- LSUP_keyset_add(ks, &k4, 0);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_lookup(ks, res, 1, 1, 1);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 1);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_lookup(ks, res, 1, 1, 0);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 2);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_lookup(ks, res, 1, 2, 0);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 1);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_lookup(ks, res, 1, 0, 0);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 3);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_lookup(ks, res, 0, 1, 0);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 3);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_lookup(ks, res, 0, 0, 0);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 4);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_free(ks);
|
|
|
|
-
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-int test_keyset_bool_ops()
|
|
|
|
-{
|
|
|
|
- LSUP_Keyset res_s;
|
|
|
|
- LSUP_Keyset *res = &res_s;
|
|
|
|
-
|
|
|
|
- LSUP_TripleKey k1 = {1,1,1};
|
|
|
|
- LSUP_TripleKey k2 = {1,1,2};
|
|
|
|
- LSUP_TripleKey k3 = {1,2,1};
|
|
|
|
- LSUP_TripleKey k4 = {2,1,3};
|
|
|
|
- LSUP_TripleKey k5 = {3,1,1};
|
|
|
|
-
|
|
|
|
- LSUP_TripleKey k6 = {1,1,1};
|
|
|
|
- LSUP_TripleKey k7 = {1,1,2};
|
|
|
|
- LSUP_TripleKey k8 = {3,2,1};
|
|
|
|
- LSUP_TripleKey k9 = {4,1,3};
|
|
|
|
- LSUP_TripleKey k10 = {5,1,3};
|
|
|
|
-
|
|
|
|
- LSUP_Keyset *ks1 = LSUP_keyset_new(5, .5);
|
|
|
|
- LSUP_Keyset *ks2 = LSUP_keyset_new(5, .5);
|
|
|
|
-
|
|
|
|
- // Both sets empty.
|
|
|
|
- LSUP_keyset_join(ks1, ks2, res);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 0);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_subtract(ks1, ks2, res);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 0);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_intersect(ks1, ks2, res);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 0);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_xor(ks1, ks2, res);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 0);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_add(ks1, &k1, 0);
|
|
|
|
- LSUP_keyset_add(ks1, &k2, 0);
|
|
|
|
- LSUP_keyset_add(ks1, &k3, 0);
|
|
|
|
- LSUP_keyset_add(ks1, &k4, 0);
|
|
|
|
- LSUP_keyset_add(ks1, &k5, 0);
|
|
|
|
-
|
|
|
|
- // Set 2 empty.
|
|
|
|
- LSUP_keyset_join(ks1, ks2, res);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 5);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_subtract(ks1, ks2, res);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 5);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_intersect(ks1, ks2, res);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 0);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_xor(ks1, ks2, res);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 5);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_add(ks2, &k6, 0);
|
|
|
|
- LSUP_keyset_add(ks2, &k7, 0);
|
|
|
|
- LSUP_keyset_add(ks2, &k8, 0);
|
|
|
|
- LSUP_keyset_add(ks2, &k9, 0);
|
|
|
|
- LSUP_keyset_add(ks2, &k10, 0);
|
|
|
|
-
|
|
|
|
- // Both sets populated.
|
|
|
|
- LSUP_keyset_join(ks1, ks2, res);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 8);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_subtract(ks1, ks2, res);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 3);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_intersect(ks1, ks2, res);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 2);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_xor(ks1, ks2, res);
|
|
|
|
- EXPECT_INT_EQ(LSUP_keyset_size(res), 6);
|
|
|
|
- LSUP_keyset_done(res);
|
|
|
|
-
|
|
|
|
- LSUP_keyset_free(ks1);
|
|
|
|
- LSUP_keyset_free(ks2);
|
|
|
|
-
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int keyset_tests()
|
|
|
|
-{
|
|
|
|
- RUN(test_keyset_stack);
|
|
|
|
- RUN(test_keyset_heap);
|
|
|
|
- RUN(test_keyset_add_remove);
|
|
|
|
- RUN(test_keyset_lookup);
|
|
|
|
- RUN(test_keyset_bool_ops);
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|