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