Procházet zdrojové kódy

Generator: added a test of one string in an array

Benoît Blanchon před 11 roky
rodič
revize
f18f554c2f

+ 1 - 0
JsonGeneratorTests/.gitignore

@@ -3,3 +3,4 @@
 /*.suo
 /Debug
 /ipch
+/*.opensdf

+ 0 - 6
JsonGeneratorTests/JsonArray.cpp

@@ -6,9 +6,3 @@
 #include <string.h>
 
 #include "JsonArray.h"
-
-void JsonArray::writeTo(char* buffer, size_t bufferSize)
-{
-    strncpy(buffer, "[]", bufferSize);
-
-}

+ 37 - 1
JsonGeneratorTests/JsonArray.h

@@ -5,9 +5,45 @@
 
 #pragma once
 
+template<int N>
 class JsonArray
 {
 public:
-    void writeTo(char* buffer, size_t bufferSize);
+    JsonArray()
+    {
+        itemCount = 0;
+    }
+    
+    void add(const char* data)
+    {
+        if (itemCount <= N)
+            items[itemCount++] = data;
+    }
+
+    void writeTo(char* buffer, size_t bufferSize)
+    {
+        buffer[0] = 0;
+
+        append("[", buffer, bufferSize);
+
+        for (int i = 0; i < itemCount; i++)
+        {
+            append("'", buffer, bufferSize);
+            append(items[i], buffer, bufferSize);
+            append("'", buffer, bufferSize);
+        }
+
+        append("]", buffer, bufferSize);       
+    }
+
+private:
+    const char* items[N];
+    int itemCount;
+
+    void append(const char* source, char* dest, size_t destSize)
+    {
+        int len = strlen(dest);
+        strncpy(dest + len, source, destSize - len);
+    }
 };
 

+ 15 - 2
JsonGeneratorTests/JsonArrayTests.cpp

@@ -7,16 +7,29 @@ namespace JsonGeneratorTests
 {		
     TEST_CLASS(JsonArrayTests)
     {
+        JsonArray<32> arr;
+        
     public:
         
         TEST_METHOD(EmptyArray)
         {
-            JsonArray arr;
+            AssertJsonIs("[]");
+        }
+
+        TEST_METHOD(OneString)
+        {
+            arr.add("hello");
 
+            AssertJsonIs("['hello']");
+        }
+
+        void AssertJsonIs(const char* expected)
+        {      
             char buffer[256];
+
             arr.writeTo(buffer, sizeof(buffer));
 
-            Assert::AreEqual("[]", buffer);
+            Assert::AreEqual(expected, buffer);
         }
     };
 }

+ 1 - 0
JsonParserTests/.gitignore

@@ -3,3 +3,4 @@
 /*.suo
 /Debug
 /ipch
+/*.opensdf