xref: /openbmc/libpldm/tests/responder.cpp (revision f37edd72)
1 // NOLINTNEXTLINE(bugprone-suspicious-include)
2 #include "responder.c"
3 
4 #include <gtest/gtest.h>
5 
6 TEST(Responder, track_untrack_one)
7 {
8     struct pldm_responder_cookie jar{};
9     struct pldm_responder_cookie cookie = {
10         .tid = 1,
11         .instance_id = 1,
12         .type = 0,
13         .command = 0x01, /* SetTID */
14         .next = nullptr,
15     };
16 
17     ASSERT_EQ(pldm_responder_cookie_track(&jar, &cookie), 0);
18     ASSERT_NE(jar.next, nullptr);
19     ASSERT_EQ(pldm_responder_cookie_untrack(&jar, 1, 1, 0, 0x01), &cookie);
20     ASSERT_EQ(jar.next, nullptr);
21 }
22 
23 TEST(Responder, untrack_none)
24 {
25     struct pldm_responder_cookie jar{};
26 
27     ASSERT_EQ(jar.next, nullptr);
28     ASSERT_EQ(pldm_responder_cookie_untrack(&jar, 1, 1, 0, 0x01), nullptr);
29     ASSERT_EQ(jar.next, nullptr);
30 }
31 
32 TEST(Responder, track_one_untrack_bad)
33 {
34     struct pldm_responder_cookie jar{};
35     struct pldm_responder_cookie cookie = {
36         .tid = 1,
37         .instance_id = 1,
38         .type = 0,
39         .command = 0x01, /* SetTID */
40         .next = nullptr,
41     };
42 
43     ASSERT_EQ(pldm_responder_cookie_track(&jar, &cookie), 0);
44     ASSERT_NE(jar.next, nullptr);
45     ASSERT_EQ(pldm_responder_cookie_untrack(&jar, 2, 1, 0, 0x01), nullptr);
46     ASSERT_EQ(pldm_responder_cookie_untrack(&jar, 1, 2, 0, 0x01), nullptr);
47     ASSERT_EQ(pldm_responder_cookie_untrack(&jar, 1, 1, 1, 0x01), nullptr);
48     ASSERT_EQ(pldm_responder_cookie_untrack(&jar, 1, 1, 0, 0x02), nullptr);
49     ASSERT_NE(jar.next, nullptr);
50     ASSERT_EQ(pldm_responder_cookie_untrack(&jar, 1, 1, 0, 0x01), &cookie);
51     ASSERT_EQ(jar.next, nullptr);
52 }
53 
54 TEST(Responder, track_untrack_two)
55 {
56     struct pldm_responder_cookie jar{};
57     struct pldm_responder_cookie cookies[] = {
58         {
59             .tid = 1,
60             .instance_id = 1,
61             .type = 0,
62             .command = 0x01, /* SetTID */
63             .next = nullptr,
64         },
65         {
66             .tid = 2,
67             .instance_id = 1,
68             .type = 0,
69             .command = 0x01, /* SetTID */
70             .next = nullptr,
71         },
72     };
73 
74     ASSERT_EQ(pldm_responder_cookie_track(&jar, &cookies[0]), 0);
75     ASSERT_EQ(pldm_responder_cookie_track(&jar, &cookies[1]), 0);
76     ASSERT_NE(jar.next, nullptr);
77     ASSERT_EQ(pldm_responder_cookie_untrack(&jar, 2, 1, 0, 0x01), &cookies[1]);
78     ASSERT_EQ(pldm_responder_cookie_untrack(&jar, 1, 1, 0, 0x01), &cookies[0]);
79     ASSERT_EQ(jar.next, nullptr);
80 }
81