test_dd_value.cpp
Go to the documentation of this file.
00001 #include <ros/ros.h>
00002 #include <gtest/gtest.h>
00003 #include <ddynamic_reconfigure/dd_value.h>
00004 
00005 namespace ddynamic_reconfigure {
00006 
00010     TEST(DDValueTest, intTest) { // NOLINT(cert-err58-cpp,modernize-use-equals-delete)
00011         // test init properly works
00012         Value v(0);
00013         ASSERT_EQ(0,v.toInt());
00014         ASSERT_EQ(v.getType(),"int");
00015         v = Value(-1);
00016         ASSERT_EQ(-1,v.toInt());
00017         ASSERT_EQ(v.getType(),"int");
00018         v = Value(INT32_MAX);
00019         ASSERT_EQ(INT32_MAX,v.toInt());
00020         ASSERT_EQ(v.getType(),"int");
00021         v = Value(INT32_MIN);
00022         ASSERT_EQ(INT32_MIN,v.toInt());
00023         ASSERT_EQ(v.getType(),"int");
00024         // test that conversions from any value to this type properly works
00025         int i = 1;
00026         v = Value(i + 0.1);
00027         ASSERT_EQ(i,v.toInt());
00028         ASSERT_EQ(v.getType(),"double");
00029         v = Value((bool)i);
00030         ASSERT_EQ(i,v.toInt());
00031         ASSERT_EQ(v.getType(),"bool");
00032         stringstream str; str << i;
00033         v = Value(str.str());
00034         ASSERT_EQ(i,v.toInt());
00035         ASSERT_EQ(v.getType(),"string");
00036     }
00037 
00041     TEST(DDValueTest, doubleTest) { // NOLINT(cert-err58-cpp,modernize-use-equals-delete)
00042         // test init properly works
00043         Value v(0.0);
00044         ASSERT_EQ(0.0,v.toDouble());
00045         ASSERT_EQ(v.getType(),"double");
00046         v = Value(-1.0);
00047         ASSERT_EQ(-1.0,v.toDouble());
00048         ASSERT_EQ(v.getType(),"double");
00049         v = Value((double)INT32_MAX);
00050         ASSERT_EQ((double)INT32_MAX,v.toDouble());
00051         ASSERT_EQ(v.getType(),"double");
00052         v = Value((double)INT32_MIN);
00053         ASSERT_EQ((double)INT32_MIN,v.toDouble());
00054         ASSERT_EQ(v.getType(),"double");
00055         v = Value(DBL_MAX);
00056         ASSERT_EQ(DBL_MAX,v.toDouble());
00057         ASSERT_EQ(v.getType(),"double");
00058         v = Value(DBL_MIN);
00059         ASSERT_EQ(DBL_MIN,v.toDouble());
00060         ASSERT_EQ(v.getType(),"double");
00061         v = Value(-DBL_MAX);
00062         ASSERT_EQ(-DBL_MAX,v.toDouble());
00063         ASSERT_EQ(v.getType(),"double");
00064         // test that conversions from any value to this type properly works
00065         double f = 1.0;
00066         v = Value((int)f);
00067         ASSERT_EQ(f,v.toDouble());
00068         ASSERT_EQ(v.getType(),"int");
00069         v = Value((int)(f + 0.1));
00070         ASSERT_NE(f + 0.1,v.toDouble());
00071         ASSERT_EQ(v.getType(),"int");
00072         v = Value((bool)f);
00073         ASSERT_EQ(f,v.toDouble());
00074         ASSERT_EQ(v.getType(),"bool");
00075         stringstream str; str << f;
00076         v = Value(str.str());
00077         ASSERT_EQ(f,v.toDouble());
00078         ASSERT_EQ(v.getType(),"string");
00079         str << ".000";
00080         v = Value(str.str());
00081         ASSERT_EQ(f,v.toDouble());
00082         ASSERT_EQ(v.getType(),"string");
00083     }
00084 
00088     TEST(DDValueTest, boolTest) { // NOLINT(cert-err58-cpp,modernize-use-equals-delete)
00089 // test init properly works
00090         Value v(false);
00091         ASSERT_EQ(false,v.toBool());
00092         ASSERT_EQ(v.getType(),"bool");
00093         v = Value(true);
00094         ASSERT_EQ(true,v.toBool());
00095         ASSERT_EQ(v.getType(),"bool");
00096         // test that conversions from any value to this type properly works
00097         v = Value(1);
00098         ASSERT_EQ(true,v.toBool());
00099         ASSERT_EQ(v.getType(),"int");
00100         v = Value(0);
00101         ASSERT_EQ(false,v.toBool());
00102         ASSERT_EQ(v.getType(),"int");
00103         v = Value(2);
00104         ASSERT_EQ(true,v.toBool());
00105         ASSERT_EQ(v.getType(),"int");
00106         v = Value(-1);
00107         ASSERT_EQ(false,v.toBool());
00108         ASSERT_EQ(v.getType(),"int");
00109         v = Value(1.0);
00110         ASSERT_EQ(true,v.toBool());
00111         ASSERT_EQ(v.getType(),"double");
00112         v = Value(0.0);
00113         ASSERT_EQ(false,v.toBool());
00114         ASSERT_EQ(v.getType(),"double");
00115         v = Value(2.0);
00116         ASSERT_EQ(true,v.toBool());
00117         ASSERT_EQ(v.getType(),"double");
00118         v = Value(-1.0);
00119         ASSERT_EQ(false,v.toBool());
00120         ASSERT_EQ(v.getType(),"double");
00121         v = Value("true");
00122         ASSERT_EQ(true,v.toBool());
00123         ASSERT_EQ(v.getType(),"string");
00124         v = Value("false");
00125         ASSERT_EQ(false,v.toBool());
00126         ASSERT_EQ(v.getType(),"string");
00127         v = Value("not a bool");
00128         ASSERT_EQ(false,v.toBool());
00129         ASSERT_EQ(v.getType(),"string");
00130         v = Value("");
00131         ASSERT_EQ(false,v.toBool());
00132         ASSERT_EQ(v.getType(),"string");
00133     }
00134 
00138     TEST(DDValueTest, stringTest) { // NOLINT(cert-err58-cpp,modernize-use-equals-delete)
00139         // test init properly works
00140         Value v("normal");
00141         ASSERT_EQ("normal",v.toString());
00142         ASSERT_EQ(v.getType(),"string");
00143         v = Value("\000");
00144         ASSERT_EQ("\000",v.toString());
00145         ASSERT_EQ(v.getType(),"string");
00146         v = Value("");
00147         ASSERT_EQ("",v.toString());
00148         ASSERT_EQ(v.getType(),"string");
00149         string s("How long can I make this string go on for? Well, You would be surprised! I can make it really long, but I won't.");
00150         v = Value(s);
00151         ASSERT_EQ(s,v.toString());
00152         ASSERT_EQ(v.getType(),"string");
00153         // test that conversions from any value to this type properly works
00154         v = Value(1);
00155         ASSERT_EQ("1",v.toString());
00156         ASSERT_EQ(v.getType(),"int");
00157         v = Value(-1);
00158         ASSERT_EQ("-1",v.toString());
00159         ASSERT_EQ(v.getType(),"int");
00160         v = Value(1.);
00161         ASSERT_EQ("1",v.toString());
00162         ASSERT_EQ(v.getType(),"double");
00163         v = Value(-1.);
00164         ASSERT_EQ("-1",v.toString());
00165         ASSERT_EQ(v.getType(),"double");
00166         v = Value(1.1);
00167         ASSERT_EQ("1.1",v.toString());
00168         ASSERT_EQ(v.getType(),"double");
00169         v = Value(-1.1);
00170         ASSERT_EQ("-1.1",v.toString());
00171         ASSERT_EQ(v.getType(),"double");
00172         v = Value(true);
00173         ASSERT_EQ("true",v.toString());
00174         ASSERT_EQ(v.getType(),"bool");
00175         v = Value(false);
00176         ASSERT_EQ("false",v.toString());
00177         ASSERT_EQ(v.getType(),"bool");
00178     }
00179 }
00180 
00181 
00182 int main(int argc, char** argv) {
00183     testing::InitGoogleTest(&argc, argv);
00184 
00185     srand((unsigned int)random());
00186 
00187     return RUN_ALL_TESTS();
00188 }


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