rj_schema 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. checksums.yaml +5 -5
  2. data/Rakefile +4 -0
  3. data/ext/rj_schema/rapidjson/thirdparty/gtest/CMakeLists.txt +16 -0
  4. data/ext/rj_schema/rapidjson/thirdparty/gtest/README.md +141 -0
  5. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CHANGES +126 -0
  6. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CMakeLists.txt +202 -0
  7. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CONTRIBUTORS +40 -0
  8. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/LICENSE +28 -0
  9. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/Makefile.am +224 -0
  10. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/README.md +333 -0
  11. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/configure.ac +146 -0
  12. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/CheatSheet.md +562 -0
  13. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/CookBook.md +3675 -0
  14. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/DesignDoc.md +280 -0
  15. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/DevGuide.md +132 -0
  16. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/Documentation.md +12 -0
  17. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/ForDummies.md +439 -0
  18. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/FrequentlyAskedQuestions.md +628 -0
  19. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/KnownIssues.md +19 -0
  20. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/CheatSheet.md +525 -0
  21. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/CookBook.md +3250 -0
  22. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/Documentation.md +11 -0
  23. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/ForDummies.md +439 -0
  24. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/FrequentlyAskedQuestions.md +624 -0
  25. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/CheatSheet.md +534 -0
  26. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/CookBook.md +3342 -0
  27. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/Documentation.md +12 -0
  28. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/ForDummies.md +439 -0
  29. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/FrequentlyAskedQuestions.md +628 -0
  30. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/CheatSheet.md +556 -0
  31. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/CookBook.md +3432 -0
  32. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/Documentation.md +12 -0
  33. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/ForDummies.md +439 -0
  34. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/FrequentlyAskedQuestions.md +628 -0
  35. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-actions.h +1205 -0
  36. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-cardinalities.h +147 -0
  37. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h +2377 -0
  38. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h.pump +794 -0
  39. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h +1095 -0
  40. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump +291 -0
  41. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h +2179 -0
  42. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h.pump +672 -0
  43. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h +397 -0
  44. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h.pump +161 -0
  45. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-matchers.h +4399 -0
  46. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-more-actions.h +246 -0
  47. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-more-matchers.h +58 -0
  48. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-spec-builders.h +1847 -0
  49. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock.h +94 -0
  50. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +8 -0
  51. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +10 -0
  52. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-matchers.h +39 -0
  53. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-port.h +46 -0
  54. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h +279 -0
  55. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h.pump +136 -0
  56. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-internal-utils.h +511 -0
  57. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-port.h +91 -0
  58. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/make/Makefile +101 -0
  59. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.sln +32 -0
  60. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.vcproj +191 -0
  61. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_config.vsprops +15 -0
  62. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_main.vcproj +187 -0
  63. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_test.vcproj +201 -0
  64. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.sln +32 -0
  65. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.vcxproj +82 -0
  66. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_config.props +19 -0
  67. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_main.vcxproj +88 -0
  68. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_test.vcxproj +101 -0
  69. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.sln +32 -0
  70. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.vcxproj +84 -0
  71. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_config.props +19 -0
  72. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_main.vcxproj +90 -0
  73. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_test.vcxproj +103 -0
  74. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/fuse_gmock_files.py +240 -0
  75. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/LICENSE +203 -0
  76. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/README +35 -0
  77. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/README.cppclean +115 -0
  78. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/__init__.py +0 -0
  79. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/ast.py +1733 -0
  80. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/gmock_class.py +227 -0
  81. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/gmock_class_test.py +448 -0
  82. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/keywords.py +59 -0
  83. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/tokenize.py +287 -0
  84. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/utils.py +41 -0
  85. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/gmock_gen.py +31 -0
  86. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/gmock-config.in +303 -0
  87. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/gmock_doctor.py +640 -0
  88. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/upload.py +1387 -0
  89. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/upload_gmock.py +78 -0
  90. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-all.cc +47 -0
  91. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-cardinalities.cc +156 -0
  92. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-internal-utils.cc +174 -0
  93. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-matchers.cc +498 -0
  94. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-spec-builders.cc +823 -0
  95. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock.cc +183 -0
  96. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock_main.cc +54 -0
  97. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-actions_test.cc +1411 -0
  98. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-cardinalities_test.cc +428 -0
  99. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-actions_test.cc +1228 -0
  100. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-function-mockers_test.cc +622 -0
  101. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-internal-utils_test.cc +127 -0
  102. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-matchers_test.cc +1286 -0
  103. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-internal-utils_test.cc +699 -0
  104. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-matchers_test.cc +5648 -0
  105. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-more-actions_test.cc +708 -0
  106. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-nice-strict_test.cc +424 -0
  107. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-port_test.cc +43 -0
  108. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-spec-builders_test.cc +2644 -0
  109. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_all_test.cc +51 -0
  110. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_ex_test.cc +81 -0
  111. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_leak_test.py +108 -0
  112. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_leak_test_.cc +100 -0
  113. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link2_test.cc +40 -0
  114. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.cc +40 -0
  115. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.h +669 -0
  116. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test.py +180 -0
  117. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_.cc +291 -0
  118. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_golden.txt +310 -0
  119. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_stress_test.cc +322 -0
  120. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_test.cc +220 -0
  121. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_test_utils.py +112 -0
  122. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CHANGES +157 -0
  123. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CMakeLists.txt +286 -0
  124. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CONTRIBUTORS +37 -0
  125. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/LICENSE +28 -0
  126. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/Makefile.am +310 -0
  127. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/README.md +280 -0
  128. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/cmake/internal_utils.cmake +242 -0
  129. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest.cbproj +138 -0
  130. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest.groupproj +54 -0
  131. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_all.cc +38 -0
  132. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_link.cc +40 -0
  133. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_main.cbproj +82 -0
  134. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_unittest.cbproj +88 -0
  135. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/configure.ac +68 -0
  136. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/AdvancedGuide.md +2182 -0
  137. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/DevGuide.md +126 -0
  138. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Documentation.md +14 -0
  139. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/FAQ.md +1087 -0
  140. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Primer.md +502 -0
  141. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/PumpManual.md +177 -0
  142. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Samples.md +14 -0
  143. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_AdvancedGuide.md +2096 -0
  144. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_Documentation.md +12 -0
  145. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_FAQ.md +886 -0
  146. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_Primer.md +497 -0
  147. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_PumpManual.md +177 -0
  148. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_XcodeGuide.md +93 -0
  149. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_AdvancedGuide.md +2178 -0
  150. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Documentation.md +14 -0
  151. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_FAQ.md +1038 -0
  152. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Primer.md +501 -0
  153. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_PumpManual.md +177 -0
  154. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Samples.md +14 -0
  155. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_XcodeGuide.md +93 -0
  156. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_AdvancedGuide.md +2181 -0
  157. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Documentation.md +14 -0
  158. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_FAQ.md +1082 -0
  159. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Primer.md +501 -0
  160. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_PumpManual.md +177 -0
  161. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Samples.md +14 -0
  162. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_XcodeGuide.md +93 -0
  163. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/XcodeGuide.md +93 -0
  164. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-death-test.h +294 -0
  165. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-message.h +250 -0
  166. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h +1444 -0
  167. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h.pump +510 -0
  168. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-printers.h +993 -0
  169. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-spi.h +232 -0
  170. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-test-part.h +179 -0
  171. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-typed-test.h +263 -0
  172. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest.h +2236 -0
  173. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_pred_impl.h +358 -0
  174. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_prod.h +58 -0
  175. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest-port.h +69 -0
  176. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
  177. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest.h +41 -0
  178. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-death-test-internal.h +319 -0
  179. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-filepath.h +206 -0
  180. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-internal.h +1238 -0
  181. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-linked_ptr.h +243 -0
  182. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h +5146 -0
  183. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +286 -0
  184. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util.h +731 -0
  185. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port-arch.h +93 -0
  186. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port.h +2554 -0
  187. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-string.h +167 -0
  188. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-tuple.h +1020 -0
  189. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-tuple.h.pump +347 -0
  190. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h +3331 -0
  191. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h.pump +297 -0
  192. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/m4/acx_pthread.m4 +363 -0
  193. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/m4/gtest.m4 +74 -0
  194. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/make/Makefile +82 -0
  195. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest-md.sln +45 -0
  196. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest-md.vcproj +126 -0
  197. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest.sln +45 -0
  198. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest.vcproj +126 -0
  199. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_main-md.vcproj +129 -0
  200. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_main.vcproj +129 -0
  201. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_prod_test-md.vcproj +164 -0
  202. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_prod_test.vcproj +164 -0
  203. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest-md.vcproj +147 -0
  204. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest.vcproj +147 -0
  205. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/prime_tables.h +123 -0
  206. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1.cc +68 -0
  207. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1.h +43 -0
  208. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample10_unittest.cc +144 -0
  209. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1_unittest.cc +153 -0
  210. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2.cc +56 -0
  211. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2.h +85 -0
  212. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2_unittest.cc +109 -0
  213. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample3-inl.h +172 -0
  214. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample3_unittest.cc +151 -0
  215. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4.cc +46 -0
  216. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4.h +53 -0
  217. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4_unittest.cc +45 -0
  218. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample5_unittest.cc +199 -0
  219. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample6_unittest.cc +224 -0
  220. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample7_unittest.cc +130 -0
  221. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample8_unittest.cc +173 -0
  222. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample9_unittest.cc +160 -0
  223. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/common.py +83 -0
  224. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/fuse_gtest_files.py +253 -0
  225. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/gen_gtest_pred_impl.py +730 -0
  226. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/gtest-config.in +274 -0
  227. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/pump.py +855 -0
  228. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/release_docs.py +158 -0
  229. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/test/Makefile +59 -0
  230. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/upload.py +1387 -0
  231. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/upload_gtest.py +78 -0
  232. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-all.cc +48 -0
  233. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-death-test.cc +1342 -0
  234. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-filepath.cc +387 -0
  235. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-internal-inl.h +1183 -0
  236. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-port.cc +1259 -0
  237. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-printers.cc +373 -0
  238. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-test-part.cc +110 -0
  239. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-typed-test.cc +118 -0
  240. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest.cc +5388 -0
  241. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest_main.cc +38 -0
  242. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-death-test_ex_test.cc +93 -0
  243. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-death-test_test.cc +1427 -0
  244. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-filepath_test.cc +662 -0
  245. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-linked_ptr_test.cc +154 -0
  246. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-listener_test.cc +311 -0
  247. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-message_test.cc +159 -0
  248. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-options_test.cc +215 -0
  249. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test2_test.cc +65 -0
  250. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.cc +1055 -0
  251. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.h +57 -0
  252. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-port_test.cc +1304 -0
  253. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-printers_test.cc +1635 -0
  254. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-test-part_test.cc +208 -0
  255. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-tuple_test.cc +320 -0
  256. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test2_test.cc +45 -0
  257. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test_test.cc +380 -0
  258. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test_test.h +66 -0
  259. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-unittest-api_test.cc +341 -0
  260. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_all_test.cc +47 -0
  261. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest.py +212 -0
  262. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest_.cc +88 -0
  263. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test.py +237 -0
  264. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test_.cc +311 -0
  265. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test.py +130 -0
  266. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test_.cc +71 -0
  267. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test.py +117 -0
  268. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test_.cc +126 -0
  269. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_environment_test.cc +192 -0
  270. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest.py +636 -0
  271. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest_.cc +140 -0
  272. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_help_test.py +172 -0
  273. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_help_test_.cc +46 -0
  274. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_list_tests_unittest.py +207 -0
  275. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_list_tests_unittest_.cc +157 -0
  276. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_main_unittest.cc +45 -0
  277. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_no_test_unittest.cc +56 -0
  278. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test.py +340 -0
  279. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_.cc +1062 -0
  280. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_golden_lin.txt +743 -0
  281. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_pred_impl_unittest.cc +2427 -0
  282. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_premature_exit_test.cc +127 -0
  283. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_prod_test.cc +57 -0
  284. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_repeat_test.cc +253 -0
  285. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_shuffle_test.py +325 -0
  286. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_shuffle_test_.cc +103 -0
  287. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_sole_header_test.cc +57 -0
  288. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_stress_test.cc +256 -0
  289. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_test_utils.py +320 -0
  290. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_ex_test.cc +92 -0
  291. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_test.py +171 -0
  292. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_test_.cc +72 -0
  293. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test.py +70 -0
  294. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test_.cc +43 -0
  295. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_unittest.cc +7706 -0
  296. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile1_test_.cc +49 -0
  297. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile2_test_.cc +49 -0
  298. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfiles_test.py +132 -0
  299. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest.py +308 -0
  300. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest_.cc +181 -0
  301. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_test_utils.py +194 -0
  302. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/production.cc +36 -0
  303. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/production.h +55 -0
  304. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/DebugProject.xcconfig +30 -0
  305. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/FrameworkTarget.xcconfig +17 -0
  306. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/General.xcconfig +41 -0
  307. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/ReleaseProject.xcconfig +32 -0
  308. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/StaticLibraryTarget.xcconfig +18 -0
  309. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/TestTarget.xcconfig +8 -0
  310. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Resources/Info.plist +30 -0
  311. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/Info.plist +28 -0
  312. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj +457 -0
  313. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/runtests.sh +62 -0
  314. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget.cc +63 -0
  315. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget.h +59 -0
  316. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget_test.cc +68 -0
  317. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Scripts/runtests.sh +65 -0
  318. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Scripts/versiongenerate.py +100 -0
  319. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/gtest.xcodeproj/project.pbxproj +1135 -0
  320. data/ext/rj_schema/rapidjson/thirdparty/gtest/travis.sh +15 -0
  321. data/ext/rj_schema/rj_schema.cpp +64 -41
  322. data/lib/rj_schema.rb +1 -1
  323. metadata +378 -5
