diff --git a/JsonGeneratorTests/JsonHashTable.h b/JsonGeneratorTests/JsonHashTable.h index 5dc4b2ef..3ae984c0 100644 --- a/JsonGeneratorTests/JsonHashTable.h +++ b/JsonGeneratorTests/JsonHashTable.h @@ -12,27 +12,54 @@ class JsonHashTable : public JsonObjectBase { public: + JsonHashTable() + { + itemCount = 0; + } + + void add(const char* key, const char* value) + { + ObjectValue v; + v.string = value; + addItem(key, JSON_STRING, v); + } + using JsonObjectBase::writeTo; private: - /* struct KeyValuePair + struct KeyValuePair { const char* key; ObjectContainer value; - };*/ + }; + + KeyValuePair items[N]; + int itemCount; virtual void writeTo(StringBuilder& sb) { sb.append("{"); - /*for (int i = 0; i < itemCount; i++) + for (int i = 0; i < itemCount; i++) { if (i>0) sb.append(","); - writeObjectTo(items[i], sb); - }*/ + sb.appendEscaped(items[i].key); + sb.append(":"); + writeObjectTo(items[i].value, sb); + } sb.append("}"); } + + void addItem(const char* key, ObjectType type, ObjectValue value) + { + if (itemCount >= N) return; + + items[itemCount].key = key; + items[itemCount].value.type = type; + items[itemCount].value.value = value; + itemCount++; + } }; diff --git a/JsonGeneratorTests/JsonHashTableTests.cpp b/JsonGeneratorTests/JsonHashTableTests.cpp index 8e7c3e44..a0bdcd3b 100644 --- a/JsonGeneratorTests/JsonHashTableTests.cpp +++ b/JsonGeneratorTests/JsonHashTableTests.cpp @@ -16,8 +16,20 @@ namespace JsonGeneratorTests assertJsonIs("{}"); } + TEST_METHOD(OneString) + { + add("key", "value"); + assertJsonIs("{\"key\":\"value\"}"); + } + private: + template + void add(const char* key, T value) + { + hash.add(key, value); + } + void assertJsonIs(const char* expected) { char buffer[256];