Line data Source code
1 : /**
2 : * @file
3 : *
4 : * @brief Tests for the comparison helper
5 : *
6 : * @copyright BSD License (see LICENSE.md or https://www.libelektra.org)
7 : *
8 : */
9 :
10 : #include <gtest/gtest.h>
11 : #include <helper/comparison.hpp>
12 :
13 : using namespace kdb;
14 : using namespace kdb::tools::helper;
15 :
16 20 : TEST (KeyDataEqualTest, IsTrueForSameValuedKeys)
17 : {
18 4 : Key k1 = Key ("user/test/config/key1", KEY_VALUE, "keyvalue", KEY_END);
19 4 : Key k2 = Key ("user/test/config/key2", KEY_VALUE, "keyvalue", KEY_END);
20 :
21 6 : EXPECT_TRUE (keyDataEqual (k1, k2));
22 2 : }
23 :
24 20 : TEST (KeyDataEqualTest, IsFalseForDifferentValuedKeys)
25 : {
26 4 : Key k1 = Key ("user/test/config/key1", KEY_VALUE, "keyvalue1", KEY_END);
27 4 : Key k2 = Key ("user/test/config/key2", KEY_VALUE, "keyvalue2", KEY_END);
28 :
29 6 : EXPECT_FALSE (keyDataEqual (k1, k2));
30 2 : }
31 :
32 20 : TEST (KeyDataEqualTest, IsFalseForDifferentTypedKeys)
33 : {
34 4 : Key k1 = Key ("user/test/config/key1", KEY_VALUE, "keyvalue1", KEY_END);
35 4 : Key k2 = Key ("user/test/config/key2", KEY_VALUE, "keyvalue1", KEY_BINARY, KEY_END);
36 :
37 6 : EXPECT_FALSE (keyDataEqual (k1, k2));
38 2 : }
39 :
40 20 : TEST (KeyDataEqualTest, HandlesNullKeys)
41 : {
42 4 : Key k1 = Key ("user/test/config/key1", KEY_VALUE, "keyvalue1", KEY_END);
43 16 : Key nk = KeySet ().lookup ("invalid key");
44 :
45 6 : EXPECT_FALSE (keyDataEqual (k1, nk));
46 6 : EXPECT_FALSE (keyDataEqual (nk, k1));
47 6 : EXPECT_FALSE (keyDataEqual (nk, nk));
48 2 : }
49 :
50 20 : TEST (KeyMetaEqual, IsTrueForEmptyMeta)
51 : {
52 4 : Key k1 = Key ("user/test/config/key1", KEY_VALUE, "keyvalue1", KEY_END);
53 4 : Key k2 = Key ("user/test/config/key2", KEY_VALUE, "keyvalue2", KEY_END);
54 :
55 6 : EXPECT_TRUE (keyMetaEqual (k1, k2));
56 2 : }
57 :
58 20 : TEST (KeyMetaEqual, IsTrueForEqualMeta)
59 : {
60 4 : Key k1 = Key ("user/test/config/key1", KEY_VALUE, "keyvalue1", KEY_META, "testmeta", "testmetavalue1", KEY_END);
61 4 : Key k2 = Key ("user/test/config/key2", KEY_VALUE, "keyvalue1", KEY_META, "testmeta", "testmetavalue1", KEY_END);
62 :
63 6 : EXPECT_TRUE (keyMetaEqual (k1, k2));
64 2 : }
65 :
66 20 : TEST (KeyMetaEqual, IsFalseForDifferentMeta)
67 : {
68 4 : Key k1 = Key ("user/test/config/key1", KEY_VALUE, "keyvalue1", KEY_META, "testmeta", "testmetavalue1", KEY_END);
69 4 : Key k2 = Key ("user/test/config/key2", KEY_VALUE, "keyvalue1", KEY_META, "testmeta", "testmetavalue2", KEY_END);
70 :
71 6 : EXPECT_FALSE (keyMetaEqual (k1, k2));
72 2 : }
73 :
74 20 : TEST (KeyMetaEqual, IsFalseForMissingMeta)
75 : {
76 4 : Key k1 = Key ("user/test/config/key1", KEY_VALUE, "keyvalue1", KEY_META, "testmeta", "testmetavalue1", KEY_END);
77 4 : Key k2 = Key ("user/test/config/key2", KEY_VALUE, "keyvalue1", KEY_END);
78 :
79 6 : EXPECT_FALSE (keyMetaEqual (k1, k2));
80 6 : EXPECT_FALSE (keyMetaEqual (k2, k1));
81 2 : }
82 :
83 20 : TEST (KeyMetaEqual, HandlesNullKeys)
84 : {
85 4 : Key k1 = Key ("user/test/config/key1", KEY_VALUE, "keyvalue1", KEY_END);
86 16 : Key nk = KeySet ().lookup ("invalid key");
87 :
88 6 : EXPECT_FALSE (keyMetaEqual (k1, nk));
89 6 : EXPECT_FALSE (keyMetaEqual (nk, k1));
90 6 : EXPECT_FALSE (keyMetaEqual (nk, nk));
91 8 : }
|