test_dd_enum.cpp
Go to the documentation of this file.
00001 #include <ros/ros.h>
00002 #include <gtest/gtest.h>
00003 #include <ddynamic_reconfigure/param/dd_enum_param.h>
00004 
00005 namespace ddynamic_reconfigure {
00006 
00010     TEST(DDEnumTest, constructorTest) { // NOLINT(cert-err58-cpp,modernize-use-equals-delete)
00011         map<string,int> dict;
00012         dict["ONE"] = 1;
00013         dict["NEG-ONE"] = -1;
00014         dict["TEN"] = 10;
00015         DDEnum param1("param1",0,"param1",0,dict);
00016         DDEnum param2("",0,"","ONE",dict);
00017         DDEnum param3("\000",0,"\000", 0, dict); // NOLINT(bugprone-string-literal-with-embedded-nul)
00018     }
00019 
00023     TEST(DDEnumTest, valueTest) { // NOLINT(cert-err58-cpp,modernize-use-equals-delete)
00024         map<string,int> dict;
00025         dict["ONE"] = 1;
00026         dict["NEG-ONE"] = -1;
00027         dict["TEN"] = 10;
00028         DDEnum param("dd_param",0,"dd_param",1,dict);
00029         // we won't do any tests on getLevel or getName, as those are implicit.
00030         Value v(1);
00031         ASSERT_TRUE(param.sameType(v));
00032         ASSERT_TRUE(param.sameValue(v));
00033 
00034         v = Value("ONE");
00035         ASSERT_TRUE(param.sameType(v));
00036         ASSERT_TRUE(param.sameValue(v));
00037 
00038         v = Value(1.0);
00039         ASSERT_FALSE(param.sameType(v));
00040         ASSERT_TRUE(param.sameValue(v));
00041 
00042         v = Value(10);
00043         ASSERT_TRUE(param.sameType(v));
00044         ASSERT_FALSE(param.sameValue(v));
00045 
00046         v = Value("TEN");
00047         ASSERT_TRUE(param.sameType(v));
00048         ASSERT_FALSE(param.sameValue(v));
00049 
00050         v = Value(10.0);
00051         ASSERT_FALSE(param.sameType(v));
00052         ASSERT_FALSE(param.sameValue(v));
00053 
00054         param.setValue(v);
00055         v = Value(-1);
00056         ASSERT_FALSE(param.sameValue(v)); // makes sure anti-aliasing happens regarding int setValue
00057 
00058         ASSERT_TRUE(param.getValue().getType() == "int");
00059         ASSERT_TRUE(param.sameValue(Value(10)));
00060 
00061         param.setValue(v);
00062         param.setValue(Value("TEN"));
00063         ASSERT_FALSE(param.sameValue(v)); // makes sure anti-aliasing happens regarding string setValue
00064 
00065         ASSERT_TRUE(param.getValue().getType() == "int");
00066         ASSERT_TRUE(param.sameValue(Value(10)));
00067 
00068         // make sure setValue and sameValue can handle int-string values
00069         v = Value("10");
00070         ASSERT_TRUE(param.sameValue(v));
00071         param.setValue(v);
00072 
00073         ASSERT_TRUE(param.getValue().getType() == "int");
00074         ASSERT_TRUE(param.sameValue(Value(10)));
00075 
00076         // make sure setValue and sameValue can handle non-number non-dictionary strings
00077         v = Value("TWO");
00078         // 'two' is not in our dictionary, so we will attempt to place it in there using a hash conversion
00079         ASSERT_FALSE(param.sameValue(v));
00080         param.setValue(v);
00081 
00082         ASSERT_TRUE(param.getValue().getType() == "int");
00083         int hash = (int)boost::hash<string>()("TWO");
00084         ASSERT_TRUE(param.sameValue(Value(hash)));
00085     }
00086 
00087     TEST(DDEnumTest, streamTest) { // NOLINT(cert-err58-cpp,modernize-use-equals-delete)
00088         map<string,int> dict;
00089         dict["ONE"] = 1;
00090         dict["NEG-ONE"] = -1;
00091         dict["TEN"] = 10;
00092         DDEnum param1("param1",0,"param1",1,dict);
00093         stringstream stream;
00094         stream << param1;
00095         ASSERT_EQ(param1.getName() + ":" + param1.getValue().toString(),stream.str());
00096     }
00097 }
00098 
00099 
00100 int main(int argc, char** argv) {
00101     testing::InitGoogleTest(&argc, argv);
00102 
00103     srand((unsigned int)random());
00104 
00105     return RUN_ALL_TESTS();
00106 }


ddynamic_reconfigure
Author(s): Noam Dori
autogenerated on Wed May 15 2019 04:39:27