1 #include <array>
2 #include <string>
3 #include <gtest/gtest.h>
4 #include "data_types.hpp"
5 
6 using namespace std::string_literals;
7 using namespace phosphor::dbus::monitoring;
8 
9 using Index = std::map<std::tuple<size_t, size_t, size_t>, size_t>;
10 
11 #include "propertywatchgentest.hpp"
12 
13 auto expectedStorageCount = 16;
14 
15 const std::array<Index, 4> expectedIndicies =
16 {
17     {
18         {
19             {Index::key_type{0, 0, 0}, 0},
20             {Index::key_type{0, 1, 0}, 1},
21             {Index::key_type{1, 0, 0}, 2},
22             {Index::key_type{1, 1, 0}, 3},
23             {Index::key_type{2, 0, 0}, 4},
24             {Index::key_type{2, 1, 0}, 5},
25             {Index::key_type{3, 0, 0}, 6},
26             {Index::key_type{3, 1, 0}, 7},
27         },
28         {
29             {Index::key_type{2, 2, 1}, 8},
30             {Index::key_type{2, 2, 2}, 9},
31             {Index::key_type{3, 2, 1}, 10},
32             {Index::key_type{3, 2, 2}, 11},
33             {Index::key_type{4, 2, 1}, 12},
34             {Index::key_type{4, 2, 2}, 13},
35             {Index::key_type{5, 2, 1}, 14},
36             {Index::key_type{5, 2, 2}, 15},
37         },
38         {
39             {Index::key_type{3, 0, 0}, 6},
40         },
41         {
42             {Index::key_type{3, 2, 2}, 11},
43             {Index::key_type{5, 2, 2}, 15},
44         },
45     }
46 };
47 
48 const std::array<std::tuple<std::string, size_t>, 4> expectedWatches =
49 {
50     {
51         std::tuple<std::string, size_t>{"std::string"s, 0},
52         std::tuple<std::string, size_t>{"uint32_t"s, 1},
53         std::tuple<std::string, size_t>{"int32_t"s, 2},
54         std::tuple<std::string, size_t>{"std::string"s, 3},
55     }
56 };
57 
58 TEST(PropertyWatchGenTest, storageCount)
59 {
60     ASSERT_EQ(expectedStorageCount, storageCount);
61 }
62 
63 TEST(PropertyWatchGenTest, IndiciesSameSize)
64 {
65     ASSERT_EQ(sizeof(expectedIndicies), sizeof(indicies));
66 }
67 
68 TEST(PropertyWatchGenTest, WatchesSameSize)
69 {
70     ASSERT_EQ(sizeof(expectedWatches), sizeof(watches));
71 }
72 
73 TEST(PropertyWatchGenTest, WatchesSameContent)
74 {
75     size_t i;
76     for (i = 0; i < expectedWatches.size(); ++i)
77     {
78         ASSERT_EQ(watches[i],
79                   expectedWatches[i]);
80     }
81 }
82 
83 TEST(PropertyWatchGenTest, IndiciesSameContent)
84 {
85     size_t i;
86     for (i = 0; i < expectedIndicies.size(); ++i)
87     {
88         ASSERT_EQ(indicies[i],
89                   expectedIndicies[i]);
90     }
91 }
92