rj_schema 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (614) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rj_schema/rapidjson/CHANGELOG.md +158 -0
  3. data/ext/rj_schema/rapidjson/CMakeLists.txt +226 -0
  4. data/ext/rj_schema/rapidjson/CMakeModules/FindGTestSrc.cmake +30 -0
  5. data/ext/rj_schema/rapidjson/RapidJSON.pc.in +7 -0
  6. data/ext/rj_schema/rapidjson/RapidJSONConfig.cmake.in +25 -0
  7. data/ext/rj_schema/rapidjson/RapidJSONConfigVersion.cmake.in +10 -0
  8. data/ext/rj_schema/rapidjson/appveyor.yml +54 -0
  9. data/ext/rj_schema/rapidjson/bin/data/abcde.txt +1 -0
  10. data/ext/rj_schema/rapidjson/bin/data/glossary.json +22 -0
  11. data/ext/rj_schema/rapidjson/bin/data/menu.json +27 -0
  12. data/ext/rj_schema/rapidjson/bin/data/readme.txt +1 -0
  13. data/ext/rj_schema/rapidjson/bin/data/sample.json +3315 -0
  14. data/ext/rj_schema/rapidjson/bin/data/webapp.json +88 -0
  15. data/ext/rj_schema/rapidjson/bin/data/widget.json +26 -0
  16. data/ext/rj_schema/rapidjson/bin/draft-04/schema +150 -0
  17. data/ext/rj_schema/rapidjson/bin/encodings/utf16be.json +0 -0
  18. data/ext/rj_schema/rapidjson/bin/encodings/utf16bebom.json +0 -0
  19. data/ext/rj_schema/rapidjson/bin/encodings/utf16le.json +0 -0
  20. data/ext/rj_schema/rapidjson/bin/encodings/utf16lebom.json +0 -0
  21. data/ext/rj_schema/rapidjson/bin/encodings/utf32be.json +0 -0
  22. data/ext/rj_schema/rapidjson/bin/encodings/utf32bebom.json +0 -0
  23. data/ext/rj_schema/rapidjson/bin/encodings/utf32le.json +0 -0
  24. data/ext/rj_schema/rapidjson/bin/encodings/utf32lebom.json +0 -0
  25. data/ext/rj_schema/rapidjson/bin/encodings/utf8.json +7 -0
  26. data/ext/rj_schema/rapidjson/bin/encodings/utf8bom.json +7 -0
  27. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail1.json +1 -0
  28. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail10.json +1 -0
  29. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail11.json +1 -0
  30. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail12.json +1 -0
  31. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail13.json +1 -0
  32. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail14.json +1 -0
  33. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail15.json +1 -0
  34. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail16.json +1 -0
  35. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail17.json +1 -0
  36. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail18.json +1 -0
  37. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail19.json +1 -0
  38. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail2.json +1 -0
  39. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail20.json +1 -0
  40. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail21.json +1 -0
  41. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail22.json +1 -0
  42. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail23.json +1 -0
  43. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail24.json +1 -0
  44. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail25.json +1 -0
  45. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail26.json +1 -0
  46. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail27.json +2 -0
  47. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail28.json +2 -0
  48. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail29.json +1 -0
  49. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail3.json +1 -0
  50. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail30.json +1 -0
  51. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail31.json +1 -0
  52. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail32.json +1 -0
  53. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail33.json +1 -0
  54. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail4.json +1 -0
  55. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail5.json +1 -0
  56. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail6.json +1 -0
  57. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail7.json +1 -0
  58. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail8.json +1 -0
  59. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail9.json +1 -0
  60. data/ext/rj_schema/rapidjson/bin/jsonchecker/pass1.json +58 -0
  61. data/ext/rj_schema/rapidjson/bin/jsonchecker/pass2.json +1 -0
  62. data/ext/rj_schema/rapidjson/bin/jsonchecker/pass3.json +6 -0
  63. data/ext/rj_schema/rapidjson/bin/jsonchecker/readme.txt +3 -0
  64. data/ext/rj_schema/rapidjson/bin/jsonschema/LICENSE +19 -0
  65. data/ext/rj_schema/rapidjson/bin/jsonschema/README.md +148 -0
  66. data/ext/rj_schema/rapidjson/bin/jsonschema/bin/jsonschema_suite +283 -0
  67. data/ext/rj_schema/rapidjson/bin/jsonschema/remotes/folder/folderInteger.json +3 -0
  68. data/ext/rj_schema/rapidjson/bin/jsonschema/remotes/integer.json +3 -0
  69. data/ext/rj_schema/rapidjson/bin/jsonschema/remotes/subSchemas.json +8 -0
  70. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/additionalItems.json +82 -0
  71. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/additionalProperties.json +88 -0
  72. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/default.json +49 -0
  73. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/dependencies.json +108 -0
  74. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/disallow.json +80 -0
  75. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/divisibleBy.json +60 -0
  76. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/enum.json +71 -0
  77. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/extends.json +94 -0
  78. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/items.json +46 -0
  79. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/maxItems.json +28 -0
  80. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/maxLength.json +33 -0
  81. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/maximum.json +42 -0
  82. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/minItems.json +28 -0
  83. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/minLength.json +33 -0
  84. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/minimum.json +42 -0
  85. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/bignum.json +107 -0
  86. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/format.json +222 -0
  87. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/jsregex.json +18 -0
  88. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/zeroTerminatedFloats.json +15 -0
  89. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/pattern.json +34 -0
  90. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/patternProperties.json +110 -0
  91. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/properties.json +92 -0
  92. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/ref.json +159 -0
  93. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/refRemote.json +74 -0
  94. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/required.json +53 -0
  95. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/type.json +474 -0
  96. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/uniqueItems.json +79 -0
  97. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/additionalItems.json +82 -0
  98. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/additionalProperties.json +88 -0
  99. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/allOf.json +112 -0
  100. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/anyOf.json +68 -0
  101. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/default.json +49 -0
  102. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/definitions.json +32 -0
  103. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/dependencies.json +113 -0
  104. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/enum.json +72 -0
  105. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/items.json +46 -0
  106. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maxItems.json +28 -0
  107. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maxLength.json +33 -0
  108. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maxProperties.json +28 -0
  109. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maximum.json +42 -0
  110. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minItems.json +28 -0
  111. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minLength.json +33 -0
  112. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minProperties.json +28 -0
  113. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minimum.json +42 -0
  114. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/multipleOf.json +60 -0
  115. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/not.json +96 -0
  116. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/oneOf.json +68 -0
  117. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/optional/bignum.json +107 -0
  118. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/optional/format.json +148 -0
  119. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/optional/zeroTerminatedFloats.json +15 -0
  120. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/pattern.json +34 -0
  121. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/patternProperties.json +110 -0
  122. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/properties.json +92 -0
  123. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/ref.json +159 -0
  124. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/refRemote.json +74 -0
  125. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/required.json +39 -0
  126. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/type.json +330 -0
  127. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/uniqueItems.json +79 -0
  128. data/ext/rj_schema/rapidjson/bin/jsonschema/tox.ini +8 -0
  129. data/ext/rj_schema/rapidjson/bin/types/booleans.json +102 -0
  130. data/ext/rj_schema/rapidjson/bin/types/floats.json +102 -0
  131. data/ext/rj_schema/rapidjson/bin/types/guids.json +102 -0
  132. data/ext/rj_schema/rapidjson/bin/types/integers.json +102 -0
  133. data/ext/rj_schema/rapidjson/bin/types/mixed.json +592 -0
  134. data/ext/rj_schema/rapidjson/bin/types/nulls.json +102 -0
  135. data/ext/rj_schema/rapidjson/bin/types/paragraphs.json +102 -0
  136. data/ext/rj_schema/rapidjson/bin/types/readme.txt +1 -0
  137. data/ext/rj_schema/rapidjson/contrib/natvis/LICENSE +45 -0
  138. data/ext/rj_schema/rapidjson/contrib/natvis/README.md +7 -0
  139. data/ext/rj_schema/rapidjson/contrib/natvis/rapidjson.natvis +38 -0
  140. data/ext/rj_schema/rapidjson/doc/CMakeLists.txt +27 -0
  141. data/ext/rj_schema/rapidjson/doc/Doxyfile.in +2369 -0
  142. data/ext/rj_schema/rapidjson/doc/Doxyfile.zh-cn.in +2369 -0
  143. data/ext/rj_schema/rapidjson/doc/diagram/architecture.dot +50 -0
  144. data/ext/rj_schema/rapidjson/doc/diagram/architecture.png +0 -0
  145. data/ext/rj_schema/rapidjson/doc/diagram/insituparsing.dot +65 -0
  146. data/ext/rj_schema/rapidjson/doc/diagram/insituparsing.png +0 -0
  147. data/ext/rj_schema/rapidjson/doc/diagram/iterative-parser-states-diagram.dot +62 -0
  148. data/ext/rj_schema/rapidjson/doc/diagram/iterative-parser-states-diagram.png +0 -0
  149. data/ext/rj_schema/rapidjson/doc/diagram/makefile +8 -0
  150. data/ext/rj_schema/rapidjson/doc/diagram/move1.dot +47 -0
  151. data/ext/rj_schema/rapidjson/doc/diagram/move1.png +0 -0
  152. data/ext/rj_schema/rapidjson/doc/diagram/move2.dot +62 -0
  153. data/ext/rj_schema/rapidjson/doc/diagram/move2.png +0 -0
  154. data/ext/rj_schema/rapidjson/doc/diagram/move3.dot +60 -0
  155. data/ext/rj_schema/rapidjson/doc/diagram/move3.png +0 -0
  156. data/ext/rj_schema/rapidjson/doc/diagram/normalparsing.dot +56 -0
  157. data/ext/rj_schema/rapidjson/doc/diagram/normalparsing.png +0 -0
  158. data/ext/rj_schema/rapidjson/doc/diagram/simpledom.dot +54 -0
  159. data/ext/rj_schema/rapidjson/doc/diagram/simpledom.png +0 -0
  160. data/ext/rj_schema/rapidjson/doc/diagram/tutorial.dot +58 -0
  161. data/ext/rj_schema/rapidjson/doc/diagram/tutorial.png +0 -0
  162. data/ext/rj_schema/rapidjson/doc/diagram/utilityclass.dot +73 -0
  163. data/ext/rj_schema/rapidjson/doc/diagram/utilityclass.png +0 -0
  164. data/ext/rj_schema/rapidjson/doc/dom.md +281 -0
  165. data/ext/rj_schema/rapidjson/doc/dom.zh-cn.md +285 -0
  166. data/ext/rj_schema/rapidjson/doc/encoding.md +146 -0
  167. data/ext/rj_schema/rapidjson/doc/encoding.zh-cn.md +152 -0
  168. data/ext/rj_schema/rapidjson/doc/faq.md +289 -0
  169. data/ext/rj_schema/rapidjson/doc/faq.zh-cn.md +290 -0
  170. data/ext/rj_schema/rapidjson/doc/features.md +104 -0
  171. data/ext/rj_schema/rapidjson/doc/features.zh-cn.md +103 -0
  172. data/ext/rj_schema/rapidjson/doc/internals.md +368 -0
  173. data/ext/rj_schema/rapidjson/doc/internals.zh-cn.md +363 -0
  174. data/ext/rj_schema/rapidjson/doc/logo/rapidjson.png +0 -0
  175. data/ext/rj_schema/rapidjson/doc/logo/rapidjson.svg +119 -0
  176. data/ext/rj_schema/rapidjson/doc/misc/DoxygenLayout.xml +194 -0
  177. data/ext/rj_schema/rapidjson/doc/misc/doxygenextra.css +274 -0
  178. data/ext/rj_schema/rapidjson/doc/misc/footer.html +11 -0
  179. data/ext/rj_schema/rapidjson/doc/misc/header.html +24 -0
  180. data/ext/rj_schema/rapidjson/doc/npm.md +31 -0
  181. data/ext/rj_schema/rapidjson/doc/performance.md +26 -0
  182. data/ext/rj_schema/rapidjson/doc/performance.zh-cn.md +26 -0
  183. data/ext/rj_schema/rapidjson/doc/pointer.md +234 -0
  184. data/ext/rj_schema/rapidjson/doc/pointer.zh-cn.md +234 -0
  185. data/ext/rj_schema/rapidjson/doc/sax.md +509 -0
  186. data/ext/rj_schema/rapidjson/doc/sax.zh-cn.md +487 -0
  187. data/ext/rj_schema/rapidjson/doc/schema.md +505 -0
  188. data/ext/rj_schema/rapidjson/doc/schema.zh-cn.md +237 -0
  189. data/ext/rj_schema/rapidjson/doc/stream.md +429 -0
  190. data/ext/rj_schema/rapidjson/doc/stream.zh-cn.md +429 -0
  191. data/ext/rj_schema/rapidjson/doc/tutorial.md +536 -0
  192. data/ext/rj_schema/rapidjson/doc/tutorial.zh-cn.md +535 -0
  193. data/ext/rj_schema/rapidjson/docker/debian/Dockerfile +8 -0
  194. data/ext/rj_schema/rapidjson/example/CMakeLists.txt +46 -0
  195. data/ext/rj_schema/rapidjson/example/archiver/archiver.cpp +292 -0
  196. data/ext/rj_schema/rapidjson/example/archiver/archiver.h +145 -0
  197. data/ext/rj_schema/rapidjson/example/archiver/archivertest.cpp +287 -0
  198. data/ext/rj_schema/rapidjson/example/capitalize/capitalize.cpp +67 -0
  199. data/ext/rj_schema/rapidjson/example/condense/condense.cpp +32 -0
  200. data/ext/rj_schema/rapidjson/example/filterkey/filterkey.cpp +135 -0
  201. data/ext/rj_schema/rapidjson/example/filterkeydom/filterkeydom.cpp +170 -0
  202. data/ext/rj_schema/rapidjson/example/jsonx/jsonx.cpp +207 -0
  203. data/ext/rj_schema/rapidjson/example/lookaheadparser/lookaheadparser.cpp +350 -0
  204. data/ext/rj_schema/rapidjson/example/messagereader/messagereader.cpp +105 -0
  205. data/ext/rj_schema/rapidjson/example/parsebyparts/parsebyparts.cpp +176 -0
  206. data/ext/rj_schema/rapidjson/example/pretty/pretty.cpp +30 -0
  207. data/ext/rj_schema/rapidjson/example/prettyauto/prettyauto.cpp +56 -0
  208. data/ext/rj_schema/rapidjson/example/schemavalidator/schemavalidator.cpp +78 -0
  209. data/ext/rj_schema/rapidjson/example/serialize/serialize.cpp +173 -0
  210. data/ext/rj_schema/rapidjson/example/simpledom/simpledom.cpp +29 -0
  211. data/ext/rj_schema/rapidjson/example/simplepullreader/simplepullreader.cpp +53 -0
  212. data/ext/rj_schema/rapidjson/example/simplereader/simplereader.cpp +42 -0
  213. data/ext/rj_schema/rapidjson/example/simplewriter/simplewriter.cpp +36 -0
  214. data/ext/rj_schema/rapidjson/example/sortkeys/sortkeys.cpp +62 -0
  215. data/ext/rj_schema/rapidjson/example/tutorial/tutorial.cpp +151 -0
  216. data/ext/rj_schema/rapidjson/include/rapidjson/allocators.h +284 -0
  217. data/ext/rj_schema/rapidjson/include/rapidjson/cursorstreamwrapper.h +78 -0
  218. data/ext/rj_schema/rapidjson/include/rapidjson/document.h +2732 -0
  219. data/ext/rj_schema/rapidjson/include/rapidjson/encodedstream.h +299 -0
  220. data/ext/rj_schema/rapidjson/include/rapidjson/encodings.h +716 -0
  221. data/ext/rj_schema/rapidjson/include/rapidjson/error/en.h +74 -0
  222. data/ext/rj_schema/rapidjson/include/rapidjson/error/error.h +161 -0
  223. data/ext/rj_schema/rapidjson/include/rapidjson/filereadstream.h +99 -0
  224. data/ext/rj_schema/rapidjson/include/rapidjson/filewritestream.h +104 -0
  225. data/ext/rj_schema/rapidjson/include/rapidjson/fwd.h +151 -0
  226. data/ext/rj_schema/rapidjson/include/rapidjson/internal/biginteger.h +290 -0
  227. data/ext/rj_schema/rapidjson/include/rapidjson/internal/clzll.h +71 -0
  228. data/ext/rj_schema/rapidjson/include/rapidjson/internal/diyfp.h +257 -0
  229. data/ext/rj_schema/rapidjson/include/rapidjson/internal/dtoa.h +245 -0
  230. data/ext/rj_schema/rapidjson/include/rapidjson/internal/ieee754.h +78 -0
  231. data/ext/rj_schema/rapidjson/include/rapidjson/internal/itoa.h +308 -0
  232. data/ext/rj_schema/rapidjson/include/rapidjson/internal/meta.h +186 -0
  233. data/ext/rj_schema/rapidjson/include/rapidjson/internal/pow10.h +55 -0
  234. data/ext/rj_schema/rapidjson/include/rapidjson/internal/regex.h +739 -0
  235. data/ext/rj_schema/rapidjson/include/rapidjson/internal/stack.h +232 -0
  236. data/ext/rj_schema/rapidjson/include/rapidjson/internal/strfunc.h +69 -0
  237. data/ext/rj_schema/rapidjson/include/rapidjson/internal/strtod.h +290 -0
  238. data/ext/rj_schema/rapidjson/include/rapidjson/internal/swap.h +46 -0
  239. data/ext/rj_schema/rapidjson/include/rapidjson/istreamwrapper.h +128 -0
  240. data/ext/rj_schema/rapidjson/include/rapidjson/memorybuffer.h +70 -0
  241. data/ext/rj_schema/rapidjson/include/rapidjson/memorystream.h +71 -0
  242. data/ext/rj_schema/rapidjson/include/rapidjson/msinttypes/inttypes.h +316 -0
  243. data/ext/rj_schema/rapidjson/include/rapidjson/msinttypes/stdint.h +300 -0
  244. data/ext/rj_schema/rapidjson/include/rapidjson/ostreamwrapper.h +81 -0
  245. data/ext/rj_schema/rapidjson/include/rapidjson/pointer.h +1415 -0
  246. data/ext/rj_schema/rapidjson/include/rapidjson/prettywriter.h +277 -0
  247. data/ext/rj_schema/rapidjson/include/rapidjson/rapidjson.h +676 -0
  248. data/ext/rj_schema/rapidjson/include/rapidjson/reader.h +2236 -0
  249. data/ext/rj_schema/rapidjson/include/rapidjson/schema.h +2496 -0
  250. data/ext/rj_schema/rapidjson/include/rapidjson/stream.h +223 -0
  251. data/ext/rj_schema/rapidjson/include/rapidjson/stringbuffer.h +121 -0
  252. data/ext/rj_schema/rapidjson/include/rapidjson/writer.h +710 -0
  253. data/ext/rj_schema/rapidjson/include_dirs.js +2 -0
  254. data/ext/rj_schema/rapidjson/library.json +15 -0
  255. data/ext/rj_schema/rapidjson/license.txt +57 -0
  256. data/ext/rj_schema/rapidjson/package.json +24 -0
  257. data/ext/rj_schema/rapidjson/rapidjson.autopkg +77 -0
  258. data/ext/rj_schema/rapidjson/readme.md +210 -0
  259. data/ext/rj_schema/rapidjson/readme.zh-cn.md +152 -0
  260. data/ext/rj_schema/rapidjson/test/CMakeLists.txt +20 -0
  261. data/ext/rj_schema/rapidjson/test/perftest/CMakeLists.txt +28 -0
  262. data/ext/rj_schema/rapidjson/test/perftest/misctest.cpp +974 -0
  263. data/ext/rj_schema/rapidjson/test/perftest/perftest.cpp +24 -0
  264. data/ext/rj_schema/rapidjson/test/perftest/perftest.h +185 -0
  265. data/ext/rj_schema/rapidjson/test/perftest/platformtest.cpp +166 -0
  266. data/ext/rj_schema/rapidjson/test/perftest/rapidjsontest.cpp +546 -0
  267. data/ext/rj_schema/rapidjson/test/perftest/schematest.cpp +223 -0
  268. data/ext/rj_schema/rapidjson/test/unittest/CMakeLists.txt +92 -0
  269. data/ext/rj_schema/rapidjson/test/unittest/allocatorstest.cpp +100 -0
  270. data/ext/rj_schema/rapidjson/test/unittest/bigintegertest.cpp +138 -0
  271. data/ext/rj_schema/rapidjson/test/unittest/cursorstreamwrappertest.cpp +115 -0
  272. data/ext/rj_schema/rapidjson/test/unittest/documenttest.cpp +672 -0
  273. data/ext/rj_schema/rapidjson/test/unittest/dtoatest.cpp +98 -0
  274. data/ext/rj_schema/rapidjson/test/unittest/encodedstreamtest.cpp +313 -0
  275. data/ext/rj_schema/rapidjson/test/unittest/encodingstest.cpp +451 -0
  276. data/ext/rj_schema/rapidjson/test/unittest/filestreamtest.cpp +155 -0
  277. data/ext/rj_schema/rapidjson/test/unittest/fwdtest.cpp +230 -0
  278. data/ext/rj_schema/rapidjson/test/unittest/istreamwrappertest.cpp +181 -0
  279. data/ext/rj_schema/rapidjson/test/unittest/itoatest.cpp +160 -0
  280. data/ext/rj_schema/rapidjson/test/unittest/jsoncheckertest.cpp +143 -0
  281. data/ext/rj_schema/rapidjson/test/unittest/namespacetest.cpp +70 -0
  282. data/ext/rj_schema/rapidjson/test/unittest/ostreamwrappertest.cpp +92 -0
  283. data/ext/rj_schema/rapidjson/test/unittest/pointertest.cpp +1638 -0
  284. data/ext/rj_schema/rapidjson/test/unittest/prettywritertest.cpp +373 -0
  285. data/ext/rj_schema/rapidjson/test/unittest/readertest.cpp +2225 -0
  286. data/ext/rj_schema/rapidjson/test/unittest/regextest.cpp +639 -0
  287. data/ext/rj_schema/rapidjson/test/unittest/schematest.cpp +2072 -0
  288. data/ext/rj_schema/rapidjson/test/unittest/simdtest.cpp +219 -0
  289. data/ext/rj_schema/rapidjson/test/unittest/strfunctest.cpp +30 -0
  290. data/ext/rj_schema/rapidjson/test/unittest/stringbuffertest.cpp +192 -0
  291. data/ext/rj_schema/rapidjson/test/unittest/strtodtest.cpp +132 -0
  292. data/ext/rj_schema/rapidjson/test/unittest/unittest.cpp +51 -0
  293. data/ext/rj_schema/rapidjson/test/unittest/unittest.h +143 -0
  294. data/ext/rj_schema/rapidjson/test/unittest/valuetest.cpp +1851 -0
  295. data/ext/rj_schema/rapidjson/test/unittest/writertest.cpp +598 -0
  296. data/ext/rj_schema/rapidjson/test/valgrind.supp +17 -0
  297. data/ext/rj_schema/rapidjson/thirdparty/gtest/BUILD.bazel +175 -0
  298. data/ext/rj_schema/rapidjson/thirdparty/gtest/CMakeLists.txt +33 -0
  299. data/ext/rj_schema/rapidjson/thirdparty/gtest/CONTRIBUTING.md +160 -0
  300. data/ext/rj_schema/rapidjson/thirdparty/gtest/LICENSE +28 -0
  301. data/ext/rj_schema/rapidjson/thirdparty/gtest/Makefile.am +14 -0
  302. data/ext/rj_schema/rapidjson/thirdparty/gtest/README.md +122 -0
  303. data/ext/rj_schema/rapidjson/thirdparty/gtest/WORKSPACE +8 -0
  304. data/ext/rj_schema/rapidjson/thirdparty/gtest/appveyor.yml +104 -0
  305. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/build-linux-autotools.sh +44 -0
  306. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/build-linux-bazel.sh +36 -0
  307. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/env-linux.sh +41 -0
  308. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/env-osx.sh +40 -0
  309. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/get-nprocessors.sh +48 -0
  310. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/install-linux.sh +49 -0
  311. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/install-osx.sh +39 -0
  312. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/log-config.sh +51 -0
  313. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/travis.sh +44 -0
  314. data/ext/rj_schema/rapidjson/thirdparty/gtest/configure.ac +16 -0
  315. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CHANGES +126 -0
  316. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CMakeLists.txt +242 -0
  317. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CONTRIBUTORS +40 -0
  318. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/LICENSE +28 -0
  319. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/Makefile.am +224 -0
  320. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/README.md +344 -0
  321. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/cmake/gmock.pc.in +9 -0
  322. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/cmake/gmock_main.pc.in +9 -0
  323. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/configure.ac +146 -0
  324. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/CheatSheet.md +564 -0
  325. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/CookBook.md +3660 -0
  326. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/DesignDoc.md +280 -0
  327. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/Documentation.md +15 -0
  328. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/ForDummies.md +447 -0
  329. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/FrequentlyAskedQuestions.md +627 -0
  330. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/KnownIssues.md +19 -0
  331. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-actions.h +1262 -0
  332. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-cardinalities.h +147 -0
  333. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h +2571 -0
  334. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h.pump +833 -0
  335. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h +1379 -0
  336. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump +347 -0
  337. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h +2258 -0
  338. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h.pump +675 -0
  339. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h +458 -0
  340. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h.pump +178 -0
  341. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-matchers.h +5255 -0
  342. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-more-actions.h +246 -0
  343. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-more-matchers.h +91 -0
  344. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-spec-builders.h +1918 -0
  345. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock.h +95 -0
  346. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +8 -0
  347. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +10 -0
  348. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-matchers.h +38 -0
  349. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-port.h +46 -0
  350. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h +286 -0
  351. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h.pump +136 -0
  352. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-internal-utils.h +574 -0
  353. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-port.h +87 -0
  354. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/make/Makefile +101 -0
  355. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.sln +32 -0
  356. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.vcproj +191 -0
  357. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_config.vsprops +15 -0
  358. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_main.vcproj +187 -0
  359. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_test.vcproj +201 -0
  360. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.sln +46 -0
  361. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.vcxproj +145 -0
  362. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_config.props +19 -0
  363. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_main.vcxproj +151 -0
  364. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_test.vcxproj +176 -0
  365. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.sln +46 -0
  366. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.vcxproj +145 -0
  367. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_config.props +19 -0
  368. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_main.vcxproj +151 -0
  369. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_test.vcxproj +176 -0
  370. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/fuse_gmock_files.py +240 -0
  371. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/LICENSE +203 -0
  372. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/README +34 -0
  373. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/README.cppclean +115 -0
  374. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/__init__.py +0 -0
  375. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/ast.py +1733 -0
  376. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/gmock_class.py +227 -0
  377. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/gmock_class_test.py +448 -0
  378. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/keywords.py +59 -0
  379. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/tokenize.py +287 -0
  380. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/utils.py +41 -0
  381. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/gmock_gen.py +31 -0
  382. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/gmock-config.in +303 -0
  383. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/gmock_doctor.py +640 -0
  384. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/upload.py +1387 -0
  385. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/upload_gmock.py +78 -0
  386. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-all.cc +47 -0
  387. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-cardinalities.cc +156 -0
  388. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-internal-utils.cc +204 -0
  389. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-matchers.cc +573 -0
  390. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-spec-builders.cc +883 -0
  391. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock.cc +205 -0
  392. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock_main.cc +54 -0
  393. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/BUILD.bazel +123 -0
  394. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-actions_test.cc +1575 -0
  395. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-cardinalities_test.cc +428 -0
  396. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-actions_test.cc +1230 -0
  397. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-function-mockers_test.cc +647 -0
  398. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-internal-utils_test.cc +129 -0
  399. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-matchers_test.cc +1341 -0
  400. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-internal-utils_test.cc +718 -0
  401. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-matchers_test.cc +6767 -0
  402. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-more-actions_test.cc +710 -0
  403. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-nice-strict_test.cc +511 -0
  404. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-port_test.cc +43 -0
  405. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-spec-builders_test.cc +2771 -0
  406. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_all_test.cc +51 -0
  407. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_ex_test.cc +81 -0
  408. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_leak_test.py +108 -0
  409. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_leak_test_.cc +100 -0
  410. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link2_test.cc +40 -0
  411. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.cc +40 -0
  412. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.h +691 -0
  413. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test.py +183 -0
  414. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_.cc +310 -0
  415. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_golden.txt +317 -0
  416. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_stress_test.cc +323 -0
  417. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_test.cc +262 -0
  418. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_test_utils.py +110 -0
  419. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CHANGES +157 -0
  420. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CMakeLists.txt +312 -0
  421. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CONTRIBUTORS +37 -0
  422. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/LICENSE +28 -0
  423. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/Makefile.am +339 -0
  424. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/README.md +341 -0
  425. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/cmake/gtest.pc.in +9 -0
  426. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/cmake/gtest_main.pc.in +10 -0
  427. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/cmake/internal_utils.cmake +280 -0
  428. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest.cbproj +138 -0
  429. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest.groupproj +54 -0
  430. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_all.cc +38 -0
  431. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_link.cc +40 -0
  432. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_main.cbproj +82 -0
  433. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_unittest.cbproj +88 -0
  434. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/configure.ac +68 -0
  435. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Pkgconfig.md +146 -0
  436. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/PumpManual.md +177 -0
  437. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/XcodeGuide.md +93 -0
  438. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/advanced.md +2416 -0
  439. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/faq.md +1092 -0
  440. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/primer.md +536 -0
  441. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/samples.md +14 -0
  442. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-death-test.h +342 -0
  443. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-message.h +249 -0
  444. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h +1438 -0
  445. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h.pump +501 -0
  446. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-printers.h +1082 -0
  447. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-spi.h +231 -0
  448. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-test-part.h +179 -0
  449. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-typed-test.h +264 -0
  450. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest.h +2332 -0
  451. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_pred_impl.h +357 -0
  452. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_prod.h +61 -0
  453. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest-port.h +70 -0
  454. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
  455. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest.h +45 -0
  456. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-death-test-internal.h +275 -0
  457. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-filepath.h +205 -0
  458. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-internal.h +1277 -0
  459. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-linked_ptr.h +243 -0
  460. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h +5139 -0
  461. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +279 -0
  462. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util.h +723 -0
  463. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port-arch.h +100 -0
  464. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port.h +2687 -0
  465. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-string.h +167 -0
  466. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-tuple.h +1020 -0
  467. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-tuple.h.pump +347 -0
  468. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h +3347 -0
  469. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h.pump +313 -0
  470. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/m4/acx_pthread.m4 +363 -0
  471. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/m4/gtest.m4 +74 -0
  472. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/make/Makefile +82 -0
  473. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest-md.sln +55 -0
  474. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest-md.vcxproj +149 -0
  475. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest-md.vcxproj.filters +18 -0
  476. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest.sln +55 -0
  477. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest.vcxproj +149 -0
  478. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest.vcxproj.filters +18 -0
  479. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_main-md.vcxproj +154 -0
  480. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_main-md.vcxproj.filters +18 -0
  481. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_main.vcxproj +162 -0
  482. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_main.vcxproj.filters +18 -0
  483. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_prod_test-md.vcxproj +199 -0
  484. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_prod_test-md.vcxproj.filters +26 -0
  485. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_prod_test.vcxproj +191 -0
  486. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_prod_test.vcxproj.filters +26 -0
  487. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_unittest-md.vcxproj +188 -0
  488. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_unittest-md.vcxproj.filters +18 -0
  489. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_unittest.vcxproj +180 -0
  490. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_unittest.vcxproj.filters +18 -0
  491. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/prime_tables.h +127 -0
  492. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1.cc +68 -0
  493. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1.h +43 -0
  494. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample10_unittest.cc +140 -0
  495. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1_unittest.cc +154 -0
  496. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2.cc +56 -0
  497. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2.h +85 -0
  498. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2_unittest.cc +110 -0
  499. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample3-inl.h +172 -0
  500. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample3_unittest.cc +152 -0
  501. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4.cc +46 -0
  502. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4.h +53 -0
  503. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4_unittest.cc +49 -0
  504. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample5_unittest.cc +199 -0
  505. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample6_unittest.cc +225 -0
  506. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample7_unittest.cc +118 -0
  507. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample8_unittest.cc +174 -0
  508. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample9_unittest.cc +157 -0
  509. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/common.py +83 -0
  510. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/fuse_gtest_files.py +253 -0
  511. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/gen_gtest_pred_impl.py +730 -0
  512. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/gtest-config.in +274 -0
  513. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/pump.py +855 -0
  514. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/release_docs.py +158 -0
  515. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/test/Makefile +59 -0
  516. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/upload.py +1387 -0
  517. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/upload_gtest.py +78 -0
  518. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-all.cc +48 -0
  519. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-death-test.cc +1536 -0
  520. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-filepath.cc +385 -0
  521. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-internal-inl.h +1175 -0
  522. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-port.cc +1277 -0
  523. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-printers.cc +458 -0
  524. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-test-part.cc +102 -0
  525. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-typed-test.cc +119 -0
  526. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest.cc +5846 -0
  527. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest_main.cc +38 -0
  528. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/BUILD.bazel +396 -0
  529. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-death-test_ex_test.cc +93 -0
  530. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-death-test_test.cc +1424 -0
  531. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-filepath_test.cc +652 -0
  532. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-linked_ptr_test.cc +154 -0
  533. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-listener_test.cc +311 -0
  534. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-message_test.cc +159 -0
  535. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-options_test.cc +213 -0
  536. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test2_test.cc +61 -0
  537. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.cc +1110 -0
  538. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.h +53 -0
  539. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-port_test.cc +1303 -0
  540. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-printers_test.cc +1737 -0
  541. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-test-part_test.cc +208 -0
  542. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-tuple_test.cc +320 -0
  543. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test2_test.cc +45 -0
  544. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test_test.cc +380 -0
  545. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test_test.h +66 -0
  546. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-unittest-api_test.cc +341 -0
  547. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_all_test.cc +47 -0
  548. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_assert_by_exception_test.cc +119 -0
  549. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest.py +210 -0
  550. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest_.cc +87 -0
  551. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test.py +235 -0
  552. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test_.cc +311 -0
  553. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test.py +129 -0
  554. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test_.cc +63 -0
  555. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test.py +119 -0
  556. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test_.cc +124 -0
  557. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_environment_test.cc +189 -0
  558. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest.py +638 -0
  559. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest_.cc +138 -0
  560. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_help_test.py +172 -0
  561. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_help_test_.cc +46 -0
  562. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_json_outfiles_test.py +162 -0
  563. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_json_output_unittest.py +611 -0
  564. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_json_test_utils.py +60 -0
  565. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_list_tests_unittest.py +207 -0
  566. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_list_tests_unittest_.cc +157 -0
  567. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_main_unittest.cc +45 -0
  568. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_no_test_unittest.cc +56 -0
  569. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test.py +344 -0
  570. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_.cc +1067 -0
  571. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_golden_lin.txt +781 -0
  572. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_pred_impl_unittest.cc +2427 -0
  573. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_premature_exit_test.cc +127 -0
  574. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_prod_test.cc +57 -0
  575. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_repeat_test.cc +236 -0
  576. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_shuffle_test.py +325 -0
  577. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_shuffle_test_.cc +103 -0
  578. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_sole_header_test.cc +57 -0
  579. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_stress_test.cc +250 -0
  580. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_test_utils.py +318 -0
  581. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_testbridge_test.py +65 -0
  582. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_testbridge_test_.cc +44 -0
  583. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_ex_test.cc +92 -0
  584. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_test.py +171 -0
  585. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_test_.cc +72 -0
  586. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test.py +69 -0
  587. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test_.cc +43 -0
  588. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_unittest.cc +7797 -0
  589. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile1_test_.cc +48 -0
  590. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile2_test_.cc +48 -0
  591. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfiles_test.py +140 -0
  592. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest.py +378 -0
  593. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest_.cc +179 -0
  594. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_test_utils.py +196 -0
  595. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/production.cc +36 -0
  596. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/production.h +55 -0
  597. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/DebugProject.xcconfig +30 -0
  598. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/FrameworkTarget.xcconfig +17 -0
  599. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/General.xcconfig +41 -0
  600. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/ReleaseProject.xcconfig +32 -0
  601. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/StaticLibraryTarget.xcconfig +18 -0
  602. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/TestTarget.xcconfig +8 -0
  603. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Resources/Info.plist +30 -0
  604. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/Info.plist +28 -0
  605. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj +457 -0
  606. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/runtests.sh +62 -0
  607. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget.cc +63 -0
  608. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget.h +59 -0
  609. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget_test.cc +68 -0
  610. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Scripts/runtests.sh +65 -0
  611. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Scripts/versiongenerate.py +100 -0
  612. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/gtest.xcodeproj/project.pbxproj +1182 -0
  613. data/ext/rj_schema/rapidjson/travis-doxygen.sh +128 -0
  614. metadata +613 -1
