Преглед на файлове

implement minimal json test

mikymod преди 12 години
родител
ревизия
829bff8e19
променени са 2 файла, в които са добавени 48 реда и са изтрити 4 реда
  1. 6 4
      engine/tests/CMakeLists.txt
  2. 42 0
      engine/tests/json.cpp

+ 6 - 4
engine/tests/CMakeLists.txt

@@ -9,20 +9,22 @@ add_executable(containers containers.cpp)
 add_executable(compressors compressors.cpp)
 add_executable(strings strings.cpp)
 add_executable(paths paths.cpp)
-add_executable(dynamic_strings dynamic_strings.cpp)
+add_executable(dynamic-strings dynamic-strings.cpp)
+add_executable(json json.cpp)
 
 target_link_libraries(allocators crown)
 target_link_libraries(containers crown)
 target_link_libraries(compressors crown)
 target_link_libraries(strings crown)
 target_link_libraries(paths crown)
-target_link_libraries(dynamic_strings crown)
+target_link_libraries(dynamic-strings crown)
+target_link_libraries(json crown)
 
 add_test(allocators-test ${EXECUTABLE_OUTPUT_PATH}/allocators)
 add_test(containers-test ${EXECUTABLE_OUTPUT_PATH}/containers)
 add_test(compressors-test ${EXECUTABLE_OUTPUT_PATH}/compressors)
 add_test(strings-test ${EXECUTABLE_OUTPUT_PATH}/strings)
 add_test(paths-test ${EXECUTABLE_OUTPUT_PATH}/paths)
-add_test(dynamic_string-test ${EXECUTABLE_OUTPUT_PATH}/dynamic_string)
-
+add_test(dynamic-string-test ${EXECUTABLE_OUTPUT_PATH}/dynamic-strings)
+add_test(json-test ${EXECUTABLE_OUTPUT_PATH}/json)
 

+ 42 - 0
engine/tests/json.cpp

@@ -0,0 +1,42 @@
+#include "Crown.h"
+
+using namespace crown;
+
+int main()
+{
+	const char* json_string = 	"{"
+    							"\"glossary\": { "
+        						"	\"title\": \"example glossary\", "
+								"	\"GlossDiv\": { "
+            					"		\"title\": \"S\", "
+								"		\"GlossList\": { "
+                				"			\"GlossEntry\": { "
+                    			"				\"ID\": \"SGML\", "
+								"				\"SortAs\": \"SGML\", "
+								"				\"GlossTerm\": \"Standard Generalized Markup Language\", "
+								"				\"Acronym\": \"SGML\", "
+								"				\"Abbrev\": \"ISO 8879:1986\", "
+								"				\"GlossDef\": { "
+                        		"					\"para\": \"A meta-markup language, used to create markup languages such as DocBook.\", "
+								"					\"GlossSeeAlso\": [\"GML\", \"XML\"] "
+                    			"				  }, "
+								"				\"GlossSee\": \"markup\" "
+                				"			 } "
+            					"		  } "
+        						"	   } "
+    							"  } "
+    							"}";
+
+    JSONParser parser(json_string);
+
+    JSONElement root = parser.root();
+
+    CE_ASSERT(root.has_key("glossary"), "'glossary' not found!");
+
+    Log::i("%s", root.key("glossary").key("GlossDiv").key("title").string_value());
+    Log::i("%s", root.key("glossary").key("title").string_value());
+    Log::i("%s", root.key("glossary").key("GlossDiv").key("GlossList").key("GlossEntry").key("GlossTerm").string_value());
+
+
+	return 0;
+}