Procházet zdrojové kódy

Added a test with too few tokens

Benoit Blanchon před 11 roky
rodič
revize
cf1324c09b

+ 54 - 8
JsonParserTests/JsonArrayTests.cpp

@@ -13,9 +13,10 @@ namespace ArduinoJsonParserTests
 {
 	TEST_CLASS(JsonArrayTests)
 	{
-		JsonParser<32> parser;
         JsonArray array;
         char json[256];
+        jsmntok_t tokens[32];
+        JsonParserBase parser = JsonParserBase(tokens, 32);
 
 	public:
 		
@@ -25,13 +26,6 @@ namespace ArduinoJsonParserTests
             parseMustFail();             
 		}
 
-		TEST_METHOD(EmptyArray)
-		{
-            whenInputIs("[]");
-            parseMustSucceed();
-            lengthMustBe(0);
-		}
-
 		TEST_METHOD(TooFewClosingBrackets)
 		{
             whenInputIs("[[]");
@@ -44,47 +38,83 @@ namespace ArduinoJsonParserTests
             parseMustFail();
 		}
 		
+        TEST_METHOD(EmptyArray)
+        {
+            whenInputIs("[]");
+            parseMustSucceed();
+            lengthMustBe(0);
+        }
+
+        TEST_METHOD(NotEnoughTokens)
+        {
+            setTokenCountTo(2);
+
+            whenInputIs("[1,2]");
+
+            parseMustFail();
+            itemMustNotExist(0);
+        }
+
 		TEST_METHOD(TwoIntegers)
 		{
+            setTokenCountTo(3);
+
             whenInputIs("[1,2]");
+
             parseMustSucceed();
             lengthMustBe(2);
             itemMustBe(0, 1L);
             itemMustBe(1, 2L);
+            itemMustNotExist(2);
 		}
 
         TEST_METHOD(TwoBooleans)
         {
+            setTokenCountTo(3);
+
             whenInputIs("[true,false]");
+
             parseMustSucceed();
             lengthMustBe(2);
             itemMustBe(0, true);
             itemMustBe(1, false);
+            itemMustNotExist(2);
         }
 
         TEST_METHOD(TwoStrings)
         {
+            setTokenCountTo(3);
+
             whenInputIs("[\"hello\",\"world\"]");
+
             parseMustSucceed();
             lengthMustBe(2);
             itemMustBe(0, "hello");
             itemMustBe(1, "world");
+            itemMustNotExist(2);
         }
 
 		TEST_METHOD(TwoDimensionsArray)
 		{
+            setTokenCountTo(7);
+
             whenInputIs("[[1,2],[3,4]]");
+
             parseMustSucceed();
             lengthMustBe(2);
             itemMustBe(0, 0, 1L);
             itemMustBe(0, 1, 2L);
             itemMustBe(1, 0, 3L);
             itemMustBe(1, 1, 4L);
+            itemMustNotExist(2);
 		}
 
         TEST_METHOD(ThreeDimensionsArray)
         {
+            setTokenCountTo(15);
+
             whenInputIs("[[[1,2],[3,4]],[[5,6],[7,8]]]");
+
             parseMustSucceed();
             lengthMustBe(2);
             itemMustBe(0, 0, 0, 1L);
@@ -95,10 +125,16 @@ namespace ArduinoJsonParserTests
             itemMustBe(1, 0, 1, 6L);
             itemMustBe(1, 1, 0, 7L);
             itemMustBe(1, 1, 1, 8L);
+            itemMustNotExist(2);
         }        
 		
     private:
 
+        void setTokenCountTo(int n)
+        {
+            parser = JsonParserBase(tokens, n);
+        }
+
         void whenInputIs(const char* input)
         {
             strcpy(json, input);
@@ -145,5 +181,15 @@ namespace ArduinoJsonParserTests
         {
             Assert::AreEqual(expected, array.getArray(index0).getArray(index1).getLong(index2));
         }
+
+        void itemMustNotExist(int index)
+        {
+            Assert::IsFalse(array.getHashTable(index).success());
+            Assert::IsFalse(array.getArray(index).success());
+            Assert::IsFalse(array.getBool(index));
+            Assert::AreEqual(0.0, array.getDouble(index));
+            Assert::AreEqual(0L, array.getLong(index));
+            Assert::IsNull(array.getString(index));
+        }
 	};
 }

+ 6 - 6
JsonParserTests/JsonHashTableTests.cpp

@@ -42,7 +42,7 @@ namespace ArduinoJsonParserTests
             whenInputIs("{\"key\":0}");
 
             parseMustFail();
-            itemMustNotExists("key");
+            itemMustNotExist("key");
         }
 
         TEST_METHOD(TwoIntegers)
@@ -54,7 +54,7 @@ namespace ArduinoJsonParserTests
             parseMustSucceed();
             itemMustBe("key1", 1L);
             itemMustBe("key2", 2L);
-            itemMustNotExists("key3");
+            itemMustNotExist("key3");
         }
 
         TEST_METHOD(TwoBooleans)
@@ -66,7 +66,7 @@ namespace ArduinoJsonParserTests
             parseMustSucceed();
             itemMustBe("key1", true);
             itemMustBe("key2", false);
-            itemMustNotExists("key3");
+            itemMustNotExist("key3");
         }
 
         TEST_METHOD(TwoStrings)
@@ -78,7 +78,7 @@ namespace ArduinoJsonParserTests
             parseMustSucceed();
             itemMustBe("key1", "hello");
             itemMustBe("key2", "world");
-            itemMustNotExists("key3");
+            itemMustNotExist("key3");
         }
 
         TEST_METHOD(TwoNestedArrays)
@@ -100,7 +100,7 @@ namespace ArduinoJsonParserTests
             arrayItemMustBe(1, 4L);
             arrayItemMustBe(2, 0L);
 
-            itemMustNotExists("key3");
+            itemMustNotExist("key3");
         }
 
     private:
@@ -141,7 +141,7 @@ namespace ArduinoJsonParserTests
             Assert::AreEqual(expected, hashTable.getString(key));
         }
 
-        void itemMustNotExists(const char* key)
+        void itemMustNotExist(const char* key)
         {
             Assert::IsFalse(hashTable.containsKey(key));
             Assert::IsFalse(hashTable.getHashTable(key).success());