@@ -0,0 +1,98 @@
1
+ // Tencent is pleased to support the open source community by making RapidJSON available.
2
+ //
3
+ // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4
+ //
5
+ // Licensed under the MIT License (the "License"); you may not use this file except
6
+ // in compliance with the License. You may obtain a copy of the License at
7
+ //
8
+ // http://opensource.org/licenses/MIT
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software distributed
11
+ // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12
+ // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13
+ // specific language governing permissions and limitations under the License.
14
+
15
+ #include "unittest.h"
16
+ #include "rapidjson/internal/dtoa.h"
17
+
18
+ #ifdef __GNUC__
19
+ RAPIDJSON_DIAG_PUSH
20
+ RAPIDJSON_DIAG_OFF(type-limits)
21
+ #endif
22
+
23
+ using namespace rapidjson::internal;
24
+
25
+ TEST(dtoa, normal) {
26
+ char buffer[30];
27
+
28
+ #define TEST_DTOA(d, a)\
29
+ *dtoa(d, buffer) = '\0';\
30
+ EXPECT_STREQ(a, buffer)
31
+
32
+ TEST_DTOA(0.0, "0.0");
33
+ TEST_DTOA(-0.0, "-0.0");
34
+ TEST_DTOA(1.0, "1.0");
35
+ TEST_DTOA(-1.0, "-1.0");
36
+ TEST_DTOA(1.2345, "1.2345");
37
+ TEST_DTOA(1.2345678, "1.2345678");
38
+ TEST_DTOA(0.123456789012, "0.123456789012");
39
+ TEST_DTOA(1234567.8, "1234567.8");
40
+ TEST_DTOA(-79.39773355813419, "-79.39773355813419");
41
+ TEST_DTOA(0.000001, "0.000001");
42
+ TEST_DTOA(0.0000001, "1e-7");
43
+ TEST_DTOA(1e30, "1e30");
44
+ TEST_DTOA(1.234567890123456e30, "1.234567890123456e30");
45
+ TEST_DTOA(5e-324, "5e-324"); // Min subnormal positive double
46
+ TEST_DTOA(2.225073858507201e-308, "2.225073858507201e-308"); // Max subnormal positive double
47
+ TEST_DTOA(2.2250738585072014e-308, "2.2250738585072014e-308"); // Min normal positive double
48
+ TEST_DTOA(1.7976931348623157e308, "1.7976931348623157e308"); // Max double
49
+
50
+ #undef TEST_DTOA
51
+ }
52
+
53
+ TEST(dtoa, maxDecimalPlaces) {
54
+ char buffer[30];
55
+
56
+ #define TEST_DTOA(m, d, a)\
57
+ *dtoa(d, buffer, m) = '\0';\
58
+ EXPECT_STREQ(a, buffer)
59
+
60
+ TEST_DTOA(3, 0.0, "0.0");
61
+ TEST_DTOA(1, 0.0, "0.0");
62
+ TEST_DTOA(3, -0.0, "-0.0");
63
+ TEST_DTOA(3, 1.0, "1.0");
64
+ TEST_DTOA(3, -1.0, "-1.0");
65
+ TEST_DTOA(3, 1.2345, "1.234");
66
+ TEST_DTOA(2, 1.2345, "1.23");
67
+ TEST_DTOA(1, 1.2345, "1.2");
68
+ TEST_DTOA(3, 1.2345678, "1.234");
69
+ TEST_DTOA(3, 1.0001, "1.0");
70
+ TEST_DTOA(2, 1.0001, "1.0");
71
+ TEST_DTOA(1, 1.0001, "1.0");
72
+ TEST_DTOA(3, 0.123456789012, "0.123");
73
+ TEST_DTOA(2, 0.123456789012, "0.12");
74
+ TEST_DTOA(1, 0.123456789012, "0.1");
75
+ TEST_DTOA(4, 0.0001, "0.0001");
76
+ TEST_DTOA(3, 0.0001, "0.0");
77
+ TEST_DTOA(2, 0.0001, "0.0");
78
+ TEST_DTOA(1, 0.0001, "0.0");
79
+ TEST_DTOA(3, 1234567.8, "1234567.8");
80
+ TEST_DTOA(3, 1e30, "1e30");
81
+ TEST_DTOA(3, 5e-324, "0.0"); // Min subnormal positive double
82
+ TEST_DTOA(3, 2.225073858507201e-308, "0.0"); // Max subnormal positive double
83
+ TEST_DTOA(3, 2.2250738585072014e-308, "0.0"); // Min normal positive double
84
+ TEST_DTOA(3, 1.7976931348623157e308, "1.7976931348623157e308"); // Max double
85
+ TEST_DTOA(5, -0.14000000000000001, "-0.14");
86
+ TEST_DTOA(4, -0.14000000000000001, "-0.14");
87
+ TEST_DTOA(3, -0.14000000000000001, "-0.14");
88
+ TEST_DTOA(3, -0.10000000000000001, "-0.1");
89
+ TEST_DTOA(2, -0.10000000000000001, "-0.1");
90
+ TEST_DTOA(1, -0.10000000000000001, "-0.1");
91
+
92
+ #undef TEST_DTOA
93
+ }
94
+
95
+
96
+ #ifdef __GNUC__
97
+ RAPIDJSON_DIAG_POP
98
+ #endif
@@ -0,0 +1,313 @@
1
+ // Tencent is pleased to support the open source community by making RapidJSON available.
2
+ //
3
+ // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4
+ //
5
+ // Licensed under the MIT License (the "License"); you may not use this file except
6
+ // in compliance with the License. You may obtain a copy of the License at
7
+ //
8
+ // http://opensource.org/licenses/MIT
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software distributed
11
+ // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12
+ // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13
+ // specific language governing permissions and limitations under the License.
14
+
15
+ #include "unittest.h"
16
+ #include "rapidjson/filereadstream.h"
17
+ #include "rapidjson/filewritestream.h"
18
+ #include "rapidjson/encodedstream.h"
19
+ #include "rapidjson/stringbuffer.h"
20
+ #include "rapidjson/memorystream.h"
21
+ #include "rapidjson/memorybuffer.h"
22
+
23
+ using namespace rapidjson;
24
+
25
+ class EncodedStreamTest : public ::testing::Test {
26
+ public:
27
+ EncodedStreamTest() : json_(), length_() {}
28
+ virtual ~EncodedStreamTest();
29
+
30
+ virtual void SetUp() {
31
+ json_ = ReadFile("utf8.json", true, &length_);
32
+ }
33
+
34
+ virtual void TearDown() {
35
+ free(json_);
36
+ json_ = 0;
37
+ }
38
+
39
+ private:
40
+ EncodedStreamTest(const EncodedStreamTest&);
41
+ EncodedStreamTest& operator=(const EncodedStreamTest&);
42
+
43
+ protected:
44
+ static FILE* Open(const char* filename) {
45
+ const char *paths[] = {
46
+ "encodings",
47
+ "bin/encodings",
48
+ "../bin/encodings",
49
+ "../../bin/encodings",
50
+ "../../../bin/encodings"
51
+ };
52
+ char buffer[1024];
53
+ for (size_t i = 0; i < sizeof(paths) / sizeof(paths[0]); i++) {
54
+ sprintf(buffer, "%s/%s", paths[i], filename);
55
+ FILE *fp = fopen(buffer, "rb");
56
+ if (fp)
57
+ return fp;
58
+ }
59
+ return 0;
60
+ }
61
+
62
+ static char *ReadFile(const char* filename, bool appendPath, size_t* outLength) {
63
+ FILE *fp = appendPath ? Open(filename) : fopen(filename, "rb");
64
+
65
+ if (!fp) {
66
+ *outLength = 0;
67
+ return 0;
68
+ }
69
+
70
+ fseek(fp, 0, SEEK_END);
71
+ *outLength = static_cast<size_t>(ftell(fp));
72
+ fseek(fp, 0, SEEK_SET);
73
+ char* buffer = static_cast<char*>(malloc(*outLength + 1));
74
+ size_t readLength = fread(buffer, 1, *outLength, fp);
75
+ buffer[readLength] = '\0';
76
+ fclose(fp);
77
+ return buffer;
78
+ }
79
+
80
+ template <typename FileEncoding, typename MemoryEncoding>
81
+ void TestEncodedInputStream(const char* filename) {
82
+ // Test FileReadStream
83
+ {
84
+ char buffer[16];
85
+ FILE *fp = Open(filename);
86
+ ASSERT_TRUE(fp != 0);
87
+ FileReadStream fs(fp, buffer, sizeof(buffer));
88
+ EncodedInputStream<FileEncoding, FileReadStream> eis(fs);
89
+ StringStream s(json_);
90
+
91
+ while (eis.Peek() != '\0') {
92
+ unsigned expected, actual;
93
+ EXPECT_TRUE(UTF8<>::Decode(s, &expected));
94
+ EXPECT_TRUE(MemoryEncoding::Decode(eis, &actual));
95
+ EXPECT_EQ(expected, actual);
96
+ }
97
+ EXPECT_EQ('\0', s.Peek());
98
+ fclose(fp);
99
+ }
100
+
101
+ // Test MemoryStream
102
+ {
103
+ size_t size;
104
+ char* data = ReadFile(filename, true, &size);
105
+ MemoryStream ms(data, size);
106
+ EncodedInputStream<FileEncoding, MemoryStream> eis(ms);
107
+ StringStream s(json_);
108
+
109
+ while (eis.Peek() != '\0') {
110
+ unsigned expected, actual;
111
+ EXPECT_TRUE(UTF8<>::Decode(s, &expected));
112
+ EXPECT_TRUE(MemoryEncoding::Decode(eis, &actual));
113
+ EXPECT_EQ(expected, actual);
114
+ }
115
+ EXPECT_EQ('\0', s.Peek());
116
+ free(data);
117
+ EXPECT_EQ(size, eis.Tell());
118
+ }
119
+ }
120
+
121
+ void TestAutoUTFInputStream(const char *filename, bool expectHasBOM) {
122
+ // Test FileReadStream
123
+ {
124
+ char buffer[16];
125
+ FILE *fp = Open(filename);
126
+ ASSERT_TRUE(fp != 0);
127
+ FileReadStream fs(fp, buffer, sizeof(buffer));
128
+ AutoUTFInputStream<unsigned, FileReadStream> eis(fs);
129
+ EXPECT_EQ(expectHasBOM, eis.HasBOM());
130
+ StringStream s(json_);
131
+ while (eis.Peek() != '\0') {
132
+ unsigned expected, actual;
133
+ EXPECT_TRUE(UTF8<>::Decode(s, &expected));
134
+ EXPECT_TRUE(AutoUTF<unsigned>::Decode(eis, &actual));
135
+ EXPECT_EQ(expected, actual);
136
+ }
137
+ EXPECT_EQ('\0', s.Peek());
138
+ fclose(fp);
139
+ }
140
+
141
+ // Test MemoryStream
142
+ {
143
+ size_t size;
144
+ char* data = ReadFile(filename, true, &size);
145
+ MemoryStream ms(data, size);
146
+ AutoUTFInputStream<unsigned, MemoryStream> eis(ms);
147
+ EXPECT_EQ(expectHasBOM, eis.HasBOM());
148
+ StringStream s(json_);
149
+
150
+ while (eis.Peek() != '\0') {
151
+ unsigned expected, actual;
152
+ EXPECT_TRUE(UTF8<>::Decode(s, &expected));
153
+ EXPECT_TRUE(AutoUTF<unsigned>::Decode(eis, &actual));
154
+ EXPECT_EQ(expected, actual);
155
+ }
156
+ EXPECT_EQ('\0', s.Peek());
157
+ free(data);
158
+ EXPECT_EQ(size, eis.Tell());
159
+ }
160
+ }
161
+
162
+ template <typename FileEncoding, typename MemoryEncoding>
163
+ void TestEncodedOutputStream(const char* expectedFilename, bool putBOM) {
164
+ // Test FileWriteStream
165
+ {
166
+ char filename[L_tmpnam];
167
+ FILE* fp = TempFile(filename);
168
+ char buffer[16];
169
+ FileWriteStream os(fp, buffer, sizeof(buffer));
170
+ EncodedOutputStream<FileEncoding, FileWriteStream> eos(os, putBOM);
171
+ StringStream s(json_);
172
+ while (s.Peek() != '\0') {
173
+ bool success = Transcoder<UTF8<>, MemoryEncoding>::Transcode(s, eos);
174
+ EXPECT_TRUE(success);
175
+ }
176
+ eos.Flush();
177
+ fclose(fp);
178
+ EXPECT_TRUE(CompareFile(filename, expectedFilename));
179
+ remove(filename);
180
+ }
181
+
182
+ // Test MemoryBuffer
183
+ {
184
+ MemoryBuffer mb;
185
+ EncodedOutputStream<FileEncoding, MemoryBuffer> eos(mb, putBOM);
186
+ StringStream s(json_);
187
+ while (s.Peek() != '\0') {
188
+ bool success = Transcoder<UTF8<>, MemoryEncoding>::Transcode(s, eos);
189
+ EXPECT_TRUE(success);
190
+ }
191
+ eos.Flush();
192
+ EXPECT_TRUE(CompareBufferFile(mb.GetBuffer(), mb.GetSize(), expectedFilename));
193
+ }
194
+ }
195
+
196
+ void TestAutoUTFOutputStream(UTFType type, bool putBOM, const char *expectedFilename) {
197
+ // Test FileWriteStream
198
+ {
199
+ char filename[L_tmpnam];
200
+ FILE* fp = TempFile(filename);
201
+
202
+ char buffer[16];
203
+ FileWriteStream os(fp, buffer, sizeof(buffer));
204
+ AutoUTFOutputStream<unsigned, FileWriteStream> eos(os, type, putBOM);
205
+ StringStream s(json_);
206
+ while (s.Peek() != '\0') {
207
+ bool success = Transcoder<UTF8<>, AutoUTF<unsigned> >::Transcode(s, eos);
208
+ EXPECT_TRUE(success);
209
+ }
210
+ eos.Flush();
211
+ fclose(fp);
212
+ EXPECT_TRUE(CompareFile(filename, expectedFilename));
213
+ remove(filename);
214
+ }
215
+
216
+ // Test MemoryBuffer
217
+ {
218
+ MemoryBuffer mb;
219
+ AutoUTFOutputStream<unsigned, MemoryBuffer> eos(mb, type, putBOM);
220
+ StringStream s(json_);
221
+ while (s.Peek() != '\0') {
222
+ bool success = Transcoder<UTF8<>, AutoUTF<unsigned> >::Transcode(s, eos);
223
+ EXPECT_TRUE(success);
224
+ }
225
+ eos.Flush();
226
+ EXPECT_TRUE(CompareBufferFile(mb.GetBuffer(), mb.GetSize(), expectedFilename));
227
+ }
228
+ }
229
+
230
+ bool CompareFile(const char* filename, const char* expectedFilename) {
231
+ size_t actualLength, expectedLength;
232
+ char* actualBuffer = ReadFile(filename, false, &actualLength);
233
+ char* expectedBuffer = ReadFile(expectedFilename, true, &expectedLength);
234
+ bool ret = (expectedLength == actualLength) && memcmp(expectedBuffer, actualBuffer, actualLength) == 0;
235
+ free(actualBuffer);
236
+ free(expectedBuffer);
237
+ return ret;
238
+ }
239
+
240
+ bool CompareBufferFile(const char* actualBuffer, size_t actualLength, const char* expectedFilename) {
241
+ size_t expectedLength;
242
+ char* expectedBuffer = ReadFile(expectedFilename, true, &expectedLength);
243
+ bool ret = (expectedLength == actualLength) && memcmp(expectedBuffer, actualBuffer, actualLength) == 0;
244
+ free(expectedBuffer);
245
+ return ret;
246
+ }
247
+
248
+ char *json_;
249
+ size_t length_;
250
+ };
251
+
252
+ EncodedStreamTest::~EncodedStreamTest() {}
253
+
254
+ TEST_F(EncodedStreamTest, EncodedInputStream) {
255
+ TestEncodedInputStream<UTF8<>, UTF8<> >("utf8.json");
256
+ TestEncodedInputStream<UTF8<>, UTF8<> >("utf8bom.json");
257
+ TestEncodedInputStream<UTF16LE<>, UTF16<> >("utf16le.json");
258
+ TestEncodedInputStream<UTF16LE<>, UTF16<> >("utf16lebom.json");
259
+ TestEncodedInputStream<UTF16BE<>, UTF16<> >("utf16be.json");
260
+ TestEncodedInputStream<UTF16BE<>, UTF16<> >("utf16bebom.json");
261
+ TestEncodedInputStream<UTF32LE<>, UTF32<> >("utf32le.json");
262
+ TestEncodedInputStream<UTF32LE<>, UTF32<> >("utf32lebom.json");
263
+ TestEncodedInputStream<UTF32BE<>, UTF32<> >("utf32be.json");
264
+ TestEncodedInputStream<UTF32BE<>, UTF32<> >("utf32bebom.json");
265
+ }
266
+
267
+ TEST_F(EncodedStreamTest, AutoUTFInputStream) {
268
+ TestAutoUTFInputStream("utf8.json", false);
269
+ TestAutoUTFInputStream("utf8bom.json", true);
270
+ TestAutoUTFInputStream("utf16le.json", false);
271
+ TestAutoUTFInputStream("utf16lebom.json",true);
272
+ TestAutoUTFInputStream("utf16be.json", false);
273
+ TestAutoUTFInputStream("utf16bebom.json",true);
274
+ TestAutoUTFInputStream("utf32le.json", false);
275
+ TestAutoUTFInputStream("utf32lebom.json",true);
276
+ TestAutoUTFInputStream("utf32be.json", false);
277
+ TestAutoUTFInputStream("utf32bebom.json", true);
278
+
279
+ {
280
+ // Auto detection fail, use user defined UTF type
281
+ const char json[] = "{ }";
282
+ MemoryStream ms(json, sizeof(json));
283
+ AutoUTFInputStream<unsigned, MemoryStream> eis(ms, kUTF8);
284
+ EXPECT_FALSE(eis.HasBOM());
285
+ EXPECT_EQ(kUTF8, eis.GetType());
286
+ }
287
+ }
288
+
289
+ TEST_F(EncodedStreamTest, EncodedOutputStream) {
290
+ TestEncodedOutputStream<UTF8<>, UTF8<> >("utf8.json", false);
291
+ TestEncodedOutputStream<UTF8<>, UTF8<> >("utf8bom.json", true);
292
+ TestEncodedOutputStream<UTF16LE<>, UTF16<> >("utf16le.json", false);
293
+ TestEncodedOutputStream<UTF16LE<>, UTF16<> >("utf16lebom.json",true);
294
+ TestEncodedOutputStream<UTF16BE<>, UTF16<> >("utf16be.json", false);
295
+ TestEncodedOutputStream<UTF16BE<>, UTF16<> >("utf16bebom.json",true);
296
+ TestEncodedOutputStream<UTF32LE<>, UTF32<> >("utf32le.json", false);
297
+ TestEncodedOutputStream<UTF32LE<>, UTF32<> >("utf32lebom.json",true);
298
+ TestEncodedOutputStream<UTF32BE<>, UTF32<> >("utf32be.json", false);
299
+ TestEncodedOutputStream<UTF32BE<>, UTF32<> >("utf32bebom.json",true);
300
+ }
301
+
302
+ TEST_F(EncodedStreamTest, AutoUTFOutputStream) {
303
+ TestAutoUTFOutputStream(kUTF8, false, "utf8.json");
304
+ TestAutoUTFOutputStream(kUTF8, true, "utf8bom.json");
305
+ TestAutoUTFOutputStream(kUTF16LE, false, "utf16le.json");
306
+ TestAutoUTFOutputStream(kUTF16LE, true, "utf16lebom.json");
307
+ TestAutoUTFOutputStream(kUTF16BE, false, "utf16be.json");
308
+ TestAutoUTFOutputStream(kUTF16BE, true, "utf16bebom.json");
309
+ TestAutoUTFOutputStream(kUTF32LE, false, "utf32le.json");
310
+ TestAutoUTFOutputStream(kUTF32LE, true, "utf32lebom.json");
311
+ TestAutoUTFOutputStream(kUTF32BE, false, "utf32be.json");
312
+ TestAutoUTFOutputStream(kUTF32BE, true, "utf32bebom.json");
313
+ }
@@ -0,0 +1,451 @@
1
+ // Tencent is pleased to support the open source community by making RapidJSON available.
2
+ //
3
+ // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4
+ //
5
+ // Licensed under the MIT License (the "License"); you may not use this file except
6
+ // in compliance with the License. You may obtain a copy of the License at
7
+ //
8
+ // http://opensource.org/licenses/MIT
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software distributed
11
+ // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12
+ // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13
+ // specific language governing permissions and limitations under the License.
14
+
15
+ #include "unittest.h"
16
+ #include "rapidjson/filereadstream.h"
17
+ #include "rapidjson/filewritestream.h"
18
+ #include "rapidjson/encodedstream.h"
19
+ #include "rapidjson/stringbuffer.h"
20
+
21
+ using namespace rapidjson;
22
+
23
+ // Verification of encoders/decoders with Hoehrmann's UTF8 decoder
24
+
25
+ // http://www.unicode.org/Public/UNIDATA/Blocks.txt
26
+ static const unsigned kCodepointRanges[] = {
27
+ 0x0000, 0x007F, // Basic Latin
28
+ 0x0080, 0x00FF, // Latin-1 Supplement
29
+ 0x0100, 0x017F, // Latin Extended-A
30
+ 0x0180, 0x024F, // Latin Extended-B
31
+ 0x0250, 0x02AF, // IPA Extensions
32
+ 0x02B0, 0x02FF, // Spacing Modifier Letters
33
+ 0x0300, 0x036F, // Combining Diacritical Marks
34
+ 0x0370, 0x03FF, // Greek and Coptic
35
+ 0x0400, 0x04FF, // Cyrillic
36
+ 0x0500, 0x052F, // Cyrillic Supplement
37
+ 0x0530, 0x058F, // Armenian
38
+ 0x0590, 0x05FF, // Hebrew
39
+ 0x0600, 0x06FF, // Arabic
40
+ 0x0700, 0x074F, // Syriac
41
+ 0x0750, 0x077F, // Arabic Supplement
42
+ 0x0780, 0x07BF, // Thaana
43
+ 0x07C0, 0x07FF, // NKo
44
+ 0x0800, 0x083F, // Samaritan
45
+ 0x0840, 0x085F, // Mandaic
46
+ 0x0900, 0x097F, // Devanagari
47
+ 0x0980, 0x09FF, // Bengali
48
+ 0x0A00, 0x0A7F, // Gurmukhi
49
+ 0x0A80, 0x0AFF, // Gujarati
50
+ 0x0B00, 0x0B7F, // Oriya
51
+ 0x0B80, 0x0BFF, // Tamil
52
+ 0x0C00, 0x0C7F, // Telugu
53
+ 0x0C80, 0x0CFF, // Kannada
54
+ 0x0D00, 0x0D7F, // Malayalam
55
+ 0x0D80, 0x0DFF, // Sinhala
56
+ 0x0E00, 0x0E7F, // Thai
57
+ 0x0E80, 0x0EFF, // Lao
58
+ 0x0F00, 0x0FFF, // Tibetan
59
+ 0x1000, 0x109F, // Myanmar
60
+ 0x10A0, 0x10FF, // Georgian
61
+ 0x1100, 0x11FF, // Hangul Jamo
62
+ 0x1200, 0x137F, // Ethiopic
63
+ 0x1380, 0x139F, // Ethiopic Supplement
64
+ 0x13A0, 0x13FF, // Cherokee
65
+ 0x1400, 0x167F, // Unified Canadian Aboriginal Syllabics
66
+ 0x1680, 0x169F, // Ogham
67
+ 0x16A0, 0x16FF, // Runic
68
+ 0x1700, 0x171F, // Tagalog
69
+ 0x1720, 0x173F, // Hanunoo
70
+ 0x1740, 0x175F, // Buhid
71
+ 0x1760, 0x177F, // Tagbanwa
72
+ 0x1780, 0x17FF, // Khmer
73
+ 0x1800, 0x18AF, // Mongolian
74
+ 0x18B0, 0x18FF, // Unified Canadian Aboriginal Syllabics Extended
75
+ 0x1900, 0x194F, // Limbu
76
+ 0x1950, 0x197F, // Tai Le
77
+ 0x1980, 0x19DF, // New Tai Lue
78
+ 0x19E0, 0x19FF, // Khmer Symbols
79
+ 0x1A00, 0x1A1F, // Buginese
80
+ 0x1A20, 0x1AAF, // Tai Tham
81
+ 0x1B00, 0x1B7F, // Balinese
82
+ 0x1B80, 0x1BBF, // Sundanese
83
+ 0x1BC0, 0x1BFF, // Batak
84
+ 0x1C00, 0x1C4F, // Lepcha
85
+ 0x1C50, 0x1C7F, // Ol Chiki
86
+ 0x1CD0, 0x1CFF, // Vedic Extensions
87
+ 0x1D00, 0x1D7F, // Phonetic Extensions
88
+ 0x1D80, 0x1DBF, // Phonetic Extensions Supplement
89
+ 0x1DC0, 0x1DFF, // Combining Diacritical Marks Supplement
90
+ 0x1E00, 0x1EFF, // Latin Extended Additional
91
+ 0x1F00, 0x1FFF, // Greek Extended
92
+ 0x2000, 0x206F, // General Punctuation
93
+ 0x2070, 0x209F, // Superscripts and Subscripts
94
+ 0x20A0, 0x20CF, // Currency Symbols
95
+ 0x20D0, 0x20FF, // Combining Diacritical Marks for Symbols
96
+ 0x2100, 0x214F, // Letterlike Symbols
97
+ 0x2150, 0x218F, // Number Forms
98
+ 0x2190, 0x21FF, // Arrows
99
+ 0x2200, 0x22FF, // Mathematical Operators
100
+ 0x2300, 0x23FF, // Miscellaneous Technical
101
+ 0x2400, 0x243F, // Control Pictures
102
+ 0x2440, 0x245F, // Optical Character Recognition
103
+ 0x2460, 0x24FF, // Enclosed Alphanumerics
104
+ 0x2500, 0x257F, // Box Drawing
105
+ 0x2580, 0x259F, // Block Elements
106
+ 0x25A0, 0x25FF, // Geometric Shapes
107
+ 0x2600, 0x26FF, // Miscellaneous Symbols
108
+ 0x2700, 0x27BF, // Dingbats
109
+ 0x27C0, 0x27EF, // Miscellaneous Mathematical Symbols-A
110
+ 0x27F0, 0x27FF, // Supplemental Arrows-A
111
+ 0x2800, 0x28FF, // Braille Patterns
112
+ 0x2900, 0x297F, // Supplemental Arrows-B
113
+ 0x2980, 0x29FF, // Miscellaneous Mathematical Symbols-B
114
+ 0x2A00, 0x2AFF, // Supplemental Mathematical Operators
115
+ 0x2B00, 0x2BFF, // Miscellaneous Symbols and Arrows
116
+ 0x2C00, 0x2C5F, // Glagolitic
117
+ 0x2C60, 0x2C7F, // Latin Extended-C
118
+ 0x2C80, 0x2CFF, // Coptic
119
+ 0x2D00, 0x2D2F, // Georgian Supplement
120
+ 0x2D30, 0x2D7F, // Tifinagh
121
+ 0x2D80, 0x2DDF, // Ethiopic Extended
122
+ 0x2DE0, 0x2DFF, // Cyrillic Extended-A
123
+ 0x2E00, 0x2E7F, // Supplemental Punctuation
124
+ 0x2E80, 0x2EFF, // CJK Radicals Supplement
125
+ 0x2F00, 0x2FDF, // Kangxi Radicals
126
+ 0x2FF0, 0x2FFF, // Ideographic Description Characters
127
+ 0x3000, 0x303F, // CJK Symbols and Punctuation
128
+ 0x3040, 0x309F, // Hiragana
129
+ 0x30A0, 0x30FF, // Katakana
130
+ 0x3100, 0x312F, // Bopomofo
131
+ 0x3130, 0x318F, // Hangul Compatibility Jamo
132
+ 0x3190, 0x319F, // Kanbun
133
+ 0x31A0, 0x31BF, // Bopomofo Extended
134
+ 0x31C0, 0x31EF, // CJK Strokes
135
+ 0x31F0, 0x31FF, // Katakana Phonetic Extensions
136
+ 0x3200, 0x32FF, // Enclosed CJK Letters and Months
137
+ 0x3300, 0x33FF, // CJK Compatibility
138
+ 0x3400, 0x4DBF, // CJK Unified Ideographs Extension A
139
+ 0x4DC0, 0x4DFF, // Yijing Hexagram Symbols
140
+ 0x4E00, 0x9FFF, // CJK Unified Ideographs
141
+ 0xA000, 0xA48F, // Yi Syllables
142
+ 0xA490, 0xA4CF, // Yi Radicals
143
+ 0xA4D0, 0xA4FF, // Lisu
144
+ 0xA500, 0xA63F, // Vai
145
+ 0xA640, 0xA69F, // Cyrillic Extended-B
146
+ 0xA6A0, 0xA6FF, // Bamum
147
+ 0xA700, 0xA71F, // Modifier Tone Letters
148
+ 0xA720, 0xA7FF, // Latin Extended-D
149
+ 0xA800, 0xA82F, // Syloti Nagri
150
+ 0xA830, 0xA83F, // Common Indic Number Forms
151
+ 0xA840, 0xA87F, // Phags-pa
152
+ 0xA880, 0xA8DF, // Saurashtra
153
+ 0xA8E0, 0xA8FF, // Devanagari Extended
154
+ 0xA900, 0xA92F, // Kayah Li
155
+ 0xA930, 0xA95F, // Rejang
156
+ 0xA960, 0xA97F, // Hangul Jamo Extended-A
157
+ 0xA980, 0xA9DF, // Javanese
158
+ 0xAA00, 0xAA5F, // Cham
159
+ 0xAA60, 0xAA7F, // Myanmar Extended-A
160
+ 0xAA80, 0xAADF, // Tai Viet
161
+ 0xAB00, 0xAB2F, // Ethiopic Extended-A
162
+ 0xABC0, 0xABFF, // Meetei Mayek
163
+ 0xAC00, 0xD7AF, // Hangul Syllables
164
+ 0xD7B0, 0xD7FF, // Hangul Jamo Extended-B
165
+ //0xD800, 0xDB7F, // High Surrogates
166
+ //0xDB80, 0xDBFF, // High Private Use Surrogates
167
+ //0xDC00, 0xDFFF, // Low Surrogates
168
+ 0xE000, 0xF8FF, // Private Use Area
169
+ 0xF900, 0xFAFF, // CJK Compatibility Ideographs
170
+ 0xFB00, 0xFB4F, // Alphabetic Presentation Forms
171
+ 0xFB50, 0xFDFF, // Arabic Presentation Forms-A
172
+ 0xFE00, 0xFE0F, // Variation Selectors
173
+ 0xFE10, 0xFE1F, // Vertical Forms
174
+ 0xFE20, 0xFE2F, // Combining Half Marks
175
+ 0xFE30, 0xFE4F, // CJK Compatibility Forms
176
+ 0xFE50, 0xFE6F, // Small Form Variants
177
+ 0xFE70, 0xFEFF, // Arabic Presentation Forms-B
178
+ 0xFF00, 0xFFEF, // Halfwidth and Fullwidth Forms
179
+ 0xFFF0, 0xFFFF, // Specials
180
+ 0x10000, 0x1007F, // Linear B Syllabary
181
+ 0x10080, 0x100FF, // Linear B Ideograms
182
+ 0x10100, 0x1013F, // Aegean Numbers
183
+ 0x10140, 0x1018F, // Ancient Greek Numbers
184
+ 0x10190, 0x101CF, // Ancient Symbols
185
+ 0x101D0, 0x101FF, // Phaistos Disc
186
+ 0x10280, 0x1029F, // Lycian
187
+ 0x102A0, 0x102DF, // Carian
188
+ 0x10300, 0x1032F, // Old Italic
189
+ 0x10330, 0x1034F, // Gothic
190
+ 0x10380, 0x1039F, // Ugaritic
191
+ 0x103A0, 0x103DF, // Old Persian
192
+ 0x10400, 0x1044F, // Deseret
193
+ 0x10450, 0x1047F, // Shavian
194
+ 0x10480, 0x104AF, // Osmanya
195
+ 0x10800, 0x1083F, // Cypriot Syllabary
196
+ 0x10840, 0x1085F, // Imperial Aramaic
197
+ 0x10900, 0x1091F, // Phoenician
198
+ 0x10920, 0x1093F, // Lydian
199
+ 0x10A00, 0x10A5F, // Kharoshthi
200
+ 0x10A60, 0x10A7F, // Old South Arabian
201
+ 0x10B00, 0x10B3F, // Avestan
202
+ 0x10B40, 0x10B5F, // Inscriptional Parthian
203
+ 0x10B60, 0x10B7F, // Inscriptional Pahlavi
204
+ 0x10C00, 0x10C4F, // Old Turkic
205
+ 0x10E60, 0x10E7F, // Rumi Numeral Symbols
206
+ 0x11000, 0x1107F, // Brahmi
207
+ 0x11080, 0x110CF, // Kaithi
208
+ 0x12000, 0x123FF, // Cuneiform
209
+ 0x12400, 0x1247F, // Cuneiform Numbers and Punctuation
210
+ 0x13000, 0x1342F, // Egyptian Hieroglyphs
211
+ 0x16800, 0x16A3F, // Bamum Supplement
212
+ 0x1B000, 0x1B0FF, // Kana Supplement
213
+ 0x1D000, 0x1D0FF, // Byzantine Musical Symbols
214
+ 0x1D100, 0x1D1FF, // Musical Symbols
215
+ 0x1D200, 0x1D24F, // Ancient Greek Musical Notation
216
+ 0x1D300, 0x1D35F, // Tai Xuan Jing Symbols
217
+ 0x1D360, 0x1D37F, // Counting Rod Numerals
218
+ 0x1D400, 0x1D7FF, // Mathematical Alphanumeric Symbols
219
+ 0x1F000, 0x1F02F, // Mahjong Tiles
220
+ 0x1F030, 0x1F09F, // Domino Tiles
221
+ 0x1F0A0, 0x1F0FF, // Playing Cards
222
+ 0x1F100, 0x1F1FF, // Enclosed Alphanumeric Supplement
223
+ 0x1F200, 0x1F2FF, // Enclosed Ideographic Supplement
224
+ 0x1F300, 0x1F5FF, // Miscellaneous Symbols And Pictographs
225
+ 0x1F600, 0x1F64F, // Emoticons
226
+ 0x1F680, 0x1F6FF, // Transport And Map Symbols
227
+ 0x1F700, 0x1F77F, // Alchemical Symbols
228
+ 0x20000, 0x2A6DF, // CJK Unified Ideographs Extension B
229
+ 0x2A700, 0x2B73F, // CJK Unified Ideographs Extension C
230
+ 0x2B740, 0x2B81F, // CJK Unified Ideographs Extension D
231
+ 0x2F800, 0x2FA1F, // CJK Compatibility Ideographs Supplement
232
+ 0xE0000, 0xE007F, // Tags
233
+ 0xE0100, 0xE01EF, // Variation Selectors Supplement
234
+ 0xF0000, 0xFFFFF, // Supplementary Private Use Area-A
235
+ 0x100000, 0x10FFFF, // Supplementary Private Use Area-B
236
+ 0xFFFFFFFF
237
+ };
238
+
239
+ // Copyright (c) 2008-2010 Bjoern Hoehrmann <bjoern@hoehrmann.de>
240
+ // See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details.
241
+
242
+ #define UTF8_ACCEPT 0u
243
+
244
+ static const unsigned char utf8d[] = {
245
+ // The first part of the table maps bytes to character classes that
246
+ // to reduce the size of the transition table and create bitmasks.
247
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
248
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
249
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
250
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
251
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
252
+ 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
253
+ 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
254
+ 10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3, 11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8,
255
+
256
+ // The second part is a transition table that maps a combination
257
+ // of a state of the automaton and a character class to a state.
258
+ 0,12,24,36,60,96,84,12,12,12,48,72, 12,12,12,12,12,12,12,12,12,12,12,12,
259
+ 12, 0,12,12,12,12,12, 0,12, 0,12,12, 12,24,12,12,12,12,12,24,12,24,12,12,
260
+ 12,12,12,12,12,12,12,24,12,12,12,12, 12,24,12,12,12,12,12,12,12,24,12,12,
261
+ 12,12,12,12,12,12,12,36,12,36,12,12, 12,36,12,12,12,12,12,36,12,36,12,12,
262
+ 12,36,12,12,12,12,12,12,12,12,12,12,
263
+ };
264
+
265
+ static unsigned inline decode(unsigned* state, unsigned* codep, unsigned byte) {
266
+ unsigned type = utf8d[byte];
267
+
268
+ *codep = (*state != UTF8_ACCEPT) ?
269
+ (byte & 0x3fu) | (*codep << 6) :
270
+ (0xffu >> type) & (byte);
271
+
272
+ *state = utf8d[256 + *state + type];
273
+ return *state;
274
+ }
275
+
276
+ //static bool IsUTF8(unsigned char* s) {
277
+ // unsigned codepoint, state = 0;
278
+ //
279
+ // while (*s)
280
+ // decode(&state, &codepoint, *s++);
281
+ //
282
+ // return state == UTF8_ACCEPT;
283
+ //}
284
+
285
+ TEST(EncodingsTest, UTF8) {
286
+ StringBuffer os, os2;
287
+ for (const unsigned* range = kCodepointRanges; *range != 0xFFFFFFFF; range += 2) {
288
+ for (unsigned codepoint = range[0]; codepoint <= range[1]; ++codepoint) {
289
+ os.Clear();
290
+ UTF8<>::Encode(os, codepoint);
291
+ const char* encodedStr = os.GetString();
292
+
293
+ // Decode with Hoehrmann
294
+ {
295
+ unsigned decodedCodepoint = 0;
296
+ unsigned state = 0;
297
+
298
+ unsigned decodedCount = 0;
299
+ for (const char* s = encodedStr; *s; ++s)
300
+ if (!decode(&state, &decodedCodepoint, static_cast<unsigned char>(*s))) {
301
+ EXPECT_EQ(codepoint, decodedCodepoint);
302
+ decodedCount++;
303
+ }
304
+
305
+ if (*encodedStr) { // This decoder cannot handle U+0000
306
+ EXPECT_EQ(1u, decodedCount); // Should only contain one code point
307
+ }
308
+
309
+ EXPECT_EQ(UTF8_ACCEPT, state);
310
+ if (UTF8_ACCEPT != state)
311
+ std::cout << std::hex << codepoint << " " << decodedCodepoint << std::endl;
312
+ }
313
+
314
+ // Decode
315
+ {
316
+ StringStream is(encodedStr);
317
+ unsigned decodedCodepoint;
318
+ bool result = UTF8<>::Decode(is, &decodedCodepoint);
319
+ EXPECT_TRUE(result);
320
+ EXPECT_EQ(codepoint, decodedCodepoint);
321
+ if (!result || codepoint != decodedCodepoint)
322
+ std::cout << std::hex << codepoint << " " << decodedCodepoint << std::endl;
323
+ }
324
+
325
+ // Validate
326
+ {
327
+ StringStream is(encodedStr);
328
+ os2.Clear();
329
+ bool result = UTF8<>::Validate(is, os2);
330
+ EXPECT_TRUE(result);
331
+ EXPECT_EQ(0, StrCmp(encodedStr, os2.GetString()));
332
+ }
333
+ }
334
+ }
335
+ }
336
+
337
+ TEST(EncodingsTest, UTF16) {
338
+ GenericStringBuffer<UTF16<> > os, os2;
339
+ GenericStringBuffer<UTF8<> > utf8os;
340
+ for (const unsigned* range = kCodepointRanges; *range != 0xFFFFFFFF; range += 2) {
341
+ for (unsigned codepoint = range[0]; codepoint <= range[1]; ++codepoint) {
342
+ os.Clear();
343
+ UTF16<>::Encode(os, codepoint);
344
+ const UTF16<>::Ch* encodedStr = os.GetString();
345
+
346
+ // Encode with Hoehrmann's code
347
+ if (codepoint != 0) // cannot handle U+0000
348
+ {
349
+ // encode with UTF8<> first
350
+ utf8os.Clear();
351
+ UTF8<>::Encode(utf8os, codepoint);
352
+
353
+ // transcode from UTF8 to UTF16 with Hoehrmann's code
354
+ unsigned decodedCodepoint = 0;
355
+ unsigned state = 0;
356
+ UTF16<>::Ch buffer[3], *p = &buffer[0];
357
+ for (const char* s = utf8os.GetString(); *s; ++s) {
358
+ if (!decode(&state, &decodedCodepoint, static_cast<unsigned char>(*s)))
359
+ break;
360
+ }
361
+
362
+ if (codepoint <= 0xFFFF)
363
+ *p++ = static_cast<UTF16<>::Ch>(decodedCodepoint);
364
+ else {
365
+ // Encode code points above U+FFFF as surrogate pair.
366
+ *p++ = static_cast<UTF16<>::Ch>(0xD7C0 + (decodedCodepoint >> 10));
367
+ *p++ = static_cast<UTF16<>::Ch>(0xDC00 + (decodedCodepoint & 0x3FF));
368
+ }
369
+ *p++ = '\0';
370
+
371
+ EXPECT_EQ(0, StrCmp(buffer, encodedStr));
372
+ }
373
+
374
+ // Decode
375
+ {
376
+ GenericStringStream<UTF16<> > is(encodedStr);
377
+ unsigned decodedCodepoint;
378
+ bool result = UTF16<>::Decode(is, &decodedCodepoint);
379
+ EXPECT_TRUE(result);
380
+ EXPECT_EQ(codepoint, decodedCodepoint);
381
+ if (!result || codepoint != decodedCodepoint)
382
+ std::cout << std::hex << codepoint << " " << decodedCodepoint << std::endl;
383
+ }
384
+
385
+ // Validate
386
+ {
387
+ GenericStringStream<UTF16<> > is(encodedStr);
388
+ os2.Clear();
389
+ bool result = UTF16<>::Validate(is, os2);
390
+ EXPECT_TRUE(result);
391
+ EXPECT_EQ(0, StrCmp(encodedStr, os2.GetString()));
392
+ }
393
+ }
394
+ }
395
+ }
396
+
397
+ TEST(EncodingsTest, UTF32) {
398
+ GenericStringBuffer<UTF32<> > os, os2;
399
+ for (const unsigned* range = kCodepointRanges; *range != 0xFFFFFFFF; range += 2) {
400
+ for (unsigned codepoint = range[0]; codepoint <= range[1]; ++codepoint) {
401
+ os.Clear();
402
+ UTF32<>::Encode(os, codepoint);
403
+ const UTF32<>::Ch* encodedStr = os.GetString();
404
+
405
+ // Decode
406
+ {
407
+ GenericStringStream<UTF32<> > is(encodedStr);
408
+ unsigned decodedCodepoint;
409
+ bool result = UTF32<>::Decode(is, &decodedCodepoint);
410
+ EXPECT_TRUE(result);
411
+ EXPECT_EQ(codepoint, decodedCodepoint);
412
+ if (!result || codepoint != decodedCodepoint)
413
+ std::cout << std::hex << codepoint << " " << decodedCodepoint << std::endl;
414
+ }
415
+
416
+ // Validate
417
+ {
418
+ GenericStringStream<UTF32<> > is(encodedStr);
419
+ os2.Clear();
420
+ bool result = UTF32<>::Validate(is, os2);
421
+ EXPECT_TRUE(result);
422
+ EXPECT_EQ(0, StrCmp(encodedStr, os2.GetString()));
423
+ }
424
+ }
425
+ }
426
+ }
427
+
428
+ TEST(EncodingsTest, ASCII) {
429
+ StringBuffer os, os2;
430
+ for (unsigned codepoint = 0; codepoint < 128; codepoint++) {
431
+ os.Clear();
432
+ ASCII<>::Encode(os, codepoint);
433
+ const ASCII<>::Ch* encodedStr = os.GetString();
434
+ {
435
+ StringStream is(encodedStr);
436
+ unsigned decodedCodepoint;
437
+ bool result = ASCII<>::Decode(is, &decodedCodepoint);
438
+ if (!result || codepoint != decodedCodepoint)
439
+ std::cout << std::hex << codepoint << " " << decodedCodepoint << std::endl;
440
+ }
441
+
442
+ // Validate
443
+ {
444
+ StringStream is(encodedStr);
445
+ os2.Clear();
446
+ bool result = ASCII<>::Validate(is, os2);
447
+ EXPECT_TRUE(result);
448
+ EXPECT_EQ(0, StrCmp(encodedStr, os2.GetString()));
449
+ }
450
+ }
451
+ }