test_settings.cpp
Go to the documentation of this file.
1 // Bring in my package's API, which is what I'm testing
5 
6 // Bring in gtest
7 #include <gtest/gtest.h>
8 
9 TEST(SettingTest, socketcan_masks)
10 {
11  const can_err_mask_t fatal_errors = ( CAN_ERR_TX_TIMEOUT /* TX timeout (by netdevice driver) */
12  | CAN_ERR_BUSOFF /* bus off */
13  | CAN_ERR_BUSERROR /* bus error (may flood!) */
14  | CAN_ERR_RESTARTED /* controller restarted */
15  );
16  const can_err_mask_t report_errors = ( CAN_ERR_LOSTARB /* lost arbitration / data[0] */
17  | CAN_ERR_CRTL /* controller problems / data[1] */
18  | CAN_ERR_PROT /* protocol violations / data[2..3] */
19  | CAN_ERR_TRX /* transceiver status / data[4] */
20  | CAN_ERR_ACK /* received no ACK on transmission */
21  );
23 
24  // defaults
25  sci.init("None", false, can::NoSettings::create());
26  EXPECT_EQ(sci.getErrorMask(), fatal_errors | report_errors);
27  EXPECT_EQ(sci.getFatalErrorMask(), fatal_errors);
28 
29  // remove report-only flag
30  auto m1 = can::SettingsMap::create();
31  m1->set("error_mask/CAN_ERR_LOSTARB", false);
32  sci.init("None", false, m1);
33  EXPECT_EQ(sci.getErrorMask(), (fatal_errors | report_errors) & (~CAN_ERR_LOSTARB));
34  EXPECT_EQ(sci.getFatalErrorMask(), fatal_errors);
35 
36  // cannot remove fatal flag from report only
37  auto m2 = can::SettingsMap::create();
38  m2->set("error_mask/CAN_ERR_TX_TIMEOUT", false);
39  sci.init("None", false, m2);
40  EXPECT_EQ(sci.getErrorMask(), (fatal_errors | report_errors));
41  EXPECT_EQ(sci.getFatalErrorMask(), fatal_errors);
42 
43  // remove fatal flag
44  auto m3 = can::SettingsMap::create();
45  m3->set("fatal_error_mask/CAN_ERR_TX_TIMEOUT", false);
46  sci.init("None", false, m3);
47  EXPECT_EQ(sci.getErrorMask(), (fatal_errors | report_errors) & (~CAN_ERR_TX_TIMEOUT));
48  EXPECT_EQ(sci.getFatalErrorMask(), fatal_errors & (~CAN_ERR_TX_TIMEOUT));
49 
50  // remove fatal and report flag
51  auto m4 = can::SettingsMap::create();
52  m4->set("fatal_error_mask/CAN_ERR_TX_TIMEOUT", false);
53  m4->set("error_mask/CAN_ERR_LOSTARB", false);
54  sci.init("None", false, m4);
55  EXPECT_EQ(sci.getErrorMask(), (fatal_errors | report_errors) & ~(CAN_ERR_TX_TIMEOUT|CAN_ERR_LOSTARB));
56  EXPECT_EQ(sci.getFatalErrorMask(), fatal_errors & (~CAN_ERR_TX_TIMEOUT));
57 }
58 
59 TEST(SettingTest, xmlrpc)
60 {
61  XmlRpc::XmlRpcValue value;
62  value["param"] = 1;
63  XmlRpc::XmlRpcValue segment;
64  segment["param"] = 2;
65  value["segment"] = segment;
66  XmlRpcSettings settings(value);
67 
68  ASSERT_TRUE(value["segment"].hasMember(std::string("param")));
69 
70  int res;
71  EXPECT_TRUE(settings.get<int>("param", res));
72  EXPECT_EQ(res, 1);
73  EXPECT_EQ(settings.get_optional("param", 0), 1);
74  EXPECT_FALSE(settings.get<int>("param2", res));
75  EXPECT_EQ(settings.get_optional("param2", 0), 0);
76 
77  EXPECT_TRUE(settings.get<int>("segment/param", res));
78  EXPECT_EQ(res, 2);
79  EXPECT_EQ(settings.get_optional("segment/param", 0), 2);
80 
81  EXPECT_FALSE(settings.get<int>("segment/param2", res));
82  EXPECT_EQ(settings.get_optional("segment/param2", 0), 0);
83  EXPECT_FALSE(settings.get<int>("segment2/param", res));
84  EXPECT_EQ(settings.get_optional("segment2/param", 0), 0);
85 }
86 
87 // Run all the tests that were declared with TEST()
88 int main(int argc, char **argv){
89 testing::InitGoogleTest(&argc, argv);
90 return RUN_ALL_TESTS();
91 }
TEST(SettingTest, socketcan_masks)
can_err_mask_t getErrorMask() const
Definition: socketcan.h:54
virtual bool init(const std::string &device, bool loopback) override
Definition: socketcan.h:61
can_err_mask_t getFatalErrorMask() const
Definition: socketcan.h:58
T get_optional(const std::string &n, const T &def) const
Definition: settings.h:14
bool get(const std::string &n, T &val) const
Definition: settings.h:21
int main(int argc, char **argv)
static SettingsConstSharedPtr create()
Definition: settings.h:36
static std::shared_ptr< SettingsMap > create()
Definition: settings.h:53


socketcan_interface
Author(s): Mathias Lüdtke
autogenerated on Mon Feb 28 2022 23:28:00