Просмотр исходного кода

Help(string(JSON)): Clarify that some modes can have zero members/indices

Kyle Edwards 2 месяцев назад
Родитель
Сommit
1eb5ea3a64
2 измененных файлов с 24 добавлено и 4 удалено
  1. 7 4
      Help/command/string.rst
  2. 17 0
      Tests/RunCMake/string/JSON.cmake

+ 7 - 4
Help/command/string.rst

@@ -46,7 +46,10 @@ Synopsis
 
   `JSON`_
     string(JSON <out-var> [ERROR_VARIABLE <error-var>]
-           {`GET <JSON-GET_>`__ | `GET_RAW <JSON-GET-RAW_>`__ | `TYPE <JSON-TYPE_>`__ | `LENGTH <JSON-LENGTH_>`__ | `REMOVE <JSON-REMOVE_>`__}
+           {`GET <JSON-GET_>`__ | `GET_RAW <JSON-GET-RAW_>`__ | `TYPE <JSON-TYPE_>`__ | `LENGTH <JSON-LENGTH_>`__}
+           <json-string> [<member|index> ...])
+    string(JSON <out-var> [ERROR_VARIABLE <error-var>]
+           `REMOVE <JSON-REMOVE_>`__
            <json-string> <member|index> [<member|index> ...])
     string(JSON <out-var> [ERROR_VARIABLE <error-var>]
            `MEMBER <JSON-MEMBER_>`__ <json-string>
@@ -551,7 +554,7 @@ string is passed as a single argument even if it contains semicolons.
 
 .. signature::
   string(JSON <out-var> [ERROR_VARIABLE <error-variable>]
-         GET <json-string> <member|index> [<member|index> ...])
+         GET <json-string> [<member|index> ...])
   :target: JSON-GET
 
   Get an element from ``<json-string>`` at the location given
@@ -563,7 +566,7 @@ string is passed as a single argument even if it contains semicolons.
 
 .. signature::
   string(JSON <out-var> [ERROR_VARIABLE <error-variable>]
-         GET_RAW <json-string> <member|index> [<member|index> ...])
+         GET_RAW <json-string> [<member|index> ...])
   :target: JSON-GET-RAW
 
   Get an element from ``<json-string>`` at the location given
@@ -573,7 +576,7 @@ string is passed as a single argument even if it contains semicolons.
 
 .. signature::
   string(JSON <out-var> [ERROR_VARIABLE <error-variable>]
-         TYPE <json-string> <member|index> [<member|index> ...])
+         TYPE <json-string> [<member|index> ...])
   :target: JSON-TYPE
 
   Get the type of an element in ``<json-string>`` at the location

+ 17 - 0
Tests/RunCMake/string/JSON.cmake

@@ -120,6 +120,17 @@ if(result)
   message(SEND_ERROR "Output did not match expected: FALSE actual: ${result}")
 endif()
 
+string(JSON result GET "\"Hello\"")
+assert_strequal("${result}" Hello)
+string(JSON result GET "5")
+assert_strequal("${result}" 5)
+string(JSON result GET "null")
+assert_strequal("${result}" "")
+string(JSON result ERROR_VARIABLE error GET "{}")
+assert_json_equal("${error}" "${result}" "{}")
+string(JSON result ERROR_VARIABLE error GET "[]")
+assert_json_equal("${error}" "${result}" "[]")
+
 string(JSON result ERROR_VARIABLE error GET "${json1}" foo)
 assert_strequal_error("${result}" "bar" "${error}")
 
@@ -233,6 +244,12 @@ string(JSON result TYPE "${json1}" types array)
 assert_strequal("${result}" ARRAY)
 string(JSON result TYPE "${json1}" types object)
 assert_strequal("${result}" OBJECT)
+string(JSON result TYPE "null")
+assert_strequal("${result}" NULL)
+string(JSON result TYPE "5")
+assert_strequal("${result}" NUMBER)
+string(JSON result TYPE "\"Hello\"")
+assert_strequal("${result}" STRING)
 
 # Test LENGTH
 string(JSON result ERROR_VARIABLE error LENGTH "${json1}")