1 #include "lpcsnoop/snoop.hpp"
2 
3 #include <sdbusplus/bus.hpp>
4 #include <sdbusplus/test/sdbus_mock.hpp>
5 
6 #include <gmock/gmock.h>
7 #include <gtest/gtest.h>
8 
9 using ::testing::_;
10 using ::testing::IsNull;
11 using ::testing::NiceMock;
12 using ::testing::Return;
13 using ::testing::StrEq;
14 
15 namespace
16 {
17 
18 // Fixture for testing class PostReporter
19 class PostReporterTest : public ::testing::Test
20 {
21   protected:
22     PostReporterTest() : bus_mock(), bus(sdbusplus::get_mocked_new(&bus_mock))
23     {
24     }
25 
26     ~PostReporterTest()
27     {
28     }
29 
30     NiceMock<sdbusplus::SdBusMock> bus_mock;
31     sdbusplus::bus::bus bus;
32 };
33 
34 TEST_F(PostReporterTest, EmitsObjectsOnExpectedDbusPath)
35 {
36 
37     EXPECT_CALL(bus_mock,
38                 sd_bus_emit_object_added(IsNull(), StrEq(SNOOP_OBJECTPATH)))
39         .WillOnce(Return(0));
40 
41     PostReporter testReporter(bus, SNOOP_OBJECTPATH, true);
42     testReporter.emit_object_added();
43 }
44 
45 TEST_F(PostReporterTest, AddsObjectWithExpectedName)
46 {
47     EXPECT_CALL(bus_mock,
48                 sd_bus_add_object_vtable(IsNull(), _, StrEq(SNOOP_OBJECTPATH),
49                                          StrEq(SNOOP_BUSNAME), _, _))
50         .WillOnce(Return(0));
51 
52     PostReporter testReporter(bus, SNOOP_OBJECTPATH, true);
53 }
54 
55 TEST_F(PostReporterTest, ValueReadsDefaultToZero)
56 {
57     PostReporter testReporter(bus, SNOOP_OBJECTPATH, true);
58     EXPECT_EQ(0, testReporter.value());
59 }
60 
61 TEST_F(PostReporterTest, SetValueToPositiveValueWorks)
62 {
63     PostReporter testReporter(bus, SNOOP_OBJECTPATH, true);
64     testReporter.value(65537);
65     EXPECT_EQ(65537, testReporter.value());
66 }
67 
68 TEST_F(PostReporterTest, SetValueMultipleTimesWorks)
69 {
70     PostReporter testReporter(bus, SNOOP_OBJECTPATH, true);
71     testReporter.value(123);
72     EXPECT_EQ(123, testReporter.value());
73     testReporter.value(456);
74     EXPECT_EQ(456, testReporter.value());
75     testReporter.value(0);
76     EXPECT_EQ(0, testReporter.value());
77     testReporter.value(456);
78     EXPECT_EQ(456, testReporter.value());
79     testReporter.value(456);
80     EXPECT_EQ(456, testReporter.value());
81 }
82 
83 } // namespace
84