@@ -0,0 +1,341 @@
1
+ // Copyright 2009 Google Inc. All rights reserved.
2
+ //
3
+ // Redistribution and use in source and binary forms, with or without
4
+ // modification, are permitted provided that the following conditions are
5
+ // met:
6
+ //
7
+ // * Redistributions of source code must retain the above copyright
8
+ // notice, this list of conditions and the following disclaimer.
9
+ // * Redistributions in binary form must reproduce the above
10
+ // copyright notice, this list of conditions and the following disclaimer
11
+ // in the documentation and/or other materials provided with the
12
+ // distribution.
13
+ // * Neither the name of Google Inc. nor the names of its
14
+ // contributors may be used to endorse or promote products derived from
15
+ // this software without specific prior written permission.
16
+ //
17
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
+ //
29
+ // Author: vladl@google.com (Vlad Losev)
30
+ //
31
+ // The Google C++ Testing Framework (Google Test)
32
+ //
33
+ // This file contains tests verifying correctness of data provided via
34
+ // UnitTest's public methods.
35
+
36
+ #include "gtest/gtest.h"
37
+
38
+ #include <string.h> // For strcmp.
39
+ #include <algorithm>
40
+
41
+ using ::testing::InitGoogleTest;
42
+
43
+ namespace testing {
44
+ namespace internal {
45
+
46
+ template <typename T>
47
+ struct LessByName {
48
+ bool operator()(const T* a, const T* b) {
49
+ return strcmp(a->name(), b->name()) < 0;
50
+ }
51
+ };
52
+
53
+ class UnitTestHelper {
54
+ public:
55
+ // Returns the array of pointers to all test cases sorted by the test case
56
+ // name. The caller is responsible for deleting the array.
57
+ static TestCase const** GetSortedTestCases() {
58
+ UnitTest& unit_test = *UnitTest::GetInstance();
59
+ TestCase const** const test_cases =
60
+ new const TestCase*[unit_test.total_test_case_count()];
61
+
62
+ for (int i = 0; i < unit_test.total_test_case_count(); ++i)
63
+ test_cases[i] = unit_test.GetTestCase(i);
64
+
65
+ std::sort(test_cases,
66
+ test_cases + unit_test.total_test_case_count(),
67
+ LessByName<TestCase>());
68
+ return test_cases;
69
+ }
70
+
71
+ // Returns the test case by its name. The caller doesn't own the returned
72
+ // pointer.
73
+ static const TestCase* FindTestCase(const char* name) {
74
+ UnitTest& unit_test = *UnitTest::GetInstance();
75
+ for (int i = 0; i < unit_test.total_test_case_count(); ++i) {
76
+ const TestCase* test_case = unit_test.GetTestCase(i);
77
+ if (0 == strcmp(test_case->name(), name))
78
+ return test_case;
79
+ }
80
+ return NULL;
81
+ }
82
+
83
+ // Returns the array of pointers to all tests in a particular test case
84
+ // sorted by the test name. The caller is responsible for deleting the
85
+ // array.
86
+ static TestInfo const** GetSortedTests(const TestCase* test_case) {
87
+ TestInfo const** const tests =
88
+ new const TestInfo*[test_case->total_test_count()];
89
+
90
+ for (int i = 0; i < test_case->total_test_count(); ++i)
91
+ tests[i] = test_case->GetTestInfo(i);
92
+
93
+ std::sort(tests, tests + test_case->total_test_count(),
94
+ LessByName<TestInfo>());
95
+ return tests;
96
+ }
97
+ };
98
+
99
+ #if GTEST_HAS_TYPED_TEST
100
+ template <typename T> class TestCaseWithCommentTest : public Test {};
101
+ TYPED_TEST_CASE(TestCaseWithCommentTest, Types<int>);
102
+ TYPED_TEST(TestCaseWithCommentTest, Dummy) {}
103
+
104
+ const int kTypedTestCases = 1;
105
+ const int kTypedTests = 1;
106
+ #else
107
+ const int kTypedTestCases = 0;
108
+ const int kTypedTests = 0;
109
+ #endif // GTEST_HAS_TYPED_TEST
110
+
111
+ // We can only test the accessors that do not change value while tests run.
112
+ // Since tests can be run in any order, the values the accessors that track
113
+ // test execution (such as failed_test_count) can not be predicted.
114
+ TEST(ApiTest, UnitTestImmutableAccessorsWork) {
115
+ UnitTest* unit_test = UnitTest::GetInstance();
116
+
117
+ ASSERT_EQ(2 + kTypedTestCases, unit_test->total_test_case_count());
118
+ EXPECT_EQ(1 + kTypedTestCases, unit_test->test_case_to_run_count());
119
+ EXPECT_EQ(2, unit_test->disabled_test_count());
120
+ EXPECT_EQ(5 + kTypedTests, unit_test->total_test_count());
121
+ EXPECT_EQ(3 + kTypedTests, unit_test->test_to_run_count());
122
+
123
+ const TestCase** const test_cases = UnitTestHelper::GetSortedTestCases();
124
+
125
+ EXPECT_STREQ("ApiTest", test_cases[0]->name());
126
+ EXPECT_STREQ("DISABLED_Test", test_cases[1]->name());
127
+ #if GTEST_HAS_TYPED_TEST
128
+ EXPECT_STREQ("TestCaseWithCommentTest/0", test_cases[2]->name());
129
+ #endif // GTEST_HAS_TYPED_TEST
130
+
131
+ delete[] test_cases;
132
+
133
+ // The following lines initiate actions to verify certain methods in
134
+ // FinalSuccessChecker::TearDown.
135
+
136
+ // Records a test property to verify TestResult::GetTestProperty().
137
+ RecordProperty("key", "value");
138
+ }
139
+
140
+ AssertionResult IsNull(const char* str) {
141
+ if (str != NULL) {
142
+ return testing::AssertionFailure() << "argument is " << str;
143
+ }
144
+ return AssertionSuccess();
145
+ }
146
+
147
+ TEST(ApiTest, TestCaseImmutableAccessorsWork) {
148
+ const TestCase* test_case = UnitTestHelper::FindTestCase("ApiTest");
149
+ ASSERT_TRUE(test_case != NULL);
150
+
151
+ EXPECT_STREQ("ApiTest", test_case->name());
152
+ EXPECT_TRUE(IsNull(test_case->type_param()));
153
+ EXPECT_TRUE(test_case->should_run());
154
+ EXPECT_EQ(1, test_case->disabled_test_count());
155
+ EXPECT_EQ(3, test_case->test_to_run_count());
156
+ ASSERT_EQ(4, test_case->total_test_count());
157
+
158
+ const TestInfo** tests = UnitTestHelper::GetSortedTests(test_case);
159
+
160
+ EXPECT_STREQ("DISABLED_Dummy1", tests[0]->name());
161
+ EXPECT_STREQ("ApiTest", tests[0]->test_case_name());
162
+ EXPECT_TRUE(IsNull(tests[0]->value_param()));
163
+ EXPECT_TRUE(IsNull(tests[0]->type_param()));
164
+ EXPECT_FALSE(tests[0]->should_run());
165
+
166
+ EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name());
167
+ EXPECT_STREQ("ApiTest", tests[1]->test_case_name());
168
+ EXPECT_TRUE(IsNull(tests[1]->value_param()));
169
+ EXPECT_TRUE(IsNull(tests[1]->type_param()));
170
+ EXPECT_TRUE(tests[1]->should_run());
171
+
172
+ EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name());
173
+ EXPECT_STREQ("ApiTest", tests[2]->test_case_name());
174
+ EXPECT_TRUE(IsNull(tests[2]->value_param()));
175
+ EXPECT_TRUE(IsNull(tests[2]->type_param()));
176
+ EXPECT_TRUE(tests[2]->should_run());
177
+
178
+ EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name());
179
+ EXPECT_STREQ("ApiTest", tests[3]->test_case_name());
180
+ EXPECT_TRUE(IsNull(tests[3]->value_param()));
181
+ EXPECT_TRUE(IsNull(tests[3]->type_param()));
182
+ EXPECT_TRUE(tests[3]->should_run());
183
+
184
+ delete[] tests;
185
+ tests = NULL;
186
+
187
+ #if GTEST_HAS_TYPED_TEST
188
+ test_case = UnitTestHelper::FindTestCase("TestCaseWithCommentTest/0");
189
+ ASSERT_TRUE(test_case != NULL);
190
+
191
+ EXPECT_STREQ("TestCaseWithCommentTest/0", test_case->name());
192
+ EXPECT_STREQ(GetTypeName<int>().c_str(), test_case->type_param());
193
+ EXPECT_TRUE(test_case->should_run());
194
+ EXPECT_EQ(0, test_case->disabled_test_count());
195
+ EXPECT_EQ(1, test_case->test_to_run_count());
196
+ ASSERT_EQ(1, test_case->total_test_count());
197
+
198
+ tests = UnitTestHelper::GetSortedTests(test_case);
199
+
200
+ EXPECT_STREQ("Dummy", tests[0]->name());
201
+ EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name());
202
+ EXPECT_TRUE(IsNull(tests[0]->value_param()));
203
+ EXPECT_STREQ(GetTypeName<int>().c_str(), tests[0]->type_param());
204
+ EXPECT_TRUE(tests[0]->should_run());
205
+
206
+ delete[] tests;
207
+ #endif // GTEST_HAS_TYPED_TEST
208
+ }
209
+
210
+ TEST(ApiTest, TestCaseDisabledAccessorsWork) {
211
+ const TestCase* test_case = UnitTestHelper::FindTestCase("DISABLED_Test");
212
+ ASSERT_TRUE(test_case != NULL);
213
+
214
+ EXPECT_STREQ("DISABLED_Test", test_case->name());
215
+ EXPECT_TRUE(IsNull(test_case->type_param()));
216
+ EXPECT_FALSE(test_case->should_run());
217
+ EXPECT_EQ(1, test_case->disabled_test_count());
218
+ EXPECT_EQ(0, test_case->test_to_run_count());
219
+ ASSERT_EQ(1, test_case->total_test_count());
220
+
221
+ const TestInfo* const test_info = test_case->GetTestInfo(0);
222
+ EXPECT_STREQ("Dummy2", test_info->name());
223
+ EXPECT_STREQ("DISABLED_Test", test_info->test_case_name());
224
+ EXPECT_TRUE(IsNull(test_info->value_param()));
225
+ EXPECT_TRUE(IsNull(test_info->type_param()));
226
+ EXPECT_FALSE(test_info->should_run());
227
+ }
228
+
229
+ // These two tests are here to provide support for testing
230
+ // test_case_to_run_count, disabled_test_count, and test_to_run_count.
231
+ TEST(ApiTest, DISABLED_Dummy1) {}
232
+ TEST(DISABLED_Test, Dummy2) {}
233
+
234
+ class FinalSuccessChecker : public Environment {
235
+ protected:
236
+ virtual void TearDown() {
237
+ UnitTest* unit_test = UnitTest::GetInstance();
238
+
239
+ EXPECT_EQ(1 + kTypedTestCases, unit_test->successful_test_case_count());
240
+ EXPECT_EQ(3 + kTypedTests, unit_test->successful_test_count());
241
+ EXPECT_EQ(0, unit_test->failed_test_case_count());
242
+ EXPECT_EQ(0, unit_test->failed_test_count());
243
+ EXPECT_TRUE(unit_test->Passed());
244
+ EXPECT_FALSE(unit_test->Failed());
245
+ ASSERT_EQ(2 + kTypedTestCases, unit_test->total_test_case_count());
246
+
247
+ const TestCase** const test_cases = UnitTestHelper::GetSortedTestCases();
248
+
249
+ EXPECT_STREQ("ApiTest", test_cases[0]->name());
250
+ EXPECT_TRUE(IsNull(test_cases[0]->type_param()));
251
+ EXPECT_TRUE(test_cases[0]->should_run());
252
+ EXPECT_EQ(1, test_cases[0]->disabled_test_count());
253
+ ASSERT_EQ(4, test_cases[0]->total_test_count());
254
+ EXPECT_EQ(3, test_cases[0]->successful_test_count());
255
+ EXPECT_EQ(0, test_cases[0]->failed_test_count());
256
+ EXPECT_TRUE(test_cases[0]->Passed());
257
+ EXPECT_FALSE(test_cases[0]->Failed());
258
+
259
+ EXPECT_STREQ("DISABLED_Test", test_cases[1]->name());
260
+ EXPECT_TRUE(IsNull(test_cases[1]->type_param()));
261
+ EXPECT_FALSE(test_cases[1]->should_run());
262
+ EXPECT_EQ(1, test_cases[1]->disabled_test_count());
263
+ ASSERT_EQ(1, test_cases[1]->total_test_count());
264
+ EXPECT_EQ(0, test_cases[1]->successful_test_count());
265
+ EXPECT_EQ(0, test_cases[1]->failed_test_count());
266
+
267
+ #if GTEST_HAS_TYPED_TEST
268
+ EXPECT_STREQ("TestCaseWithCommentTest/0", test_cases[2]->name());
269
+ EXPECT_STREQ(GetTypeName<int>().c_str(), test_cases[2]->type_param());
270
+ EXPECT_TRUE(test_cases[2]->should_run());
271
+ EXPECT_EQ(0, test_cases[2]->disabled_test_count());
272
+ ASSERT_EQ(1, test_cases[2]->total_test_count());
273
+ EXPECT_EQ(1, test_cases[2]->successful_test_count());
274
+ EXPECT_EQ(0, test_cases[2]->failed_test_count());
275
+ EXPECT_TRUE(test_cases[2]->Passed());
276
+ EXPECT_FALSE(test_cases[2]->Failed());
277
+ #endif // GTEST_HAS_TYPED_TEST
278
+
279
+ const TestCase* test_case = UnitTestHelper::FindTestCase("ApiTest");
280
+ const TestInfo** tests = UnitTestHelper::GetSortedTests(test_case);
281
+ EXPECT_STREQ("DISABLED_Dummy1", tests[0]->name());
282
+ EXPECT_STREQ("ApiTest", tests[0]->test_case_name());
283
+ EXPECT_FALSE(tests[0]->should_run());
284
+
285
+ EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name());
286
+ EXPECT_STREQ("ApiTest", tests[1]->test_case_name());
287
+ EXPECT_TRUE(IsNull(tests[1]->value_param()));
288
+ EXPECT_TRUE(IsNull(tests[1]->type_param()));
289
+ EXPECT_TRUE(tests[1]->should_run());
290
+ EXPECT_TRUE(tests[1]->result()->Passed());
291
+ EXPECT_EQ(0, tests[1]->result()->test_property_count());
292
+
293
+ EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name());
294
+ EXPECT_STREQ("ApiTest", tests[2]->test_case_name());
295
+ EXPECT_TRUE(IsNull(tests[2]->value_param()));
296
+ EXPECT_TRUE(IsNull(tests[2]->type_param()));
297
+ EXPECT_TRUE(tests[2]->should_run());
298
+ EXPECT_TRUE(tests[2]->result()->Passed());
299
+ EXPECT_EQ(0, tests[2]->result()->test_property_count());
300
+
301
+ EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name());
302
+ EXPECT_STREQ("ApiTest", tests[3]->test_case_name());
303
+ EXPECT_TRUE(IsNull(tests[3]->value_param()));
304
+ EXPECT_TRUE(IsNull(tests[3]->type_param()));
305
+ EXPECT_TRUE(tests[3]->should_run());
306
+ EXPECT_TRUE(tests[3]->result()->Passed());
307
+ EXPECT_EQ(1, tests[3]->result()->test_property_count());
308
+ const TestProperty& property = tests[3]->result()->GetTestProperty(0);
309
+ EXPECT_STREQ("key", property.key());
310
+ EXPECT_STREQ("value", property.value());
311
+
312
+ delete[] tests;
313
+
314
+ #if GTEST_HAS_TYPED_TEST
315
+ test_case = UnitTestHelper::FindTestCase("TestCaseWithCommentTest/0");
316
+ tests = UnitTestHelper::GetSortedTests(test_case);
317
+
318
+ EXPECT_STREQ("Dummy", tests[0]->name());
319
+ EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name());
320
+ EXPECT_TRUE(IsNull(tests[0]->value_param()));
321
+ EXPECT_STREQ(GetTypeName<int>().c_str(), tests[0]->type_param());
322
+ EXPECT_TRUE(tests[0]->should_run());
323
+ EXPECT_TRUE(tests[0]->result()->Passed());
324
+ EXPECT_EQ(0, tests[0]->result()->test_property_count());
325
+
326
+ delete[] tests;
327
+ #endif // GTEST_HAS_TYPED_TEST
328
+ delete[] test_cases;
329
+ }
330
+ };
331
+
332
+ } // namespace internal
333
+ } // namespace testing
334
+
335
+ int main(int argc, char **argv) {
336
+ InitGoogleTest(&argc, argv);
337
+
338
+ AddGlobalTestEnvironment(new testing::internal::FinalSuccessChecker());
339
+
340
+ return RUN_ALL_TESTS();
341
+ }
@@ -0,0 +1,47 @@
1
+ // Copyright 2009, Google Inc.
2
+ // All rights reserved.
3
+ //
4
+ // Redistribution and use in source and binary forms, with or without
5
+ // modification, are permitted provided that the following conditions are
6
+ // met:
7
+ //
8
+ // * Redistributions of source code must retain the above copyright
9
+ // notice, this list of conditions and the following disclaimer.
10
+ // * Redistributions in binary form must reproduce the above
11
+ // copyright notice, this list of conditions and the following disclaimer
12
+ // in the documentation and/or other materials provided with the
13
+ // distribution.
14
+ // * Neither the name of Google Inc. nor the names of its
15
+ // contributors may be used to endorse or promote products derived from
16
+ // this software without specific prior written permission.
17
+ //
18
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ //
30
+ // Author: wan@google.com (Zhanyong Wan)
31
+ //
32
+ // Tests for Google C++ Testing Framework (Google Test)
33
+ //
34
+ // Sometimes it's desirable to build most of Google Test's own tests
35
+ // by compiling a single file. This file serves this purpose.
36
+ #include "test/gtest-filepath_test.cc"
37
+ #include "test/gtest-linked_ptr_test.cc"
38
+ #include "test/gtest-message_test.cc"
39
+ #include "test/gtest-options_test.cc"
40
+ #include "test/gtest-port_test.cc"
41
+ #include "test/gtest_pred_impl_unittest.cc"
42
+ #include "test/gtest_prod_test.cc"
43
+ #include "test/gtest-test-part_test.cc"
44
+ #include "test/gtest-typed-test_test.cc"
45
+ #include "test/gtest-typed-test2_test.cc"
46
+ #include "test/gtest_unittest.cc"
47
+ #include "test/production.cc"
@@ -0,0 +1,212 @@
1
+ #!/usr/bin/env python
2
+ #
3
+ # Copyright 2006, Google Inc.
4
+ # All rights reserved.
5
+ #
6
+ # Redistribution and use in source and binary forms, with or without
7
+ # modification, are permitted provided that the following conditions are
8
+ # met:
9
+ #
10
+ # * Redistributions of source code must retain the above copyright
11
+ # notice, this list of conditions and the following disclaimer.
12
+ # * Redistributions in binary form must reproduce the above
13
+ # copyright notice, this list of conditions and the following disclaimer
14
+ # in the documentation and/or other materials provided with the
15
+ # distribution.
16
+ # * Neither the name of Google Inc. nor the names of its
17
+ # contributors may be used to endorse or promote products derived from
18
+ # this software without specific prior written permission.
19
+ #
20
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+
32
+ """Unit test for Google Test's break-on-failure mode.
33
+
34
+ A user can ask Google Test to seg-fault when an assertion fails, using
35
+ either the GTEST_BREAK_ON_FAILURE environment variable or the
36
+ --gtest_break_on_failure flag. This script tests such functionality
37
+ by invoking gtest_break_on_failure_unittest_ (a program written with
38
+ Google Test) with different environments and command line flags.
39
+ """
40
+
41
+ __author__ = 'wan@google.com (Zhanyong Wan)'
42
+
43
+ import gtest_test_utils
44
+ import os
45
+ import sys
46
+
47
+
48
+ # Constants.
49
+
50
+ IS_WINDOWS = os.name == 'nt'
51
+
52
+ # The environment variable for enabling/disabling the break-on-failure mode.
53
+ BREAK_ON_FAILURE_ENV_VAR = 'GTEST_BREAK_ON_FAILURE'
54
+
55
+ # The command line flag for enabling/disabling the break-on-failure mode.
56
+ BREAK_ON_FAILURE_FLAG = 'gtest_break_on_failure'
57
+
58
+ # The environment variable for enabling/disabling the throw-on-failure mode.
59
+ THROW_ON_FAILURE_ENV_VAR = 'GTEST_THROW_ON_FAILURE'
60
+
61
+ # The environment variable for enabling/disabling the catch-exceptions mode.
62
+ CATCH_EXCEPTIONS_ENV_VAR = 'GTEST_CATCH_EXCEPTIONS'
63
+
64
+ # Path to the gtest_break_on_failure_unittest_ program.
65
+ EXE_PATH = gtest_test_utils.GetTestExecutablePath(
66
+ 'gtest_break_on_failure_unittest_')
67
+
68
+
69
+ environ = gtest_test_utils.environ
70
+ SetEnvVar = gtest_test_utils.SetEnvVar
71
+
72
+ # Tests in this file run a Google-Test-based test program and expect it
73
+ # to terminate prematurely. Therefore they are incompatible with
74
+ # the premature-exit-file protocol by design. Unset the
75
+ # premature-exit filepath to prevent Google Test from creating
76
+ # the file.
77
+ SetEnvVar(gtest_test_utils.PREMATURE_EXIT_FILE_ENV_VAR, None)
78
+
79
+
80
+ def Run(command):
81
+ """Runs a command; returns 1 if it was killed by a signal, or 0 otherwise."""
82
+
83
+ p = gtest_test_utils.Subprocess(command, env=environ)
84
+ if p.terminated_by_signal:
85
+ return 1
86
+ else:
87
+ return 0
88
+
89
+
90
+ # The tests.
91
+
92
+
93
+ class GTestBreakOnFailureUnitTest(gtest_test_utils.TestCase):
94
+ """Tests using the GTEST_BREAK_ON_FAILURE environment variable or
95
+ the --gtest_break_on_failure flag to turn assertion failures into
96
+ segmentation faults.
97
+ """
98
+
99
+ def RunAndVerify(self, env_var_value, flag_value, expect_seg_fault):
100
+ """Runs gtest_break_on_failure_unittest_ and verifies that it does
101
+ (or does not) have a seg-fault.
102
+
103
+ Args:
104
+ env_var_value: value of the GTEST_BREAK_ON_FAILURE environment
105
+ variable; None if the variable should be unset.
106
+ flag_value: value of the --gtest_break_on_failure flag;
107
+ None if the flag should not be present.
108
+ expect_seg_fault: 1 if the program is expected to generate a seg-fault;
109
+ 0 otherwise.
110
+ """
111
+
112
+ SetEnvVar(BREAK_ON_FAILURE_ENV_VAR, env_var_value)
113
+
114
+ if env_var_value is None:
115
+ env_var_value_msg = ' is not set'
116
+ else:
117
+ env_var_value_msg = '=' + env_var_value
118
+
119
+ if flag_value is None:
120
+ flag = ''
121
+ elif flag_value == '0':
122
+ flag = '--%s=0' % BREAK_ON_FAILURE_FLAG
123
+ else:
124
+ flag = '--%s' % BREAK_ON_FAILURE_FLAG
125
+
126
+ command = [EXE_PATH]
127
+ if flag:
128
+ command.append(flag)
129
+
130
+ if expect_seg_fault:
131
+ should_or_not = 'should'
132
+ else:
133
+ should_or_not = 'should not'
134
+
135
+ has_seg_fault = Run(command)
136
+
137
+ SetEnvVar(BREAK_ON_FAILURE_ENV_VAR, None)
138
+
139
+ msg = ('when %s%s, an assertion failure in "%s" %s cause a seg-fault.' %
140
+ (BREAK_ON_FAILURE_ENV_VAR, env_var_value_msg, ' '.join(command),
141
+ should_or_not))
142
+ self.assert_(has_seg_fault == expect_seg_fault, msg)
143
+
144
+ def testDefaultBehavior(self):
145
+ """Tests the behavior of the default mode."""
146
+
147
+ self.RunAndVerify(env_var_value=None,
148
+ flag_value=None,
149
+ expect_seg_fault=0)
150
+
151
+ def testEnvVar(self):
152
+ """Tests using the GTEST_BREAK_ON_FAILURE environment variable."""
153
+
154
+ self.RunAndVerify(env_var_value='0',
155
+ flag_value=None,
156
+ expect_seg_fault=0)
157
+ self.RunAndVerify(env_var_value='1',
158
+ flag_value=None,
159
+ expect_seg_fault=1)
160
+
161
+ def testFlag(self):
162
+ """Tests using the --gtest_break_on_failure flag."""
163
+
164
+ self.RunAndVerify(env_var_value=None,
165
+ flag_value='0',
166
+ expect_seg_fault=0)
167
+ self.RunAndVerify(env_var_value=None,
168
+ flag_value='1',
169
+ expect_seg_fault=1)
170
+
171
+ def testFlagOverridesEnvVar(self):
172
+ """Tests that the flag overrides the environment variable."""
173
+
174
+ self.RunAndVerify(env_var_value='0',
175
+ flag_value='0',
176
+ expect_seg_fault=0)
177
+ self.RunAndVerify(env_var_value='0',
178
+ flag_value='1',
179
+ expect_seg_fault=1)
180
+ self.RunAndVerify(env_var_value='1',
181
+ flag_value='0',
182
+ expect_seg_fault=0)
183
+ self.RunAndVerify(env_var_value='1',
184
+ flag_value='1',
185
+ expect_seg_fault=1)
186
+
187
+ def testBreakOnFailureOverridesThrowOnFailure(self):
188
+ """Tests that gtest_break_on_failure overrides gtest_throw_on_failure."""
189
+
190
+ SetEnvVar(THROW_ON_FAILURE_ENV_VAR, '1')
191
+ try:
192
+ self.RunAndVerify(env_var_value=None,
193
+ flag_value='1',
194
+ expect_seg_fault=1)
195
+ finally:
196
+ SetEnvVar(THROW_ON_FAILURE_ENV_VAR, None)
197
+
198
+ if IS_WINDOWS:
199
+ def testCatchExceptionsDoesNotInterfere(self):
200
+ """Tests that gtest_catch_exceptions doesn't interfere."""
201
+
202
+ SetEnvVar(CATCH_EXCEPTIONS_ENV_VAR, '1')
203
+ try:
204
+ self.RunAndVerify(env_var_value='1',
205
+ flag_value='1',
206
+ expect_seg_fault=1)
207
+ finally:
208
+ SetEnvVar(CATCH_EXCEPTIONS_ENV_VAR, None)
209
+
210
+
211
+ if __name__ == '__main__':
212
+ gtest_test_utils.Main()