add test code
authorycqiu <429148848@qq.com>
Thu, 8 Oct 2015 13:53:14 +0000 (21:53 +0800)
committerChristopher Dunn <cdunn2001@gmail.com>
Sat, 10 Oct 2015 21:22:14 +0000 (16:22 -0500)
does not compile

src/test_lib_json/main.cpp

index 7a192ee..c6b6721 100644 (file)
@@ -8,6 +8,10 @@
 #include <json/json.h>
 #include <cstring>
 #include <limits>
+#include <sstream>
+#include <string>
+#include <iostream>
+#include <iomanip>
 
 // Make numeric limits more convenient to talk about.
 // Assumes int type in 32 bits.
@@ -2430,6 +2434,31 @@ JSONTEST_FIXTURE(IteratorTest, indexes) {
   JSONTEST_ASSERT(it == json.end());
 }
 
+JSONTEST_FIXTURE(IteratorTest, const) {
+  Json::Value const v;
+  Json::Value::iterator it = v.begin(); // This *should not* compile, but does.
+
+  Json::Value value;
+
+  for(int i = 9; i < 12; ++i)
+  {
+    std::ostringstream out;
+    out << std::setw(2) << i;
+    std::string str = out.str();
+    value[str] = str;
+  }
+
+  std::ostringstream out;
+  //in old code, this will get a compile error
+  Json::Value::const_iterator iter = value.begin();
+  for(; iter != value.end(); ++iter)
+  {
+    out << *iter << ',';
+  }
+  std::string expected = "\" 9\",\"10\",\"11\",";
+  JSONTEST_ASSERT_STRING_EQUAL(expected, out.str());
+}
+
 int main(int argc, const char* argv[]) {
   JsonTest::Runner runner;
   JSONTEST_REGISTER_FIXTURE(runner, ValueTest, checkNormalizeFloatingPointStr);
@@ -2500,6 +2529,7 @@ int main(int argc, const char* argv[]) {
   JSONTEST_REGISTER_FIXTURE(runner, IteratorTest, distance);
   JSONTEST_REGISTER_FIXTURE(runner, IteratorTest, names);
   JSONTEST_REGISTER_FIXTURE(runner, IteratorTest, indexes);
+  JSONTEST_REGISTER_FIXTURE(runner, IteratorTest, const);
 
   return runner.runCommandLine(argc, argv);
 }