rj_schema 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (613) hide show
  1. checksums.yaml +4 -4
  2. metadata +3 -615
  3. data/ext/rj_schema/rapidjson/CHANGELOG.md +0 -158
  4. data/ext/rj_schema/rapidjson/CMakeLists.txt +0 -221
  5. data/ext/rj_schema/rapidjson/CMakeModules/FindGTestSrc.cmake +0 -30
  6. data/ext/rj_schema/rapidjson/RapidJSON.pc.in +0 -7
  7. data/ext/rj_schema/rapidjson/RapidJSONConfig.cmake.in +0 -15
  8. data/ext/rj_schema/rapidjson/RapidJSONConfigVersion.cmake.in +0 -10
  9. data/ext/rj_schema/rapidjson/appveyor.yml +0 -41
  10. data/ext/rj_schema/rapidjson/bin/data/glossary.json +0 -22
  11. data/ext/rj_schema/rapidjson/bin/data/menu.json +0 -27
  12. data/ext/rj_schema/rapidjson/bin/data/readme.txt +0 -1
  13. data/ext/rj_schema/rapidjson/bin/data/sample.json +0 -3315
  14. data/ext/rj_schema/rapidjson/bin/data/webapp.json +0 -88
  15. data/ext/rj_schema/rapidjson/bin/data/widget.json +0 -26
  16. data/ext/rj_schema/rapidjson/bin/draft-04/schema +0 -150
  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 +0 -7
  26. data/ext/rj_schema/rapidjson/bin/encodings/utf8bom.json +0 -7
  27. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail1.json +0 -1
  28. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail10.json +0 -1
  29. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail11.json +0 -1
  30. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail12.json +0 -1
  31. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail13.json +0 -1
  32. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail14.json +0 -1
  33. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail15.json +0 -1
  34. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail16.json +0 -1
  35. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail17.json +0 -1
  36. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail18.json +0 -1
  37. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail19.json +0 -1
  38. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail2.json +0 -1
  39. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail20.json +0 -1
  40. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail21.json +0 -1
  41. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail22.json +0 -1
  42. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail23.json +0 -1
  43. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail24.json +0 -1
  44. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail25.json +0 -1
  45. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail26.json +0 -1
  46. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail27.json +0 -2
  47. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail28.json +0 -2
  48. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail29.json +0 -1
  49. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail3.json +0 -1
  50. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail30.json +0 -1
  51. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail31.json +0 -1
  52. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail32.json +0 -1
  53. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail33.json +0 -1
  54. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail4.json +0 -1
  55. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail5.json +0 -1
  56. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail6.json +0 -1
  57. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail7.json +0 -1
  58. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail8.json +0 -1
  59. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail9.json +0 -1
  60. data/ext/rj_schema/rapidjson/bin/jsonchecker/pass1.json +0 -58
  61. data/ext/rj_schema/rapidjson/bin/jsonchecker/pass2.json +0 -1
  62. data/ext/rj_schema/rapidjson/bin/jsonchecker/pass3.json +0 -6
  63. data/ext/rj_schema/rapidjson/bin/jsonchecker/readme.txt +0 -3
  64. data/ext/rj_schema/rapidjson/bin/jsonschema/LICENSE +0 -19
  65. data/ext/rj_schema/rapidjson/bin/jsonschema/README.md +0 -148
  66. data/ext/rj_schema/rapidjson/bin/jsonschema/bin/jsonschema_suite +0 -283
  67. data/ext/rj_schema/rapidjson/bin/jsonschema/remotes/folder/folderInteger.json +0 -3
  68. data/ext/rj_schema/rapidjson/bin/jsonschema/remotes/integer.json +0 -3
  69. data/ext/rj_schema/rapidjson/bin/jsonschema/remotes/subSchemas.json +0 -8
  70. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/additionalItems.json +0 -82
  71. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/additionalProperties.json +0 -88
  72. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/default.json +0 -49
  73. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/dependencies.json +0 -108
  74. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/disallow.json +0 -80
  75. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/divisibleBy.json +0 -60
  76. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/enum.json +0 -71
  77. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/extends.json +0 -94
  78. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/items.json +0 -46
  79. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/maxItems.json +0 -28
  80. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/maxLength.json +0 -33
  81. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/maximum.json +0 -42
  82. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/minItems.json +0 -28
  83. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/minLength.json +0 -33
  84. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/minimum.json +0 -42
  85. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/bignum.json +0 -107
  86. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/format.json +0 -222
  87. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/jsregex.json +0 -18
  88. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/zeroTerminatedFloats.json +0 -15
  89. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/pattern.json +0 -34
  90. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/patternProperties.json +0 -110
  91. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/properties.json +0 -92
  92. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/ref.json +0 -159
  93. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/refRemote.json +0 -74
  94. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/required.json +0 -53
  95. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/type.json +0 -474
  96. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/uniqueItems.json +0 -79
  97. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/additionalItems.json +0 -82
  98. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/additionalProperties.json +0 -88
  99. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/allOf.json +0 -112
  100. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/anyOf.json +0 -68
  101. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/default.json +0 -49
  102. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/definitions.json +0 -32
  103. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/dependencies.json +0 -113
  104. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/enum.json +0 -72
  105. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/items.json +0 -46
  106. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maxItems.json +0 -28
  107. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maxLength.json +0 -33
  108. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maxProperties.json +0 -28
  109. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maximum.json +0 -42
  110. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minItems.json +0 -28
  111. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minLength.json +0 -33
  112. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minProperties.json +0 -28
  113. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minimum.json +0 -42
  114. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/multipleOf.json +0 -60
  115. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/not.json +0 -96
  116. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/oneOf.json +0 -68
  117. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/optional/bignum.json +0 -107
  118. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/optional/format.json +0 -148
  119. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/optional/zeroTerminatedFloats.json +0 -15
  120. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/pattern.json +0 -34
  121. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/patternProperties.json +0 -110
  122. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/properties.json +0 -92
  123. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/ref.json +0 -159
  124. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/refRemote.json +0 -74
  125. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/required.json +0 -39
  126. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/type.json +0 -330
  127. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/uniqueItems.json +0 -79
  128. data/ext/rj_schema/rapidjson/bin/jsonschema/tox.ini +0 -8
  129. data/ext/rj_schema/rapidjson/bin/types/booleans.json +0 -102
  130. data/ext/rj_schema/rapidjson/bin/types/floats.json +0 -102
  131. data/ext/rj_schema/rapidjson/bin/types/guids.json +0 -102
  132. data/ext/rj_schema/rapidjson/bin/types/integers.json +0 -102
  133. data/ext/rj_schema/rapidjson/bin/types/mixed.json +0 -592
  134. data/ext/rj_schema/rapidjson/bin/types/nulls.json +0 -102
  135. data/ext/rj_schema/rapidjson/bin/types/paragraphs.json +0 -102
  136. data/ext/rj_schema/rapidjson/bin/types/readme.txt +0 -1
  137. data/ext/rj_schema/rapidjson/contrib/natvis/LICENSE +0 -45
  138. data/ext/rj_schema/rapidjson/contrib/natvis/README.md +0 -7
  139. data/ext/rj_schema/rapidjson/contrib/natvis/rapidjson.natvis +0 -38
  140. data/ext/rj_schema/rapidjson/doc/CMakeLists.txt +0 -27
  141. data/ext/rj_schema/rapidjson/doc/Doxyfile.in +0 -2369
  142. data/ext/rj_schema/rapidjson/doc/Doxyfile.zh-cn.in +0 -2369
  143. data/ext/rj_schema/rapidjson/doc/diagram/architecture.dot +0 -50
  144. data/ext/rj_schema/rapidjson/doc/diagram/architecture.png +0 -0
  145. data/ext/rj_schema/rapidjson/doc/diagram/insituparsing.dot +0 -65
  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 +0 -62
  148. data/ext/rj_schema/rapidjson/doc/diagram/iterative-parser-states-diagram.png +0 -0
  149. data/ext/rj_schema/rapidjson/doc/diagram/makefile +0 -8
  150. data/ext/rj_schema/rapidjson/doc/diagram/move1.dot +0 -47
  151. data/ext/rj_schema/rapidjson/doc/diagram/move1.png +0 -0
  152. data/ext/rj_schema/rapidjson/doc/diagram/move2.dot +0 -62
  153. data/ext/rj_schema/rapidjson/doc/diagram/move2.png +0 -0
  154. data/ext/rj_schema/rapidjson/doc/diagram/move3.dot +0 -60
  155. data/ext/rj_schema/rapidjson/doc/diagram/move3.png +0 -0
  156. data/ext/rj_schema/rapidjson/doc/diagram/normalparsing.dot +0 -56
  157. data/ext/rj_schema/rapidjson/doc/diagram/normalparsing.png +0 -0
  158. data/ext/rj_schema/rapidjson/doc/diagram/simpledom.dot +0 -54
  159. data/ext/rj_schema/rapidjson/doc/diagram/simpledom.png +0 -0
  160. data/ext/rj_schema/rapidjson/doc/diagram/tutorial.dot +0 -58
  161. data/ext/rj_schema/rapidjson/doc/diagram/tutorial.png +0 -0
  162. data/ext/rj_schema/rapidjson/doc/diagram/utilityclass.dot +0 -73
  163. data/ext/rj_schema/rapidjson/doc/diagram/utilityclass.png +0 -0
  164. data/ext/rj_schema/rapidjson/doc/dom.md +0 -280
  165. data/ext/rj_schema/rapidjson/doc/dom.zh-cn.md +0 -284
  166. data/ext/rj_schema/rapidjson/doc/encoding.md +0 -146
  167. data/ext/rj_schema/rapidjson/doc/encoding.zh-cn.md +0 -152
  168. data/ext/rj_schema/rapidjson/doc/faq.md +0 -289
  169. data/ext/rj_schema/rapidjson/doc/faq.zh-cn.md +0 -290
  170. data/ext/rj_schema/rapidjson/doc/features.md +0 -104
  171. data/ext/rj_schema/rapidjson/doc/features.zh-cn.md +0 -103
  172. data/ext/rj_schema/rapidjson/doc/internals.md +0 -368
  173. data/ext/rj_schema/rapidjson/doc/internals.zh-cn.md +0 -363
  174. data/ext/rj_schema/rapidjson/doc/logo/rapidjson.png +0 -0
  175. data/ext/rj_schema/rapidjson/doc/logo/rapidjson.svg +0 -119
  176. data/ext/rj_schema/rapidjson/doc/misc/DoxygenLayout.xml +0 -194
  177. data/ext/rj_schema/rapidjson/doc/misc/doxygenextra.css +0 -274
  178. data/ext/rj_schema/rapidjson/doc/misc/footer.html +0 -11
  179. data/ext/rj_schema/rapidjson/doc/misc/header.html +0 -24
  180. data/ext/rj_schema/rapidjson/doc/npm.md +0 -31
  181. data/ext/rj_schema/rapidjson/doc/performance.md +0 -26
  182. data/ext/rj_schema/rapidjson/doc/performance.zh-cn.md +0 -26
  183. data/ext/rj_schema/rapidjson/doc/pointer.md +0 -234
  184. data/ext/rj_schema/rapidjson/doc/pointer.zh-cn.md +0 -234
  185. data/ext/rj_schema/rapidjson/doc/sax.md +0 -509
  186. data/ext/rj_schema/rapidjson/doc/sax.zh-cn.md +0 -487
  187. data/ext/rj_schema/rapidjson/doc/schema.md +0 -505
  188. data/ext/rj_schema/rapidjson/doc/schema.zh-cn.md +0 -237
  189. data/ext/rj_schema/rapidjson/doc/stream.md +0 -429
  190. data/ext/rj_schema/rapidjson/doc/stream.zh-cn.md +0 -429
  191. data/ext/rj_schema/rapidjson/doc/tutorial.md +0 -536
  192. data/ext/rj_schema/rapidjson/doc/tutorial.zh-cn.md +0 -534
  193. data/ext/rj_schema/rapidjson/docker/debian/Dockerfile +0 -8
  194. data/ext/rj_schema/rapidjson/example/CMakeLists.txt +0 -45
  195. data/ext/rj_schema/rapidjson/example/archiver/archiver.cpp +0 -292
  196. data/ext/rj_schema/rapidjson/example/archiver/archiver.h +0 -145
  197. data/ext/rj_schema/rapidjson/example/archiver/archivertest.cpp +0 -287
  198. data/ext/rj_schema/rapidjson/example/capitalize/capitalize.cpp +0 -67
  199. data/ext/rj_schema/rapidjson/example/condense/condense.cpp +0 -32
  200. data/ext/rj_schema/rapidjson/example/filterkey/filterkey.cpp +0 -135
  201. data/ext/rj_schema/rapidjson/example/filterkeydom/filterkeydom.cpp +0 -170
  202. data/ext/rj_schema/rapidjson/example/jsonx/jsonx.cpp +0 -207
  203. data/ext/rj_schema/rapidjson/example/lookaheadparser/lookaheadparser.cpp +0 -350
  204. data/ext/rj_schema/rapidjson/example/messagereader/messagereader.cpp +0 -105
  205. data/ext/rj_schema/rapidjson/example/parsebyparts/parsebyparts.cpp +0 -176
  206. data/ext/rj_schema/rapidjson/example/pretty/pretty.cpp +0 -30
  207. data/ext/rj_schema/rapidjson/example/prettyauto/prettyauto.cpp +0 -56
  208. data/ext/rj_schema/rapidjson/example/schemavalidator/schemavalidator.cpp +0 -78
  209. data/ext/rj_schema/rapidjson/example/serialize/serialize.cpp +0 -173
  210. data/ext/rj_schema/rapidjson/example/simpledom/simpledom.cpp +0 -29
  211. data/ext/rj_schema/rapidjson/example/simplepullreader/simplepullreader.cpp +0 -53
  212. data/ext/rj_schema/rapidjson/example/simplereader/simplereader.cpp +0 -42
  213. data/ext/rj_schema/rapidjson/example/simplewriter/simplewriter.cpp +0 -36
  214. data/ext/rj_schema/rapidjson/example/tutorial/tutorial.cpp +0 -151
  215. data/ext/rj_schema/rapidjson/include/rapidjson/allocators.h +0 -284
  216. data/ext/rj_schema/rapidjson/include/rapidjson/cursorstreamwrapper.h +0 -78
  217. data/ext/rj_schema/rapidjson/include/rapidjson/document.h +0 -2648
  218. data/ext/rj_schema/rapidjson/include/rapidjson/encodedstream.h +0 -299
  219. data/ext/rj_schema/rapidjson/include/rapidjson/encodings.h +0 -716
  220. data/ext/rj_schema/rapidjson/include/rapidjson/error/en.h +0 -74
  221. data/ext/rj_schema/rapidjson/include/rapidjson/error/error.h +0 -161
  222. data/ext/rj_schema/rapidjson/include/rapidjson/filereadstream.h +0 -99
  223. data/ext/rj_schema/rapidjson/include/rapidjson/filewritestream.h +0 -104
  224. data/ext/rj_schema/rapidjson/include/rapidjson/fwd.h +0 -151
  225. data/ext/rj_schema/rapidjson/include/rapidjson/internal/biginteger.h +0 -290
  226. data/ext/rj_schema/rapidjson/include/rapidjson/internal/diyfp.h +0 -271
  227. data/ext/rj_schema/rapidjson/include/rapidjson/internal/dtoa.h +0 -245
  228. data/ext/rj_schema/rapidjson/include/rapidjson/internal/ieee754.h +0 -78
  229. data/ext/rj_schema/rapidjson/include/rapidjson/internal/itoa.h +0 -308
  230. data/ext/rj_schema/rapidjson/include/rapidjson/internal/meta.h +0 -186
  231. data/ext/rj_schema/rapidjson/include/rapidjson/internal/pow10.h +0 -55
  232. data/ext/rj_schema/rapidjson/include/rapidjson/internal/regex.h +0 -732
  233. data/ext/rj_schema/rapidjson/include/rapidjson/internal/stack.h +0 -231
  234. data/ext/rj_schema/rapidjson/include/rapidjson/internal/strfunc.h +0 -69
  235. data/ext/rj_schema/rapidjson/include/rapidjson/internal/strtod.h +0 -290
  236. data/ext/rj_schema/rapidjson/include/rapidjson/internal/swap.h +0 -46
  237. data/ext/rj_schema/rapidjson/include/rapidjson/istreamwrapper.h +0 -113
  238. data/ext/rj_schema/rapidjson/include/rapidjson/memorybuffer.h +0 -70
  239. data/ext/rj_schema/rapidjson/include/rapidjson/memorystream.h +0 -71
  240. data/ext/rj_schema/rapidjson/include/rapidjson/msinttypes/inttypes.h +0 -316
  241. data/ext/rj_schema/rapidjson/include/rapidjson/msinttypes/stdint.h +0 -300
  242. data/ext/rj_schema/rapidjson/include/rapidjson/ostreamwrapper.h +0 -81
  243. data/ext/rj_schema/rapidjson/include/rapidjson/pointer.h +0 -1357
  244. data/ext/rj_schema/rapidjson/include/rapidjson/prettywriter.h +0 -277
  245. data/ext/rj_schema/rapidjson/include/rapidjson/rapidjson.h +0 -630
  246. data/ext/rj_schema/rapidjson/include/rapidjson/reader.h +0 -2230
  247. data/ext/rj_schema/rapidjson/include/rapidjson/schema.h +0 -2494
  248. data/ext/rj_schema/rapidjson/include/rapidjson/stream.h +0 -223
  249. data/ext/rj_schema/rapidjson/include/rapidjson/stringbuffer.h +0 -121
  250. data/ext/rj_schema/rapidjson/include/rapidjson/writer.h +0 -710
  251. data/ext/rj_schema/rapidjson/include_dirs.js +0 -2
  252. data/ext/rj_schema/rapidjson/library.json +0 -15
  253. data/ext/rj_schema/rapidjson/license.txt +0 -57
  254. data/ext/rj_schema/rapidjson/package.json +0 -24
  255. data/ext/rj_schema/rapidjson/rapidjson.autopkg +0 -77
  256. data/ext/rj_schema/rapidjson/readme.md +0 -160
  257. data/ext/rj_schema/rapidjson/readme.zh-cn.md +0 -152
  258. data/ext/rj_schema/rapidjson/test/CMakeLists.txt +0 -20
  259. data/ext/rj_schema/rapidjson/test/perftest/CMakeLists.txt +0 -28
  260. data/ext/rj_schema/rapidjson/test/perftest/misctest.cpp +0 -974
  261. data/ext/rj_schema/rapidjson/test/perftest/perftest.cpp +0 -24
  262. data/ext/rj_schema/rapidjson/test/perftest/perftest.h +0 -185
  263. data/ext/rj_schema/rapidjson/test/perftest/platformtest.cpp +0 -166
  264. data/ext/rj_schema/rapidjson/test/perftest/rapidjsontest.cpp +0 -472
  265. data/ext/rj_schema/rapidjson/test/perftest/schematest.cpp +0 -223
  266. data/ext/rj_schema/rapidjson/test/unittest/CMakeLists.txt +0 -92
  267. data/ext/rj_schema/rapidjson/test/unittest/allocatorstest.cpp +0 -100
  268. data/ext/rj_schema/rapidjson/test/unittest/bigintegertest.cpp +0 -138
  269. data/ext/rj_schema/rapidjson/test/unittest/cursorstreamwrappertest.cpp +0 -115
  270. data/ext/rj_schema/rapidjson/test/unittest/documenttest.cpp +0 -672
  271. data/ext/rj_schema/rapidjson/test/unittest/dtoatest.cpp +0 -98
  272. data/ext/rj_schema/rapidjson/test/unittest/encodedstreamtest.cpp +0 -313
  273. data/ext/rj_schema/rapidjson/test/unittest/encodingstest.cpp +0 -451
  274. data/ext/rj_schema/rapidjson/test/unittest/filestreamtest.cpp +0 -112
  275. data/ext/rj_schema/rapidjson/test/unittest/fwdtest.cpp +0 -230
  276. data/ext/rj_schema/rapidjson/test/unittest/istreamwrappertest.cpp +0 -181
  277. data/ext/rj_schema/rapidjson/test/unittest/itoatest.cpp +0 -160
  278. data/ext/rj_schema/rapidjson/test/unittest/jsoncheckertest.cpp +0 -143
  279. data/ext/rj_schema/rapidjson/test/unittest/namespacetest.cpp +0 -70
  280. data/ext/rj_schema/rapidjson/test/unittest/ostreamwrappertest.cpp +0 -92
  281. data/ext/rj_schema/rapidjson/test/unittest/pointertest.cpp +0 -1529
  282. data/ext/rj_schema/rapidjson/test/unittest/prettywritertest.cpp +0 -373
  283. data/ext/rj_schema/rapidjson/test/unittest/readertest.cpp +0 -2190
  284. data/ext/rj_schema/rapidjson/test/unittest/regextest.cpp +0 -638
  285. data/ext/rj_schema/rapidjson/test/unittest/schematest.cpp +0 -2072
  286. data/ext/rj_schema/rapidjson/test/unittest/simdtest.cpp +0 -219
  287. data/ext/rj_schema/rapidjson/test/unittest/strfunctest.cpp +0 -30
  288. data/ext/rj_schema/rapidjson/test/unittest/stringbuffertest.cpp +0 -192
  289. data/ext/rj_schema/rapidjson/test/unittest/strtodtest.cpp +0 -132
  290. data/ext/rj_schema/rapidjson/test/unittest/unittest.cpp +0 -51
  291. data/ext/rj_schema/rapidjson/test/unittest/unittest.h +0 -140
  292. data/ext/rj_schema/rapidjson/test/unittest/valuetest.cpp +0 -1851
  293. data/ext/rj_schema/rapidjson/test/unittest/writertest.cpp +0 -598
  294. data/ext/rj_schema/rapidjson/test/valgrind.supp +0 -17
  295. data/ext/rj_schema/rapidjson/thirdparty/gtest/CMakeLists.txt +0 -16
  296. data/ext/rj_schema/rapidjson/thirdparty/gtest/README.md +0 -141
  297. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CHANGES +0 -126
  298. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CMakeLists.txt +0 -202
  299. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CONTRIBUTORS +0 -40
  300. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/LICENSE +0 -28
  301. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/Makefile.am +0 -224
  302. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/README.md +0 -333
  303. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/configure.ac +0 -146
  304. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/CheatSheet.md +0 -562
  305. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/CookBook.md +0 -3675
  306. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/DesignDoc.md +0 -280
  307. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/DevGuide.md +0 -132
  308. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/Documentation.md +0 -12
  309. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/ForDummies.md +0 -439
  310. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/FrequentlyAskedQuestions.md +0 -628
  311. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/KnownIssues.md +0 -19
  312. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/CheatSheet.md +0 -525
  313. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/CookBook.md +0 -3250
  314. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/Documentation.md +0 -11
  315. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/ForDummies.md +0 -439
  316. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/FrequentlyAskedQuestions.md +0 -624
  317. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/CheatSheet.md +0 -534
  318. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/CookBook.md +0 -3342
  319. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/Documentation.md +0 -12
  320. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/ForDummies.md +0 -439
  321. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/FrequentlyAskedQuestions.md +0 -628
  322. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/CheatSheet.md +0 -556
  323. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/CookBook.md +0 -3432
  324. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/Documentation.md +0 -12
  325. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/ForDummies.md +0 -439
  326. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/FrequentlyAskedQuestions.md +0 -628
  327. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-actions.h +0 -1205
  328. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-cardinalities.h +0 -147
  329. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h +0 -2377
  330. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h.pump +0 -794
  331. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h +0 -1095
  332. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump +0 -291
  333. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h +0 -2179
  334. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h.pump +0 -672
  335. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h +0 -397
  336. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h.pump +0 -161
  337. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-matchers.h +0 -4399
  338. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-more-actions.h +0 -246
  339. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-more-matchers.h +0 -58
  340. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-spec-builders.h +0 -1847
  341. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock.h +0 -94
  342. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +0 -8
  343. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +0 -10
  344. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-matchers.h +0 -39
  345. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-port.h +0 -46
  346. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h +0 -279
  347. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h.pump +0 -136
  348. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-internal-utils.h +0 -511
  349. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-port.h +0 -91
  350. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/make/Makefile +0 -101
  351. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.sln +0 -32
  352. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.vcproj +0 -191
  353. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_config.vsprops +0 -15
  354. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_main.vcproj +0 -187
  355. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_test.vcproj +0 -201
  356. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.sln +0 -32
  357. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.vcxproj +0 -82
  358. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_config.props +0 -19
  359. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_main.vcxproj +0 -88
  360. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_test.vcxproj +0 -101
  361. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.sln +0 -32
  362. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.vcxproj +0 -84
  363. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_config.props +0 -19
  364. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_main.vcxproj +0 -90
  365. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_test.vcxproj +0 -103
  366. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/fuse_gmock_files.py +0 -240
  367. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/LICENSE +0 -203
  368. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/README +0 -35
  369. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/README.cppclean +0 -115
  370. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/__init__.py +0 -0
  371. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/ast.py +0 -1733
  372. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/gmock_class.py +0 -227
  373. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/gmock_class_test.py +0 -448
  374. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/keywords.py +0 -59
  375. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/tokenize.py +0 -287
  376. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/utils.py +0 -41
  377. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/gmock_gen.py +0 -31
  378. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/gmock-config.in +0 -303
  379. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/gmock_doctor.py +0 -640
  380. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/upload.py +0 -1387
  381. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/upload_gmock.py +0 -78
  382. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-all.cc +0 -47
  383. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-cardinalities.cc +0 -156
  384. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-internal-utils.cc +0 -174
  385. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-matchers.cc +0 -498
  386. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-spec-builders.cc +0 -823
  387. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock.cc +0 -183
  388. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock_main.cc +0 -54
  389. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-actions_test.cc +0 -1411
  390. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-cardinalities_test.cc +0 -428
  391. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-actions_test.cc +0 -1228
  392. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-function-mockers_test.cc +0 -622
  393. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-internal-utils_test.cc +0 -127
  394. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-matchers_test.cc +0 -1286
  395. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-internal-utils_test.cc +0 -699
  396. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-matchers_test.cc +0 -5648
  397. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-more-actions_test.cc +0 -708
  398. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-nice-strict_test.cc +0 -424
  399. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-port_test.cc +0 -43
  400. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-spec-builders_test.cc +0 -2644
  401. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_all_test.cc +0 -51
  402. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_ex_test.cc +0 -81
  403. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_leak_test.py +0 -108
  404. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_leak_test_.cc +0 -100
  405. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link2_test.cc +0 -40
  406. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.cc +0 -40
  407. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.h +0 -669
  408. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test.py +0 -180
  409. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_.cc +0 -291
  410. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_golden.txt +0 -310
  411. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_stress_test.cc +0 -322
  412. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_test.cc +0 -220
  413. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_test_utils.py +0 -112
  414. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CHANGES +0 -157
  415. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CMakeLists.txt +0 -286
  416. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CONTRIBUTORS +0 -37
  417. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/LICENSE +0 -28
  418. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/Makefile.am +0 -310
  419. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/README.md +0 -280
  420. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/cmake/internal_utils.cmake +0 -242
  421. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest.cbproj +0 -138
  422. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest.groupproj +0 -54
  423. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_all.cc +0 -38
  424. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_link.cc +0 -40
  425. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_main.cbproj +0 -82
  426. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_unittest.cbproj +0 -88
  427. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/configure.ac +0 -68
  428. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/AdvancedGuide.md +0 -2182
  429. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/DevGuide.md +0 -126
  430. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Documentation.md +0 -14
  431. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/FAQ.md +0 -1087
  432. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Primer.md +0 -502
  433. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/PumpManual.md +0 -177
  434. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Samples.md +0 -14
  435. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_AdvancedGuide.md +0 -2096
  436. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_Documentation.md +0 -12
  437. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_FAQ.md +0 -886
  438. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_Primer.md +0 -497
  439. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_PumpManual.md +0 -177
  440. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_XcodeGuide.md +0 -93
  441. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_AdvancedGuide.md +0 -2178
  442. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Documentation.md +0 -14
  443. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_FAQ.md +0 -1038
  444. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Primer.md +0 -501
  445. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_PumpManual.md +0 -177
  446. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Samples.md +0 -14
  447. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_XcodeGuide.md +0 -93
  448. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_AdvancedGuide.md +0 -2181
  449. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Documentation.md +0 -14
  450. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_FAQ.md +0 -1082
  451. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Primer.md +0 -501
  452. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_PumpManual.md +0 -177
  453. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Samples.md +0 -14
  454. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_XcodeGuide.md +0 -93
  455. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/XcodeGuide.md +0 -93
  456. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-death-test.h +0 -294
  457. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-message.h +0 -250
  458. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h +0 -1444
  459. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h.pump +0 -510
  460. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-printers.h +0 -993
  461. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-spi.h +0 -232
  462. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-test-part.h +0 -179
  463. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-typed-test.h +0 -263
  464. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest.h +0 -2236
  465. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_pred_impl.h +0 -358
  466. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_prod.h +0 -58
  467. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest-port.h +0 -69
  468. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest-printers.h +0 -42
  469. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest.h +0 -41
  470. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-death-test-internal.h +0 -319
  471. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-filepath.h +0 -206
  472. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-internal.h +0 -1238
  473. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-linked_ptr.h +0 -243
  474. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h +0 -5146
  475. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +0 -286
  476. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util.h +0 -731
  477. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port-arch.h +0 -93
  478. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port.h +0 -2554
  479. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-string.h +0 -167
  480. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-tuple.h +0 -1020
  481. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-tuple.h.pump +0 -347
  482. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h +0 -3331
  483. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h.pump +0 -297
  484. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/m4/acx_pthread.m4 +0 -363
  485. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/m4/gtest.m4 +0 -74
  486. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/make/Makefile +0 -82
  487. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest-md.sln +0 -45
  488. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest-md.vcproj +0 -126
  489. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest.sln +0 -45
  490. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest.vcproj +0 -126
  491. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_main-md.vcproj +0 -129
  492. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_main.vcproj +0 -129
  493. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_prod_test-md.vcproj +0 -164
  494. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_prod_test.vcproj +0 -164
  495. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest-md.vcproj +0 -147
  496. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest.vcproj +0 -147
  497. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/prime_tables.h +0 -123
  498. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1.cc +0 -68
  499. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1.h +0 -43
  500. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample10_unittest.cc +0 -144
  501. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1_unittest.cc +0 -153
  502. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2.cc +0 -56
  503. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2.h +0 -85
  504. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2_unittest.cc +0 -109
  505. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample3-inl.h +0 -172
  506. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample3_unittest.cc +0 -151
  507. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4.cc +0 -46
  508. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4.h +0 -53
  509. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4_unittest.cc +0 -45
  510. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample5_unittest.cc +0 -199
  511. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample6_unittest.cc +0 -224
  512. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample7_unittest.cc +0 -130
  513. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample8_unittest.cc +0 -173
  514. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample9_unittest.cc +0 -160
  515. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/common.py +0 -83
  516. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/fuse_gtest_files.py +0 -253
  517. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/gen_gtest_pred_impl.py +0 -730
  518. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/gtest-config.in +0 -274
  519. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/pump.py +0 -855
  520. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/release_docs.py +0 -158
  521. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/test/Makefile +0 -59
  522. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/upload.py +0 -1387
  523. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/upload_gtest.py +0 -78
  524. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-all.cc +0 -48
  525. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-death-test.cc +0 -1342
  526. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-filepath.cc +0 -387
  527. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-internal-inl.h +0 -1183
  528. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-port.cc +0 -1259
  529. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-printers.cc +0 -373
  530. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-test-part.cc +0 -110
  531. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-typed-test.cc +0 -118
  532. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest.cc +0 -5388
  533. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest_main.cc +0 -38
  534. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-death-test_ex_test.cc +0 -93
  535. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-death-test_test.cc +0 -1427
  536. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-filepath_test.cc +0 -662
  537. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-linked_ptr_test.cc +0 -154
  538. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-listener_test.cc +0 -311
  539. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-message_test.cc +0 -159
  540. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-options_test.cc +0 -215
  541. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test2_test.cc +0 -65
  542. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.cc +0 -1055
  543. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.h +0 -57
  544. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-port_test.cc +0 -1304
  545. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-printers_test.cc +0 -1635
  546. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-test-part_test.cc +0 -208
  547. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-tuple_test.cc +0 -320
  548. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test2_test.cc +0 -45
  549. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test_test.cc +0 -380
  550. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test_test.h +0 -66
  551. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-unittest-api_test.cc +0 -341
  552. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_all_test.cc +0 -47
  553. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest.py +0 -212
  554. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest_.cc +0 -88
  555. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test.py +0 -237
  556. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test_.cc +0 -311
  557. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test.py +0 -130
  558. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test_.cc +0 -71
  559. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test.py +0 -117
  560. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test_.cc +0 -126
  561. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_environment_test.cc +0 -192
  562. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest.py +0 -636
  563. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest_.cc +0 -140
  564. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_help_test.py +0 -172
  565. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_help_test_.cc +0 -46
  566. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_list_tests_unittest.py +0 -207
  567. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_list_tests_unittest_.cc +0 -157
  568. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_main_unittest.cc +0 -45
  569. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_no_test_unittest.cc +0 -56
  570. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test.py +0 -340
  571. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_.cc +0 -1062
  572. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_golden_lin.txt +0 -743
  573. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_pred_impl_unittest.cc +0 -2427
  574. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_premature_exit_test.cc +0 -127
  575. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_prod_test.cc +0 -57
  576. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_repeat_test.cc +0 -253
  577. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_shuffle_test.py +0 -325
  578. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_shuffle_test_.cc +0 -103
  579. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_sole_header_test.cc +0 -57
  580. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_stress_test.cc +0 -256
  581. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_test_utils.py +0 -320
  582. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_ex_test.cc +0 -92
  583. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_test.py +0 -171
  584. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_test_.cc +0 -72
  585. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test.py +0 -70
  586. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test_.cc +0 -43
  587. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_unittest.cc +0 -7706
  588. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile1_test_.cc +0 -49
  589. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile2_test_.cc +0 -49
  590. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfiles_test.py +0 -132
  591. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest.py +0 -308
  592. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest_.cc +0 -181
  593. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_test_utils.py +0 -194
  594. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/production.cc +0 -36
  595. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/production.h +0 -55
  596. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/DebugProject.xcconfig +0 -30
  597. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/FrameworkTarget.xcconfig +0 -17
  598. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/General.xcconfig +0 -41
  599. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/ReleaseProject.xcconfig +0 -32
  600. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/StaticLibraryTarget.xcconfig +0 -18
  601. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/TestTarget.xcconfig +0 -8
  602. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Resources/Info.plist +0 -30
  603. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/Info.plist +0 -28
  604. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj +0 -457
  605. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/runtests.sh +0 -62
  606. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget.cc +0 -63
  607. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget.h +0 -59
  608. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget_test.cc +0 -68
  609. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Scripts/runtests.sh +0 -65
  610. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Scripts/versiongenerate.py +0 -100
  611. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/gtest.xcodeproj/project.pbxproj +0 -1135
  612. data/ext/rj_schema/rapidjson/thirdparty/gtest/travis.sh +0 -15
  613. data/ext/rj_schema/rapidjson/travis-doxygen.sh +0 -121
@@ -1,246 +0,0 @@
1
- // Copyright 2007, 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
- // Google Mock - a framework for writing C++ mock classes.
33
- //
34
- // This file implements some actions that depend on gmock-generated-actions.h.
35
-
36
- #ifndef GMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
37
- #define GMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
38
-
39
- #include <algorithm>
40
-
41
- #include "gmock/gmock-generated-actions.h"
42
-
43
- namespace testing {
44
- namespace internal {
45
-
46
- // Implements the Invoke(f) action. The template argument
47
- // FunctionImpl is the implementation type of f, which can be either a
48
- // function pointer or a functor. Invoke(f) can be used as an
49
- // Action<F> as long as f's type is compatible with F (i.e. f can be
50
- // assigned to a tr1::function<F>).
51
- template <typename FunctionImpl>
52
- class InvokeAction {
53
- public:
54
- // The c'tor makes a copy of function_impl (either a function
55
- // pointer or a functor).
56
- explicit InvokeAction(FunctionImpl function_impl)
57
- : function_impl_(function_impl) {}
58
-
59
- template <typename Result, typename ArgumentTuple>
60
- Result Perform(const ArgumentTuple& args) {
61
- return InvokeHelper<Result, ArgumentTuple>::Invoke(function_impl_, args);
62
- }
63
-
64
- private:
65
- FunctionImpl function_impl_;
66
-
67
- GTEST_DISALLOW_ASSIGN_(InvokeAction);
68
- };
69
-
70
- // Implements the Invoke(object_ptr, &Class::Method) action.
71
- template <class Class, typename MethodPtr>
72
- class InvokeMethodAction {
73
- public:
74
- InvokeMethodAction(Class* obj_ptr, MethodPtr method_ptr)
75
- : method_ptr_(method_ptr), obj_ptr_(obj_ptr) {}
76
-
77
- template <typename Result, typename ArgumentTuple>
78
- Result Perform(const ArgumentTuple& args) const {
79
- return InvokeHelper<Result, ArgumentTuple>::InvokeMethod(
80
- obj_ptr_, method_ptr_, args);
81
- }
82
-
83
- private:
84
- // The order of these members matters. Reversing the order can trigger
85
- // warning C4121 in MSVC (see
86
- // http://computer-programming-forum.com/7-vc.net/6fbc30265f860ad1.htm ).
87
- const MethodPtr method_ptr_;
88
- Class* const obj_ptr_;
89
-
90
- GTEST_DISALLOW_ASSIGN_(InvokeMethodAction);
91
- };
92
-
93
- // An internal replacement for std::copy which mimics its behavior. This is
94
- // necessary because Visual Studio deprecates ::std::copy, issuing warning 4996.
95
- // However Visual Studio 2010 and later do not honor #pragmas which disable that
96
- // warning.
97
- template<typename InputIterator, typename OutputIterator>
98
- inline OutputIterator CopyElements(InputIterator first,
99
- InputIterator last,
100
- OutputIterator output) {
101
- for (; first != last; ++first, ++output) {
102
- *output = *first;
103
- }
104
- return output;
105
- }
106
-
107
- } // namespace internal
108
-
109
- // Various overloads for Invoke().
110
-
111
- // Creates an action that invokes 'function_impl' with the mock
112
- // function's arguments.
113
- template <typename FunctionImpl>
114
- PolymorphicAction<internal::InvokeAction<FunctionImpl> > Invoke(
115
- FunctionImpl function_impl) {
116
- return MakePolymorphicAction(
117
- internal::InvokeAction<FunctionImpl>(function_impl));
118
- }
119
-
120
- // Creates an action that invokes the given method on the given object
121
- // with the mock function's arguments.
122
- template <class Class, typename MethodPtr>
123
- PolymorphicAction<internal::InvokeMethodAction<Class, MethodPtr> > Invoke(
124
- Class* obj_ptr, MethodPtr method_ptr) {
125
- return MakePolymorphicAction(
126
- internal::InvokeMethodAction<Class, MethodPtr>(obj_ptr, method_ptr));
127
- }
128
-
129
- // WithoutArgs(inner_action) can be used in a mock function with a
130
- // non-empty argument list to perform inner_action, which takes no
131
- // argument. In other words, it adapts an action accepting no
132
- // argument to one that accepts (and ignores) arguments.
133
- template <typename InnerAction>
134
- inline internal::WithArgsAction<InnerAction>
135
- WithoutArgs(const InnerAction& action) {
136
- return internal::WithArgsAction<InnerAction>(action);
137
- }
138
-
139
- // WithArg<k>(an_action) creates an action that passes the k-th
140
- // (0-based) argument of the mock function to an_action and performs
141
- // it. It adapts an action accepting one argument to one that accepts
142
- // multiple arguments. For convenience, we also provide
143
- // WithArgs<k>(an_action) (defined below) as a synonym.
144
- template <int k, typename InnerAction>
145
- inline internal::WithArgsAction<InnerAction, k>
146
- WithArg(const InnerAction& action) {
147
- return internal::WithArgsAction<InnerAction, k>(action);
148
- }
149
-
150
- // The ACTION*() macros trigger warning C4100 (unreferenced formal
151
- // parameter) in MSVC with -W4. Unfortunately they cannot be fixed in
152
- // the macro definition, as the warnings are generated when the macro
153
- // is expanded and macro expansion cannot contain #pragma. Therefore
154
- // we suppress them here.
155
- #ifdef _MSC_VER
156
- # pragma warning(push)
157
- # pragma warning(disable:4100)
158
- #endif
159
-
160
- // Action ReturnArg<k>() returns the k-th argument of the mock function.
161
- ACTION_TEMPLATE(ReturnArg,
162
- HAS_1_TEMPLATE_PARAMS(int, k),
163
- AND_0_VALUE_PARAMS()) {
164
- return ::testing::get<k>(args);
165
- }
166
-
167
- // Action SaveArg<k>(pointer) saves the k-th (0-based) argument of the
168
- // mock function to *pointer.
169
- ACTION_TEMPLATE(SaveArg,
170
- HAS_1_TEMPLATE_PARAMS(int, k),
171
- AND_1_VALUE_PARAMS(pointer)) {
172
- *pointer = ::testing::get<k>(args);
173
- }
174
-
175
- // Action SaveArgPointee<k>(pointer) saves the value pointed to
176
- // by the k-th (0-based) argument of the mock function to *pointer.
177
- ACTION_TEMPLATE(SaveArgPointee,
178
- HAS_1_TEMPLATE_PARAMS(int, k),
179
- AND_1_VALUE_PARAMS(pointer)) {
180
- *pointer = *::testing::get<k>(args);
181
- }
182
-
183
- // Action SetArgReferee<k>(value) assigns 'value' to the variable
184
- // referenced by the k-th (0-based) argument of the mock function.
185
- ACTION_TEMPLATE(SetArgReferee,
186
- HAS_1_TEMPLATE_PARAMS(int, k),
187
- AND_1_VALUE_PARAMS(value)) {
188
- typedef typename ::testing::tuple_element<k, args_type>::type argk_type;
189
- // Ensures that argument #k is a reference. If you get a compiler
190
- // error on the next line, you are using SetArgReferee<k>(value) in
191
- // a mock function whose k-th (0-based) argument is not a reference.
192
- GTEST_COMPILE_ASSERT_(internal::is_reference<argk_type>::value,
193
- SetArgReferee_must_be_used_with_a_reference_argument);
194
- ::testing::get<k>(args) = value;
195
- }
196
-
197
- // Action SetArrayArgument<k>(first, last) copies the elements in
198
- // source range [first, last) to the array pointed to by the k-th
199
- // (0-based) argument, which can be either a pointer or an
200
- // iterator. The action does not take ownership of the elements in the
201
- // source range.
202
- ACTION_TEMPLATE(SetArrayArgument,
203
- HAS_1_TEMPLATE_PARAMS(int, k),
204
- AND_2_VALUE_PARAMS(first, last)) {
205
- // Visual Studio deprecates ::std::copy, so we use our own copy in that case.
206
- #ifdef _MSC_VER
207
- internal::CopyElements(first, last, ::testing::get<k>(args));
208
- #else
209
- ::std::copy(first, last, ::testing::get<k>(args));
210
- #endif
211
- }
212
-
213
- // Action DeleteArg<k>() deletes the k-th (0-based) argument of the mock
214
- // function.
215
- ACTION_TEMPLATE(DeleteArg,
216
- HAS_1_TEMPLATE_PARAMS(int, k),
217
- AND_0_VALUE_PARAMS()) {
218
- delete ::testing::get<k>(args);
219
- }
220
-
221
- // This action returns the value pointed to by 'pointer'.
222
- ACTION_P(ReturnPointee, pointer) { return *pointer; }
223
-
224
- // Action Throw(exception) can be used in a mock function of any type
225
- // to throw the given exception. Any copyable value can be thrown.
226
- #if GTEST_HAS_EXCEPTIONS
227
-
228
- // Suppresses the 'unreachable code' warning that VC generates in opt modes.
229
- # ifdef _MSC_VER
230
- # pragma warning(push) // Saves the current warning state.
231
- # pragma warning(disable:4702) // Temporarily disables warning 4702.
232
- # endif
233
- ACTION_P(Throw, exception) { throw exception; }
234
- # ifdef _MSC_VER
235
- # pragma warning(pop) // Restores the warning state.
236
- # endif
237
-
238
- #endif // GTEST_HAS_EXCEPTIONS
239
-
240
- #ifdef _MSC_VER
241
- # pragma warning(pop)
242
- #endif
243
-
244
- } // namespace testing
245
-
246
- #endif // GMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
@@ -1,58 +0,0 @@
1
- // Copyright 2013, 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: marcus.boerger@google.com (Marcus Boerger)
31
-
32
- // Google Mock - a framework for writing C++ mock classes.
33
- //
34
- // This file implements some matchers that depend on gmock-generated-matchers.h.
35
- //
36
- // Note that tests are implemented in gmock-matchers_test.cc rather than
37
- // gmock-more-matchers-test.cc.
38
-
39
- #ifndef GMOCK_GMOCK_MORE_MATCHERS_H_
40
- #define GMOCK_GMOCK_MORE_MATCHERS_H_
41
-
42
- #include "gmock/gmock-generated-matchers.h"
43
-
44
- namespace testing {
45
-
46
- // Defines a matcher that matches an empty container. The container must
47
- // support both size() and empty(), which all STL-like containers provide.
48
- MATCHER(IsEmpty, negation ? "isn't empty" : "is empty") {
49
- if (arg.empty()) {
50
- return true;
51
- }
52
- *result_listener << "whose size is " << arg.size();
53
- return false;
54
- }
55
-
56
- } // namespace testing
57
-
58
- #endif // GMOCK_GMOCK_MORE_MATCHERS_H_
@@ -1,1847 +0,0 @@
1
- // Copyright 2007, 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
- // Google Mock - a framework for writing C++ mock classes.
33
- //
34
- // This file implements the ON_CALL() and EXPECT_CALL() macros.
35
- //
36
- // A user can use the ON_CALL() macro to specify the default action of
37
- // a mock method. The syntax is:
38
- //
39
- // ON_CALL(mock_object, Method(argument-matchers))
40
- // .With(multi-argument-matcher)
41
- // .WillByDefault(action);
42
- //
43
- // where the .With() clause is optional.
44
- //
45
- // A user can use the EXPECT_CALL() macro to specify an expectation on
46
- // a mock method. The syntax is:
47
- //
48
- // EXPECT_CALL(mock_object, Method(argument-matchers))
49
- // .With(multi-argument-matchers)
50
- // .Times(cardinality)
51
- // .InSequence(sequences)
52
- // .After(expectations)
53
- // .WillOnce(action)
54
- // .WillRepeatedly(action)
55
- // .RetiresOnSaturation();
56
- //
57
- // where all clauses are optional, and .InSequence()/.After()/
58
- // .WillOnce() can appear any number of times.
59
-
60
- #ifndef GMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
61
- #define GMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
62
-
63
- #include <map>
64
- #include <set>
65
- #include <sstream>
66
- #include <string>
67
- #include <vector>
68
-
69
- #if GTEST_HAS_EXCEPTIONS
70
- # include <stdexcept> // NOLINT
71
- #endif
72
-
73
- #include "gmock/gmock-actions.h"
74
- #include "gmock/gmock-cardinalities.h"
75
- #include "gmock/gmock-matchers.h"
76
- #include "gmock/internal/gmock-internal-utils.h"
77
- #include "gmock/internal/gmock-port.h"
78
- #include "gtest/gtest.h"
79
-
80
- namespace testing {
81
-
82
- // An abstract handle of an expectation.
83
- class Expectation;
84
-
85
- // A set of expectation handles.
86
- class ExpectationSet;
87
-
88
- // Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION
89
- // and MUST NOT BE USED IN USER CODE!!!
90
- namespace internal {
91
-
92
- // Implements a mock function.
93
- template <typename F> class FunctionMocker;
94
-
95
- // Base class for expectations.
96
- class ExpectationBase;
97
-
98
- // Implements an expectation.
99
- template <typename F> class TypedExpectation;
100
-
101
- // Helper class for testing the Expectation class template.
102
- class ExpectationTester;
103
-
104
- // Base class for function mockers.
105
- template <typename F> class FunctionMockerBase;
106
-
107
- // Protects the mock object registry (in class Mock), all function
108
- // mockers, and all expectations.
109
- //
110
- // The reason we don't use more fine-grained protection is: when a
111
- // mock function Foo() is called, it needs to consult its expectations
112
- // to see which one should be picked. If another thread is allowed to
113
- // call a mock function (either Foo() or a different one) at the same
114
- // time, it could affect the "retired" attributes of Foo()'s
115
- // expectations when InSequence() is used, and thus affect which
116
- // expectation gets picked. Therefore, we sequence all mock function
117
- // calls to ensure the integrity of the mock objects' states.
118
- GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_gmock_mutex);
119
-
120
- // Untyped base class for ActionResultHolder<R>.
121
- class UntypedActionResultHolderBase;
122
-
123
- // Abstract base class of FunctionMockerBase. This is the
124
- // type-agnostic part of the function mocker interface. Its pure
125
- // virtual methods are implemented by FunctionMockerBase.
126
- class GTEST_API_ UntypedFunctionMockerBase {
127
- public:
128
- UntypedFunctionMockerBase();
129
- virtual ~UntypedFunctionMockerBase();
130
-
131
- // Verifies that all expectations on this mock function have been
132
- // satisfied. Reports one or more Google Test non-fatal failures
133
- // and returns false if not.
134
- bool VerifyAndClearExpectationsLocked()
135
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
136
-
137
- // Clears the ON_CALL()s set on this mock function.
138
- virtual void ClearDefaultActionsLocked()
139
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) = 0;
140
-
141
- // In all of the following Untyped* functions, it's the caller's
142
- // responsibility to guarantee the correctness of the arguments'
143
- // types.
144
-
145
- // Performs the default action with the given arguments and returns
146
- // the action's result. The call description string will be used in
147
- // the error message to describe the call in the case the default
148
- // action fails.
149
- // L = *
150
- virtual UntypedActionResultHolderBase* UntypedPerformDefaultAction(
151
- const void* untyped_args,
152
- const string& call_description) const = 0;
153
-
154
- // Performs the given action with the given arguments and returns
155
- // the action's result.
156
- // L = *
157
- virtual UntypedActionResultHolderBase* UntypedPerformAction(
158
- const void* untyped_action,
159
- const void* untyped_args) const = 0;
160
-
161
- // Writes a message that the call is uninteresting (i.e. neither
162
- // explicitly expected nor explicitly unexpected) to the given
163
- // ostream.
164
- virtual void UntypedDescribeUninterestingCall(
165
- const void* untyped_args,
166
- ::std::ostream* os) const
167
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) = 0;
168
-
169
- // Returns the expectation that matches the given function arguments
170
- // (or NULL is there's no match); when a match is found,
171
- // untyped_action is set to point to the action that should be
172
- // performed (or NULL if the action is "do default"), and
173
- // is_excessive is modified to indicate whether the call exceeds the
174
- // expected number.
175
- virtual const ExpectationBase* UntypedFindMatchingExpectation(
176
- const void* untyped_args,
177
- const void** untyped_action, bool* is_excessive,
178
- ::std::ostream* what, ::std::ostream* why)
179
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) = 0;
180
-
181
- // Prints the given function arguments to the ostream.
182
- virtual void UntypedPrintArgs(const void* untyped_args,
183
- ::std::ostream* os) const = 0;
184
-
185
- // Sets the mock object this mock method belongs to, and registers
186
- // this information in the global mock registry. Will be called
187
- // whenever an EXPECT_CALL() or ON_CALL() is executed on this mock
188
- // method.
189
- // TODO(wan@google.com): rename to SetAndRegisterOwner().
190
- void RegisterOwner(const void* mock_obj)
191
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
192
-
193
- // Sets the mock object this mock method belongs to, and sets the
194
- // name of the mock function. Will be called upon each invocation
195
- // of this mock function.
196
- void SetOwnerAndName(const void* mock_obj, const char* name)
197
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
198
-
199
- // Returns the mock object this mock method belongs to. Must be
200
- // called after RegisterOwner() or SetOwnerAndName() has been
201
- // called.
202
- const void* MockObject() const
203
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
204
-
205
- // Returns the name of this mock method. Must be called after
206
- // SetOwnerAndName() has been called.
207
- const char* Name() const
208
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
209
-
210
- // Returns the result of invoking this mock function with the given
211
- // arguments. This function can be safely called from multiple
212
- // threads concurrently. The caller is responsible for deleting the
213
- // result.
214
- UntypedActionResultHolderBase* UntypedInvokeWith(
215
- const void* untyped_args)
216
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
217
-
218
- protected:
219
- typedef std::vector<const void*> UntypedOnCallSpecs;
220
-
221
- typedef std::vector<internal::linked_ptr<ExpectationBase> >
222
- UntypedExpectations;
223
-
224
- // Returns an Expectation object that references and co-owns exp,
225
- // which must be an expectation on this mock function.
226
- Expectation GetHandleOf(ExpectationBase* exp);
227
-
228
- // Address of the mock object this mock method belongs to. Only
229
- // valid after this mock method has been called or
230
- // ON_CALL/EXPECT_CALL has been invoked on it.
231
- const void* mock_obj_; // Protected by g_gmock_mutex.
232
-
233
- // Name of the function being mocked. Only valid after this mock
234
- // method has been called.
235
- const char* name_; // Protected by g_gmock_mutex.
236
-
237
- // All default action specs for this function mocker.
238
- UntypedOnCallSpecs untyped_on_call_specs_;
239
-
240
- // All expectations for this function mocker.
241
- UntypedExpectations untyped_expectations_;
242
- }; // class UntypedFunctionMockerBase
243
-
244
- // Untyped base class for OnCallSpec<F>.
245
- class UntypedOnCallSpecBase {
246
- public:
247
- // The arguments are the location of the ON_CALL() statement.
248
- UntypedOnCallSpecBase(const char* a_file, int a_line)
249
- : file_(a_file), line_(a_line), last_clause_(kNone) {}
250
-
251
- // Where in the source file was the default action spec defined?
252
- const char* file() const { return file_; }
253
- int line() const { return line_; }
254
-
255
- protected:
256
- // Gives each clause in the ON_CALL() statement a name.
257
- enum Clause {
258
- // Do not change the order of the enum members! The run-time
259
- // syntax checking relies on it.
260
- kNone,
261
- kWith,
262
- kWillByDefault
263
- };
264
-
265
- // Asserts that the ON_CALL() statement has a certain property.
266
- void AssertSpecProperty(bool property, const string& failure_message) const {
267
- Assert(property, file_, line_, failure_message);
268
- }
269
-
270
- // Expects that the ON_CALL() statement has a certain property.
271
- void ExpectSpecProperty(bool property, const string& failure_message) const {
272
- Expect(property, file_, line_, failure_message);
273
- }
274
-
275
- const char* file_;
276
- int line_;
277
-
278
- // The last clause in the ON_CALL() statement as seen so far.
279
- // Initially kNone and changes as the statement is parsed.
280
- Clause last_clause_;
281
- }; // class UntypedOnCallSpecBase
282
-
283
- // This template class implements an ON_CALL spec.
284
- template <typename F>
285
- class OnCallSpec : public UntypedOnCallSpecBase {
286
- public:
287
- typedef typename Function<F>::ArgumentTuple ArgumentTuple;
288
- typedef typename Function<F>::ArgumentMatcherTuple ArgumentMatcherTuple;
289
-
290
- // Constructs an OnCallSpec object from the information inside
291
- // the parenthesis of an ON_CALL() statement.
292
- OnCallSpec(const char* a_file, int a_line,
293
- const ArgumentMatcherTuple& matchers)
294
- : UntypedOnCallSpecBase(a_file, a_line),
295
- matchers_(matchers),
296
- // By default, extra_matcher_ should match anything. However,
297
- // we cannot initialize it with _ as that triggers a compiler
298
- // bug in Symbian's C++ compiler (cannot decide between two
299
- // overloaded constructors of Matcher<const ArgumentTuple&>).
300
- extra_matcher_(A<const ArgumentTuple&>()) {
301
- }
302
-
303
- // Implements the .With() clause.
304
- OnCallSpec& With(const Matcher<const ArgumentTuple&>& m) {
305
- // Makes sure this is called at most once.
306
- ExpectSpecProperty(last_clause_ < kWith,
307
- ".With() cannot appear "
308
- "more than once in an ON_CALL().");
309
- last_clause_ = kWith;
310
-
311
- extra_matcher_ = m;
312
- return *this;
313
- }
314
-
315
- // Implements the .WillByDefault() clause.
316
- OnCallSpec& WillByDefault(const Action<F>& action) {
317
- ExpectSpecProperty(last_clause_ < kWillByDefault,
318
- ".WillByDefault() must appear "
319
- "exactly once in an ON_CALL().");
320
- last_clause_ = kWillByDefault;
321
-
322
- ExpectSpecProperty(!action.IsDoDefault(),
323
- "DoDefault() cannot be used in ON_CALL().");
324
- action_ = action;
325
- return *this;
326
- }
327
-
328
- // Returns true iff the given arguments match the matchers.
329
- bool Matches(const ArgumentTuple& args) const {
330
- return TupleMatches(matchers_, args) && extra_matcher_.Matches(args);
331
- }
332
-
333
- // Returns the action specified by the user.
334
- const Action<F>& GetAction() const {
335
- AssertSpecProperty(last_clause_ == kWillByDefault,
336
- ".WillByDefault() must appear exactly "
337
- "once in an ON_CALL().");
338
- return action_;
339
- }
340
-
341
- private:
342
- // The information in statement
343
- //
344
- // ON_CALL(mock_object, Method(matchers))
345
- // .With(multi-argument-matcher)
346
- // .WillByDefault(action);
347
- //
348
- // is recorded in the data members like this:
349
- //
350
- // source file that contains the statement => file_
351
- // line number of the statement => line_
352
- // matchers => matchers_
353
- // multi-argument-matcher => extra_matcher_
354
- // action => action_
355
- ArgumentMatcherTuple matchers_;
356
- Matcher<const ArgumentTuple&> extra_matcher_;
357
- Action<F> action_;
358
- }; // class OnCallSpec
359
-
360
- // Possible reactions on uninteresting calls.
361
- enum CallReaction {
362
- kAllow,
363
- kWarn,
364
- kFail,
365
- kDefault = kWarn // By default, warn about uninteresting calls.
366
- };
367
-
368
- } // namespace internal
369
-
370
- // Utilities for manipulating mock objects.
371
- class GTEST_API_ Mock {
372
- public:
373
- // The following public methods can be called concurrently.
374
-
375
- // Tells Google Mock to ignore mock_obj when checking for leaked
376
- // mock objects.
377
- static void AllowLeak(const void* mock_obj)
378
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
379
-
380
- // Verifies and clears all expectations on the given mock object.
381
- // If the expectations aren't satisfied, generates one or more
382
- // Google Test non-fatal failures and returns false.
383
- static bool VerifyAndClearExpectations(void* mock_obj)
384
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
385
-
386
- // Verifies all expectations on the given mock object and clears its
387
- // default actions and expectations. Returns true iff the
388
- // verification was successful.
389
- static bool VerifyAndClear(void* mock_obj)
390
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
391
-
392
- private:
393
- friend class internal::UntypedFunctionMockerBase;
394
-
395
- // Needed for a function mocker to register itself (so that we know
396
- // how to clear a mock object).
397
- template <typename F>
398
- friend class internal::FunctionMockerBase;
399
-
400
- template <typename M>
401
- friend class NiceMock;
402
-
403
- template <typename M>
404
- friend class NaggyMock;
405
-
406
- template <typename M>
407
- friend class StrictMock;
408
-
409
- // Tells Google Mock to allow uninteresting calls on the given mock
410
- // object.
411
- static void AllowUninterestingCalls(const void* mock_obj)
412
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
413
-
414
- // Tells Google Mock to warn the user about uninteresting calls on
415
- // the given mock object.
416
- static void WarnUninterestingCalls(const void* mock_obj)
417
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
418
-
419
- // Tells Google Mock to fail uninteresting calls on the given mock
420
- // object.
421
- static void FailUninterestingCalls(const void* mock_obj)
422
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
423
-
424
- // Tells Google Mock the given mock object is being destroyed and
425
- // its entry in the call-reaction table should be removed.
426
- static void UnregisterCallReaction(const void* mock_obj)
427
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
428
-
429
- // Returns the reaction Google Mock will have on uninteresting calls
430
- // made on the given mock object.
431
- static internal::CallReaction GetReactionOnUninterestingCalls(
432
- const void* mock_obj)
433
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
434
-
435
- // Verifies that all expectations on the given mock object have been
436
- // satisfied. Reports one or more Google Test non-fatal failures
437
- // and returns false if not.
438
- static bool VerifyAndClearExpectationsLocked(void* mock_obj)
439
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex);
440
-
441
- // Clears all ON_CALL()s set on the given mock object.
442
- static void ClearDefaultActionsLocked(void* mock_obj)
443
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex);
444
-
445
- // Registers a mock object and a mock method it owns.
446
- static void Register(
447
- const void* mock_obj,
448
- internal::UntypedFunctionMockerBase* mocker)
449
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
450
-
451
- // Tells Google Mock where in the source code mock_obj is used in an
452
- // ON_CALL or EXPECT_CALL. In case mock_obj is leaked, this
453
- // information helps the user identify which object it is.
454
- static void RegisterUseByOnCallOrExpectCall(
455
- const void* mock_obj, const char* file, int line)
456
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
457
-
458
- // Unregisters a mock method; removes the owning mock object from
459
- // the registry when the last mock method associated with it has
460
- // been unregistered. This is called only in the destructor of
461
- // FunctionMockerBase.
462
- static void UnregisterLocked(internal::UntypedFunctionMockerBase* mocker)
463
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex);
464
- }; // class Mock
465
-
466
- // An abstract handle of an expectation. Useful in the .After()
467
- // clause of EXPECT_CALL() for setting the (partial) order of
468
- // expectations. The syntax:
469
- //
470
- // Expectation e1 = EXPECT_CALL(...)...;
471
- // EXPECT_CALL(...).After(e1)...;
472
- //
473
- // sets two expectations where the latter can only be matched after
474
- // the former has been satisfied.
475
- //
476
- // Notes:
477
- // - This class is copyable and has value semantics.
478
- // - Constness is shallow: a const Expectation object itself cannot
479
- // be modified, but the mutable methods of the ExpectationBase
480
- // object it references can be called via expectation_base().
481
- // - The constructors and destructor are defined out-of-line because
482
- // the Symbian WINSCW compiler wants to otherwise instantiate them
483
- // when it sees this class definition, at which point it doesn't have
484
- // ExpectationBase available yet, leading to incorrect destruction
485
- // in the linked_ptr (or compilation errors if using a checking
486
- // linked_ptr).
487
- class GTEST_API_ Expectation {
488
- public:
489
- // Constructs a null object that doesn't reference any expectation.
490
- Expectation();
491
-
492
- ~Expectation();
493
-
494
- // This single-argument ctor must not be explicit, in order to support the
495
- // Expectation e = EXPECT_CALL(...);
496
- // syntax.
497
- //
498
- // A TypedExpectation object stores its pre-requisites as
499
- // Expectation objects, and needs to call the non-const Retire()
500
- // method on the ExpectationBase objects they reference. Therefore
501
- // Expectation must receive a *non-const* reference to the
502
- // ExpectationBase object.
503
- Expectation(internal::ExpectationBase& exp); // NOLINT
504
-
505
- // The compiler-generated copy ctor and operator= work exactly as
506
- // intended, so we don't need to define our own.
507
-
508
- // Returns true iff rhs references the same expectation as this object does.
509
- bool operator==(const Expectation& rhs) const {
510
- return expectation_base_ == rhs.expectation_base_;
511
- }
512
-
513
- bool operator!=(const Expectation& rhs) const { return !(*this == rhs); }
514
-
515
- private:
516
- friend class ExpectationSet;
517
- friend class Sequence;
518
- friend class ::testing::internal::ExpectationBase;
519
- friend class ::testing::internal::UntypedFunctionMockerBase;
520
-
521
- template <typename F>
522
- friend class ::testing::internal::FunctionMockerBase;
523
-
524
- template <typename F>
525
- friend class ::testing::internal::TypedExpectation;
526
-
527
- // This comparator is needed for putting Expectation objects into a set.
528
- class Less {
529
- public:
530
- bool operator()(const Expectation& lhs, const Expectation& rhs) const {
531
- return lhs.expectation_base_.get() < rhs.expectation_base_.get();
532
- }
533
- };
534
-
535
- typedef ::std::set<Expectation, Less> Set;
536
-
537
- Expectation(
538
- const internal::linked_ptr<internal::ExpectationBase>& expectation_base);
539
-
540
- // Returns the expectation this object references.
541
- const internal::linked_ptr<internal::ExpectationBase>&
542
- expectation_base() const {
543
- return expectation_base_;
544
- }
545
-
546
- // A linked_ptr that co-owns the expectation this handle references.
547
- internal::linked_ptr<internal::ExpectationBase> expectation_base_;
548
- };
549
-
550
- // A set of expectation handles. Useful in the .After() clause of
551
- // EXPECT_CALL() for setting the (partial) order of expectations. The
552
- // syntax:
553
- //
554
- // ExpectationSet es;
555
- // es += EXPECT_CALL(...)...;
556
- // es += EXPECT_CALL(...)...;
557
- // EXPECT_CALL(...).After(es)...;
558
- //
559
- // sets three expectations where the last one can only be matched
560
- // after the first two have both been satisfied.
561
- //
562
- // This class is copyable and has value semantics.
563
- class ExpectationSet {
564
- public:
565
- // A bidirectional iterator that can read a const element in the set.
566
- typedef Expectation::Set::const_iterator const_iterator;
567
-
568
- // An object stored in the set. This is an alias of Expectation.
569
- typedef Expectation::Set::value_type value_type;
570
-
571
- // Constructs an empty set.
572
- ExpectationSet() {}
573
-
574
- // This single-argument ctor must not be explicit, in order to support the
575
- // ExpectationSet es = EXPECT_CALL(...);
576
- // syntax.
577
- ExpectationSet(internal::ExpectationBase& exp) { // NOLINT
578
- *this += Expectation(exp);
579
- }
580
-
581
- // This single-argument ctor implements implicit conversion from
582
- // Expectation and thus must not be explicit. This allows either an
583
- // Expectation or an ExpectationSet to be used in .After().
584
- ExpectationSet(const Expectation& e) { // NOLINT
585
- *this += e;
586
- }
587
-
588
- // The compiler-generator ctor and operator= works exactly as
589
- // intended, so we don't need to define our own.
590
-
591
- // Returns true iff rhs contains the same set of Expectation objects
592
- // as this does.
593
- bool operator==(const ExpectationSet& rhs) const {
594
- return expectations_ == rhs.expectations_;
595
- }
596
-
597
- bool operator!=(const ExpectationSet& rhs) const { return !(*this == rhs); }
598
-
599
- // Implements the syntax
600
- // expectation_set += EXPECT_CALL(...);
601
- ExpectationSet& operator+=(const Expectation& e) {
602
- expectations_.insert(e);
603
- return *this;
604
- }
605
-
606
- int size() const { return static_cast<int>(expectations_.size()); }
607
-
608
- const_iterator begin() const { return expectations_.begin(); }
609
- const_iterator end() const { return expectations_.end(); }
610
-
611
- private:
612
- Expectation::Set expectations_;
613
- };
614
-
615
-
616
- // Sequence objects are used by a user to specify the relative order
617
- // in which the expectations should match. They are copyable (we rely
618
- // on the compiler-defined copy constructor and assignment operator).
619
- class GTEST_API_ Sequence {
620
- public:
621
- // Constructs an empty sequence.
622
- Sequence() : last_expectation_(new Expectation) {}
623
-
624
- // Adds an expectation to this sequence. The caller must ensure
625
- // that no other thread is accessing this Sequence object.
626
- void AddExpectation(const Expectation& expectation) const;
627
-
628
- private:
629
- // The last expectation in this sequence. We use a linked_ptr here
630
- // because Sequence objects are copyable and we want the copies to
631
- // be aliases. The linked_ptr allows the copies to co-own and share
632
- // the same Expectation object.
633
- internal::linked_ptr<Expectation> last_expectation_;
634
- }; // class Sequence
635
-
636
- // An object of this type causes all EXPECT_CALL() statements
637
- // encountered in its scope to be put in an anonymous sequence. The
638
- // work is done in the constructor and destructor. You should only
639
- // create an InSequence object on the stack.
640
- //
641
- // The sole purpose for this class is to support easy definition of
642
- // sequential expectations, e.g.
643
- //
644
- // {
645
- // InSequence dummy; // The name of the object doesn't matter.
646
- //
647
- // // The following expectations must match in the order they appear.
648
- // EXPECT_CALL(a, Bar())...;
649
- // EXPECT_CALL(a, Baz())...;
650
- // ...
651
- // EXPECT_CALL(b, Xyz())...;
652
- // }
653
- //
654
- // You can create InSequence objects in multiple threads, as long as
655
- // they are used to affect different mock objects. The idea is that
656
- // each thread can create and set up its own mocks as if it's the only
657
- // thread. However, for clarity of your tests we recommend you to set
658
- // up mocks in the main thread unless you have a good reason not to do
659
- // so.
660
- class GTEST_API_ InSequence {
661
- public:
662
- InSequence();
663
- ~InSequence();
664
- private:
665
- bool sequence_created_;
666
-
667
- GTEST_DISALLOW_COPY_AND_ASSIGN_(InSequence); // NOLINT
668
- } GTEST_ATTRIBUTE_UNUSED_;
669
-
670
- namespace internal {
671
-
672
- // Points to the implicit sequence introduced by a living InSequence
673
- // object (if any) in the current thread or NULL.
674
- GTEST_API_ extern ThreadLocal<Sequence*> g_gmock_implicit_sequence;
675
-
676
- // Base class for implementing expectations.
677
- //
678
- // There are two reasons for having a type-agnostic base class for
679
- // Expectation:
680
- //
681
- // 1. We need to store collections of expectations of different
682
- // types (e.g. all pre-requisites of a particular expectation, all
683
- // expectations in a sequence). Therefore these expectation objects
684
- // must share a common base class.
685
- //
686
- // 2. We can avoid binary code bloat by moving methods not depending
687
- // on the template argument of Expectation to the base class.
688
- //
689
- // This class is internal and mustn't be used by user code directly.
690
- class GTEST_API_ ExpectationBase {
691
- public:
692
- // source_text is the EXPECT_CALL(...) source that created this Expectation.
693
- ExpectationBase(const char* file, int line, const string& source_text);
694
-
695
- virtual ~ExpectationBase();
696
-
697
- // Where in the source file was the expectation spec defined?
698
- const char* file() const { return file_; }
699
- int line() const { return line_; }
700
- const char* source_text() const { return source_text_.c_str(); }
701
- // Returns the cardinality specified in the expectation spec.
702
- const Cardinality& cardinality() const { return cardinality_; }
703
-
704
- // Describes the source file location of this expectation.
705
- void DescribeLocationTo(::std::ostream* os) const {
706
- *os << FormatFileLocation(file(), line()) << " ";
707
- }
708
-
709
- // Describes how many times a function call matching this
710
- // expectation has occurred.
711
- void DescribeCallCountTo(::std::ostream* os) const
712
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
713
-
714
- // If this mock method has an extra matcher (i.e. .With(matcher)),
715
- // describes it to the ostream.
716
- virtual void MaybeDescribeExtraMatcherTo(::std::ostream* os) = 0;
717
-
718
- protected:
719
- friend class ::testing::Expectation;
720
- friend class UntypedFunctionMockerBase;
721
-
722
- enum Clause {
723
- // Don't change the order of the enum members!
724
- kNone,
725
- kWith,
726
- kTimes,
727
- kInSequence,
728
- kAfter,
729
- kWillOnce,
730
- kWillRepeatedly,
731
- kRetiresOnSaturation
732
- };
733
-
734
- typedef std::vector<const void*> UntypedActions;
735
-
736
- // Returns an Expectation object that references and co-owns this
737
- // expectation.
738
- virtual Expectation GetHandle() = 0;
739
-
740
- // Asserts that the EXPECT_CALL() statement has the given property.
741
- void AssertSpecProperty(bool property, const string& failure_message) const {
742
- Assert(property, file_, line_, failure_message);
743
- }
744
-
745
- // Expects that the EXPECT_CALL() statement has the given property.
746
- void ExpectSpecProperty(bool property, const string& failure_message) const {
747
- Expect(property, file_, line_, failure_message);
748
- }
749
-
750
- // Explicitly specifies the cardinality of this expectation. Used
751
- // by the subclasses to implement the .Times() clause.
752
- void SpecifyCardinality(const Cardinality& cardinality);
753
-
754
- // Returns true iff the user specified the cardinality explicitly
755
- // using a .Times().
756
- bool cardinality_specified() const { return cardinality_specified_; }
757
-
758
- // Sets the cardinality of this expectation spec.
759
- void set_cardinality(const Cardinality& a_cardinality) {
760
- cardinality_ = a_cardinality;
761
- }
762
-
763
- // The following group of methods should only be called after the
764
- // EXPECT_CALL() statement, and only when g_gmock_mutex is held by
765
- // the current thread.
766
-
767
- // Retires all pre-requisites of this expectation.
768
- void RetireAllPreRequisites()
769
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
770
-
771
- // Returns true iff this expectation is retired.
772
- bool is_retired() const
773
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
774
- g_gmock_mutex.AssertHeld();
775
- return retired_;
776
- }
777
-
778
- // Retires this expectation.
779
- void Retire()
780
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
781
- g_gmock_mutex.AssertHeld();
782
- retired_ = true;
783
- }
784
-
785
- // Returns true iff this expectation is satisfied.
786
- bool IsSatisfied() const
787
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
788
- g_gmock_mutex.AssertHeld();
789
- return cardinality().IsSatisfiedByCallCount(call_count_);
790
- }
791
-
792
- // Returns true iff this expectation is saturated.
793
- bool IsSaturated() const
794
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
795
- g_gmock_mutex.AssertHeld();
796
- return cardinality().IsSaturatedByCallCount(call_count_);
797
- }
798
-
799
- // Returns true iff this expectation is over-saturated.
800
- bool IsOverSaturated() const
801
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
802
- g_gmock_mutex.AssertHeld();
803
- return cardinality().IsOverSaturatedByCallCount(call_count_);
804
- }
805
-
806
- // Returns true iff all pre-requisites of this expectation are satisfied.
807
- bool AllPrerequisitesAreSatisfied() const
808
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
809
-
810
- // Adds unsatisfied pre-requisites of this expectation to 'result'.
811
- void FindUnsatisfiedPrerequisites(ExpectationSet* result) const
812
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
813
-
814
- // Returns the number this expectation has been invoked.
815
- int call_count() const
816
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
817
- g_gmock_mutex.AssertHeld();
818
- return call_count_;
819
- }
820
-
821
- // Increments the number this expectation has been invoked.
822
- void IncrementCallCount()
823
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
824
- g_gmock_mutex.AssertHeld();
825
- call_count_++;
826
- }
827
-
828
- // Checks the action count (i.e. the number of WillOnce() and
829
- // WillRepeatedly() clauses) against the cardinality if this hasn't
830
- // been done before. Prints a warning if there are too many or too
831
- // few actions.
832
- void CheckActionCountIfNotDone() const
833
- GTEST_LOCK_EXCLUDED_(mutex_);
834
-
835
- friend class ::testing::Sequence;
836
- friend class ::testing::internal::ExpectationTester;
837
-
838
- template <typename Function>
839
- friend class TypedExpectation;
840
-
841
- // Implements the .Times() clause.
842
- void UntypedTimes(const Cardinality& a_cardinality);
843
-
844
- // This group of fields are part of the spec and won't change after
845
- // an EXPECT_CALL() statement finishes.
846
- const char* file_; // The file that contains the expectation.
847
- int line_; // The line number of the expectation.
848
- const string source_text_; // The EXPECT_CALL(...) source text.
849
- // True iff the cardinality is specified explicitly.
850
- bool cardinality_specified_;
851
- Cardinality cardinality_; // The cardinality of the expectation.
852
- // The immediate pre-requisites (i.e. expectations that must be
853
- // satisfied before this expectation can be matched) of this
854
- // expectation. We use linked_ptr in the set because we want an
855
- // Expectation object to be co-owned by its FunctionMocker and its
856
- // successors. This allows multiple mock objects to be deleted at
857
- // different times.
858
- ExpectationSet immediate_prerequisites_;
859
-
860
- // This group of fields are the current state of the expectation,
861
- // and can change as the mock function is called.
862
- int call_count_; // How many times this expectation has been invoked.
863
- bool retired_; // True iff this expectation has retired.
864
- UntypedActions untyped_actions_;
865
- bool extra_matcher_specified_;
866
- bool repeated_action_specified_; // True if a WillRepeatedly() was specified.
867
- bool retires_on_saturation_;
868
- Clause last_clause_;
869
- mutable bool action_count_checked_; // Under mutex_.
870
- mutable Mutex mutex_; // Protects action_count_checked_.
871
-
872
- GTEST_DISALLOW_ASSIGN_(ExpectationBase);
873
- }; // class ExpectationBase
874
-
875
- // Impements an expectation for the given function type.
876
- template <typename F>
877
- class TypedExpectation : public ExpectationBase {
878
- public:
879
- typedef typename Function<F>::ArgumentTuple ArgumentTuple;
880
- typedef typename Function<F>::ArgumentMatcherTuple ArgumentMatcherTuple;
881
- typedef typename Function<F>::Result Result;
882
-
883
- TypedExpectation(FunctionMockerBase<F>* owner,
884
- const char* a_file, int a_line, const string& a_source_text,
885
- const ArgumentMatcherTuple& m)
886
- : ExpectationBase(a_file, a_line, a_source_text),
887
- owner_(owner),
888
- matchers_(m),
889
- // By default, extra_matcher_ should match anything. However,
890
- // we cannot initialize it with _ as that triggers a compiler
891
- // bug in Symbian's C++ compiler (cannot decide between two
892
- // overloaded constructors of Matcher<const ArgumentTuple&>).
893
- extra_matcher_(A<const ArgumentTuple&>()),
894
- repeated_action_(DoDefault()) {}
895
-
896
- virtual ~TypedExpectation() {
897
- // Check the validity of the action count if it hasn't been done
898
- // yet (for example, if the expectation was never used).
899
- CheckActionCountIfNotDone();
900
- for (UntypedActions::const_iterator it = untyped_actions_.begin();
901
- it != untyped_actions_.end(); ++it) {
902
- delete static_cast<const Action<F>*>(*it);
903
- }
904
- }
905
-
906
- // Implements the .With() clause.
907
- TypedExpectation& With(const Matcher<const ArgumentTuple&>& m) {
908
- if (last_clause_ == kWith) {
909
- ExpectSpecProperty(false,
910
- ".With() cannot appear "
911
- "more than once in an EXPECT_CALL().");
912
- } else {
913
- ExpectSpecProperty(last_clause_ < kWith,
914
- ".With() must be the first "
915
- "clause in an EXPECT_CALL().");
916
- }
917
- last_clause_ = kWith;
918
-
919
- extra_matcher_ = m;
920
- extra_matcher_specified_ = true;
921
- return *this;
922
- }
923
-
924
- // Implements the .Times() clause.
925
- TypedExpectation& Times(const Cardinality& a_cardinality) {
926
- ExpectationBase::UntypedTimes(a_cardinality);
927
- return *this;
928
- }
929
-
930
- // Implements the .Times() clause.
931
- TypedExpectation& Times(int n) {
932
- return Times(Exactly(n));
933
- }
934
-
935
- // Implements the .InSequence() clause.
936
- TypedExpectation& InSequence(const Sequence& s) {
937
- ExpectSpecProperty(last_clause_ <= kInSequence,
938
- ".InSequence() cannot appear after .After(),"
939
- " .WillOnce(), .WillRepeatedly(), or "
940
- ".RetiresOnSaturation().");
941
- last_clause_ = kInSequence;
942
-
943
- s.AddExpectation(GetHandle());
944
- return *this;
945
- }
946
- TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2) {
947
- return InSequence(s1).InSequence(s2);
948
- }
949
- TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2,
950
- const Sequence& s3) {
951
- return InSequence(s1, s2).InSequence(s3);
952
- }
953
- TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2,
954
- const Sequence& s3, const Sequence& s4) {
955
- return InSequence(s1, s2, s3).InSequence(s4);
956
- }
957
- TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2,
958
- const Sequence& s3, const Sequence& s4,
959
- const Sequence& s5) {
960
- return InSequence(s1, s2, s3, s4).InSequence(s5);
961
- }
962
-
963
- // Implements that .After() clause.
964
- TypedExpectation& After(const ExpectationSet& s) {
965
- ExpectSpecProperty(last_clause_ <= kAfter,
966
- ".After() cannot appear after .WillOnce(),"
967
- " .WillRepeatedly(), or "
968
- ".RetiresOnSaturation().");
969
- last_clause_ = kAfter;
970
-
971
- for (ExpectationSet::const_iterator it = s.begin(); it != s.end(); ++it) {
972
- immediate_prerequisites_ += *it;
973
- }
974
- return *this;
975
- }
976
- TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2) {
977
- return After(s1).After(s2);
978
- }
979
- TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2,
980
- const ExpectationSet& s3) {
981
- return After(s1, s2).After(s3);
982
- }
983
- TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2,
984
- const ExpectationSet& s3, const ExpectationSet& s4) {
985
- return After(s1, s2, s3).After(s4);
986
- }
987
- TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2,
988
- const ExpectationSet& s3, const ExpectationSet& s4,
989
- const ExpectationSet& s5) {
990
- return After(s1, s2, s3, s4).After(s5);
991
- }
992
-
993
- // Implements the .WillOnce() clause.
994
- TypedExpectation& WillOnce(const Action<F>& action) {
995
- ExpectSpecProperty(last_clause_ <= kWillOnce,
996
- ".WillOnce() cannot appear after "
997
- ".WillRepeatedly() or .RetiresOnSaturation().");
998
- last_clause_ = kWillOnce;
999
-
1000
- untyped_actions_.push_back(new Action<F>(action));
1001
- if (!cardinality_specified()) {
1002
- set_cardinality(Exactly(static_cast<int>(untyped_actions_.size())));
1003
- }
1004
- return *this;
1005
- }
1006
-
1007
- // Implements the .WillRepeatedly() clause.
1008
- TypedExpectation& WillRepeatedly(const Action<F>& action) {
1009
- if (last_clause_ == kWillRepeatedly) {
1010
- ExpectSpecProperty(false,
1011
- ".WillRepeatedly() cannot appear "
1012
- "more than once in an EXPECT_CALL().");
1013
- } else {
1014
- ExpectSpecProperty(last_clause_ < kWillRepeatedly,
1015
- ".WillRepeatedly() cannot appear "
1016
- "after .RetiresOnSaturation().");
1017
- }
1018
- last_clause_ = kWillRepeatedly;
1019
- repeated_action_specified_ = true;
1020
-
1021
- repeated_action_ = action;
1022
- if (!cardinality_specified()) {
1023
- set_cardinality(AtLeast(static_cast<int>(untyped_actions_.size())));
1024
- }
1025
-
1026
- // Now that no more action clauses can be specified, we check
1027
- // whether their count makes sense.
1028
- CheckActionCountIfNotDone();
1029
- return *this;
1030
- }
1031
-
1032
- // Implements the .RetiresOnSaturation() clause.
1033
- TypedExpectation& RetiresOnSaturation() {
1034
- ExpectSpecProperty(last_clause_ < kRetiresOnSaturation,
1035
- ".RetiresOnSaturation() cannot appear "
1036
- "more than once.");
1037
- last_clause_ = kRetiresOnSaturation;
1038
- retires_on_saturation_ = true;
1039
-
1040
- // Now that no more action clauses can be specified, we check
1041
- // whether their count makes sense.
1042
- CheckActionCountIfNotDone();
1043
- return *this;
1044
- }
1045
-
1046
- // Returns the matchers for the arguments as specified inside the
1047
- // EXPECT_CALL() macro.
1048
- const ArgumentMatcherTuple& matchers() const {
1049
- return matchers_;
1050
- }
1051
-
1052
- // Returns the matcher specified by the .With() clause.
1053
- const Matcher<const ArgumentTuple&>& extra_matcher() const {
1054
- return extra_matcher_;
1055
- }
1056
-
1057
- // Returns the action specified by the .WillRepeatedly() clause.
1058
- const Action<F>& repeated_action() const { return repeated_action_; }
1059
-
1060
- // If this mock method has an extra matcher (i.e. .With(matcher)),
1061
- // describes it to the ostream.
1062
- virtual void MaybeDescribeExtraMatcherTo(::std::ostream* os) {
1063
- if (extra_matcher_specified_) {
1064
- *os << " Expected args: ";
1065
- extra_matcher_.DescribeTo(os);
1066
- *os << "\n";
1067
- }
1068
- }
1069
-
1070
- private:
1071
- template <typename Function>
1072
- friend class FunctionMockerBase;
1073
-
1074
- // Returns an Expectation object that references and co-owns this
1075
- // expectation.
1076
- virtual Expectation GetHandle() {
1077
- return owner_->GetHandleOf(this);
1078
- }
1079
-
1080
- // The following methods will be called only after the EXPECT_CALL()
1081
- // statement finishes and when the current thread holds
1082
- // g_gmock_mutex.
1083
-
1084
- // Returns true iff this expectation matches the given arguments.
1085
- bool Matches(const ArgumentTuple& args) const
1086
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
1087
- g_gmock_mutex.AssertHeld();
1088
- return TupleMatches(matchers_, args) && extra_matcher_.Matches(args);
1089
- }
1090
-
1091
- // Returns true iff this expectation should handle the given arguments.
1092
- bool ShouldHandleArguments(const ArgumentTuple& args) const
1093
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
1094
- g_gmock_mutex.AssertHeld();
1095
-
1096
- // In case the action count wasn't checked when the expectation
1097
- // was defined (e.g. if this expectation has no WillRepeatedly()
1098
- // or RetiresOnSaturation() clause), we check it when the
1099
- // expectation is used for the first time.
1100
- CheckActionCountIfNotDone();
1101
- return !is_retired() && AllPrerequisitesAreSatisfied() && Matches(args);
1102
- }
1103
-
1104
- // Describes the result of matching the arguments against this
1105
- // expectation to the given ostream.
1106
- void ExplainMatchResultTo(
1107
- const ArgumentTuple& args,
1108
- ::std::ostream* os) const
1109
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
1110
- g_gmock_mutex.AssertHeld();
1111
-
1112
- if (is_retired()) {
1113
- *os << " Expected: the expectation is active\n"
1114
- << " Actual: it is retired\n";
1115
- } else if (!Matches(args)) {
1116
- if (!TupleMatches(matchers_, args)) {
1117
- ExplainMatchFailureTupleTo(matchers_, args, os);
1118
- }
1119
- StringMatchResultListener listener;
1120
- if (!extra_matcher_.MatchAndExplain(args, &listener)) {
1121
- *os << " Expected args: ";
1122
- extra_matcher_.DescribeTo(os);
1123
- *os << "\n Actual: don't match";
1124
-
1125
- internal::PrintIfNotEmpty(listener.str(), os);
1126
- *os << "\n";
1127
- }
1128
- } else if (!AllPrerequisitesAreSatisfied()) {
1129
- *os << " Expected: all pre-requisites are satisfied\n"
1130
- << " Actual: the following immediate pre-requisites "
1131
- << "are not satisfied:\n";
1132
- ExpectationSet unsatisfied_prereqs;
1133
- FindUnsatisfiedPrerequisites(&unsatisfied_prereqs);
1134
- int i = 0;
1135
- for (ExpectationSet::const_iterator it = unsatisfied_prereqs.begin();
1136
- it != unsatisfied_prereqs.end(); ++it) {
1137
- it->expectation_base()->DescribeLocationTo(os);
1138
- *os << "pre-requisite #" << i++ << "\n";
1139
- }
1140
- *os << " (end of pre-requisites)\n";
1141
- } else {
1142
- // This line is here just for completeness' sake. It will never
1143
- // be executed as currently the ExplainMatchResultTo() function
1144
- // is called only when the mock function call does NOT match the
1145
- // expectation.
1146
- *os << "The call matches the expectation.\n";
1147
- }
1148
- }
1149
-
1150
- // Returns the action that should be taken for the current invocation.
1151
- const Action<F>& GetCurrentAction(
1152
- const FunctionMockerBase<F>* mocker,
1153
- const ArgumentTuple& args) const
1154
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
1155
- g_gmock_mutex.AssertHeld();
1156
- const int count = call_count();
1157
- Assert(count >= 1, __FILE__, __LINE__,
1158
- "call_count() is <= 0 when GetCurrentAction() is "
1159
- "called - this should never happen.");
1160
-
1161
- const int action_count = static_cast<int>(untyped_actions_.size());
1162
- if (action_count > 0 && !repeated_action_specified_ &&
1163
- count > action_count) {
1164
- // If there is at least one WillOnce() and no WillRepeatedly(),
1165
- // we warn the user when the WillOnce() clauses ran out.
1166
- ::std::stringstream ss;
1167
- DescribeLocationTo(&ss);
1168
- ss << "Actions ran out in " << source_text() << "...\n"
1169
- << "Called " << count << " times, but only "
1170
- << action_count << " WillOnce()"
1171
- << (action_count == 1 ? " is" : "s are") << " specified - ";
1172
- mocker->DescribeDefaultActionTo(args, &ss);
1173
- Log(kWarning, ss.str(), 1);
1174
- }
1175
-
1176
- return count <= action_count ?
1177
- *static_cast<const Action<F>*>(untyped_actions_[count - 1]) :
1178
- repeated_action();
1179
- }
1180
-
1181
- // Given the arguments of a mock function call, if the call will
1182
- // over-saturate this expectation, returns the default action;
1183
- // otherwise, returns the next action in this expectation. Also
1184
- // describes *what* happened to 'what', and explains *why* Google
1185
- // Mock does it to 'why'. This method is not const as it calls
1186
- // IncrementCallCount(). A return value of NULL means the default
1187
- // action.
1188
- const Action<F>* GetActionForArguments(
1189
- const FunctionMockerBase<F>* mocker,
1190
- const ArgumentTuple& args,
1191
- ::std::ostream* what,
1192
- ::std::ostream* why)
1193
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
1194
- g_gmock_mutex.AssertHeld();
1195
- if (IsSaturated()) {
1196
- // We have an excessive call.
1197
- IncrementCallCount();
1198
- *what << "Mock function called more times than expected - ";
1199
- mocker->DescribeDefaultActionTo(args, what);
1200
- DescribeCallCountTo(why);
1201
-
1202
- // TODO(wan@google.com): allow the user to control whether
1203
- // unexpected calls should fail immediately or continue using a
1204
- // flag --gmock_unexpected_calls_are_fatal.
1205
- return NULL;
1206
- }
1207
-
1208
- IncrementCallCount();
1209
- RetireAllPreRequisites();
1210
-
1211
- if (retires_on_saturation_ && IsSaturated()) {
1212
- Retire();
1213
- }
1214
-
1215
- // Must be done after IncrementCount()!
1216
- *what << "Mock function call matches " << source_text() <<"...\n";
1217
- return &(GetCurrentAction(mocker, args));
1218
- }
1219
-
1220
- // All the fields below won't change once the EXPECT_CALL()
1221
- // statement finishes.
1222
- FunctionMockerBase<F>* const owner_;
1223
- ArgumentMatcherTuple matchers_;
1224
- Matcher<const ArgumentTuple&> extra_matcher_;
1225
- Action<F> repeated_action_;
1226
-
1227
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TypedExpectation);
1228
- }; // class TypedExpectation
1229
-
1230
- // A MockSpec object is used by ON_CALL() or EXPECT_CALL() for
1231
- // specifying the default behavior of, or expectation on, a mock
1232
- // function.
1233
-
1234
- // Note: class MockSpec really belongs to the ::testing namespace.
1235
- // However if we define it in ::testing, MSVC will complain when
1236
- // classes in ::testing::internal declare it as a friend class
1237
- // template. To workaround this compiler bug, we define MockSpec in
1238
- // ::testing::internal and import it into ::testing.
1239
-
1240
- // Logs a message including file and line number information.
1241
- GTEST_API_ void LogWithLocation(testing::internal::LogSeverity severity,
1242
- const char* file, int line,
1243
- const string& message);
1244
-
1245
- template <typename F>
1246
- class MockSpec {
1247
- public:
1248
- typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
1249
- typedef typename internal::Function<F>::ArgumentMatcherTuple
1250
- ArgumentMatcherTuple;
1251
-
1252
- // Constructs a MockSpec object, given the function mocker object
1253
- // that the spec is associated with.
1254
- explicit MockSpec(internal::FunctionMockerBase<F>* function_mocker)
1255
- : function_mocker_(function_mocker) {}
1256
-
1257
- // Adds a new default action spec to the function mocker and returns
1258
- // the newly created spec.
1259
- internal::OnCallSpec<F>& InternalDefaultActionSetAt(
1260
- const char* file, int line, const char* obj, const char* call) {
1261
- LogWithLocation(internal::kInfo, file, line,
1262
- string("ON_CALL(") + obj + ", " + call + ") invoked");
1263
- return function_mocker_->AddNewOnCallSpec(file, line, matchers_);
1264
- }
1265
-
1266
- // Adds a new expectation spec to the function mocker and returns
1267
- // the newly created spec.
1268
- internal::TypedExpectation<F>& InternalExpectedAt(
1269
- const char* file, int line, const char* obj, const char* call) {
1270
- const string source_text(string("EXPECT_CALL(") + obj + ", " + call + ")");
1271
- LogWithLocation(internal::kInfo, file, line, source_text + " invoked");
1272
- return function_mocker_->AddNewExpectation(
1273
- file, line, source_text, matchers_);
1274
- }
1275
-
1276
- private:
1277
- template <typename Function>
1278
- friend class internal::FunctionMocker;
1279
-
1280
- void SetMatchers(const ArgumentMatcherTuple& matchers) {
1281
- matchers_ = matchers;
1282
- }
1283
-
1284
- // The function mocker that owns this spec.
1285
- internal::FunctionMockerBase<F>* const function_mocker_;
1286
- // The argument matchers specified in the spec.
1287
- ArgumentMatcherTuple matchers_;
1288
-
1289
- GTEST_DISALLOW_ASSIGN_(MockSpec);
1290
- }; // class MockSpec
1291
-
1292
- // Wrapper type for generically holding an ordinary value or lvalue reference.
1293
- // If T is not a reference type, it must be copyable or movable.
1294
- // ReferenceOrValueWrapper<T> is movable, and will also be copyable unless
1295
- // T is a move-only value type (which means that it will always be copyable
1296
- // if the current platform does not support move semantics).
1297
- //
1298
- // The primary template defines handling for values, but function header
1299
- // comments describe the contract for the whole template (including
1300
- // specializations).
1301
- template <typename T>
1302
- class ReferenceOrValueWrapper {
1303
- public:
1304
- // Constructs a wrapper from the given value/reference.
1305
- explicit ReferenceOrValueWrapper(T value)
1306
- : value_(::testing::internal::move(value)) {
1307
- }
1308
-
1309
- // Unwraps and returns the underlying value/reference, exactly as
1310
- // originally passed. The behavior of calling this more than once on
1311
- // the same object is unspecified.
1312
- T Unwrap() { return ::testing::internal::move(value_); }
1313
-
1314
- // Provides nondestructive access to the underlying value/reference.
1315
- // Always returns a const reference (more precisely,
1316
- // const RemoveReference<T>&). The behavior of calling this after
1317
- // calling Unwrap on the same object is unspecified.
1318
- const T& Peek() const {
1319
- return value_;
1320
- }
1321
-
1322
- private:
1323
- T value_;
1324
- };
1325
-
1326
- // Specialization for lvalue reference types. See primary template
1327
- // for documentation.
1328
- template <typename T>
1329
- class ReferenceOrValueWrapper<T&> {
1330
- public:
1331
- // Workaround for debatable pass-by-reference lint warning (c-library-team
1332
- // policy precludes NOLINT in this context)
1333
- typedef T& reference;
1334
- explicit ReferenceOrValueWrapper(reference ref)
1335
- : value_ptr_(&ref) {}
1336
- T& Unwrap() { return *value_ptr_; }
1337
- const T& Peek() const { return *value_ptr_; }
1338
-
1339
- private:
1340
- T* value_ptr_;
1341
- };
1342
-
1343
- // MSVC warns about using 'this' in base member initializer list, so
1344
- // we need to temporarily disable the warning. We have to do it for
1345
- // the entire class to suppress the warning, even though it's about
1346
- // the constructor only.
1347
-
1348
- #ifdef _MSC_VER
1349
- # pragma warning(push) // Saves the current warning state.
1350
- # pragma warning(disable:4355) // Temporarily disables warning 4355.
1351
- #endif // _MSV_VER
1352
-
1353
- // C++ treats the void type specially. For example, you cannot define
1354
- // a void-typed variable or pass a void value to a function.
1355
- // ActionResultHolder<T> holds a value of type T, where T must be a
1356
- // copyable type or void (T doesn't need to be default-constructable).
1357
- // It hides the syntactic difference between void and other types, and
1358
- // is used to unify the code for invoking both void-returning and
1359
- // non-void-returning mock functions.
1360
-
1361
- // Untyped base class for ActionResultHolder<T>.
1362
- class UntypedActionResultHolderBase {
1363
- public:
1364
- virtual ~UntypedActionResultHolderBase() {}
1365
-
1366
- // Prints the held value as an action's result to os.
1367
- virtual void PrintAsActionResult(::std::ostream* os) const = 0;
1368
- };
1369
-
1370
- // This generic definition is used when T is not void.
1371
- template <typename T>
1372
- class ActionResultHolder : public UntypedActionResultHolderBase {
1373
- public:
1374
- // Returns the held value. Must not be called more than once.
1375
- T Unwrap() {
1376
- return result_.Unwrap();
1377
- }
1378
-
1379
- // Prints the held value as an action's result to os.
1380
- virtual void PrintAsActionResult(::std::ostream* os) const {
1381
- *os << "\n Returns: ";
1382
- // T may be a reference type, so we don't use UniversalPrint().
1383
- UniversalPrinter<T>::Print(result_.Peek(), os);
1384
- }
1385
-
1386
- // Performs the given mock function's default action and returns the
1387
- // result in a new-ed ActionResultHolder.
1388
- template <typename F>
1389
- static ActionResultHolder* PerformDefaultAction(
1390
- const FunctionMockerBase<F>* func_mocker,
1391
- const typename Function<F>::ArgumentTuple& args,
1392
- const string& call_description) {
1393
- return new ActionResultHolder(Wrapper(
1394
- func_mocker->PerformDefaultAction(args, call_description)));
1395
- }
1396
-
1397
- // Performs the given action and returns the result in a new-ed
1398
- // ActionResultHolder.
1399
- template <typename F>
1400
- static ActionResultHolder*
1401
- PerformAction(const Action<F>& action,
1402
- const typename Function<F>::ArgumentTuple& args) {
1403
- return new ActionResultHolder(Wrapper(action.Perform(args)));
1404
- }
1405
-
1406
- private:
1407
- typedef ReferenceOrValueWrapper<T> Wrapper;
1408
-
1409
- explicit ActionResultHolder(Wrapper result)
1410
- : result_(::testing::internal::move(result)) {
1411
- }
1412
-
1413
- Wrapper result_;
1414
-
1415
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ActionResultHolder);
1416
- };
1417
-
1418
- // Specialization for T = void.
1419
- template <>
1420
- class ActionResultHolder<void> : public UntypedActionResultHolderBase {
1421
- public:
1422
- void Unwrap() { }
1423
-
1424
- virtual void PrintAsActionResult(::std::ostream* /* os */) const {}
1425
-
1426
- // Performs the given mock function's default action and returns ownership
1427
- // of an empty ActionResultHolder*.
1428
- template <typename F>
1429
- static ActionResultHolder* PerformDefaultAction(
1430
- const FunctionMockerBase<F>* func_mocker,
1431
- const typename Function<F>::ArgumentTuple& args,
1432
- const string& call_description) {
1433
- func_mocker->PerformDefaultAction(args, call_description);
1434
- return new ActionResultHolder;
1435
- }
1436
-
1437
- // Performs the given action and returns ownership of an empty
1438
- // ActionResultHolder*.
1439
- template <typename F>
1440
- static ActionResultHolder* PerformAction(
1441
- const Action<F>& action,
1442
- const typename Function<F>::ArgumentTuple& args) {
1443
- action.Perform(args);
1444
- return new ActionResultHolder;
1445
- }
1446
-
1447
- private:
1448
- ActionResultHolder() {}
1449
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ActionResultHolder);
1450
- };
1451
-
1452
- // The base of the function mocker class for the given function type.
1453
- // We put the methods in this class instead of its child to avoid code
1454
- // bloat.
1455
- template <typename F>
1456
- class FunctionMockerBase : public UntypedFunctionMockerBase {
1457
- public:
1458
- typedef typename Function<F>::Result Result;
1459
- typedef typename Function<F>::ArgumentTuple ArgumentTuple;
1460
- typedef typename Function<F>::ArgumentMatcherTuple ArgumentMatcherTuple;
1461
-
1462
- FunctionMockerBase() : current_spec_(this) {}
1463
-
1464
- // The destructor verifies that all expectations on this mock
1465
- // function have been satisfied. If not, it will report Google Test
1466
- // non-fatal failures for the violations.
1467
- virtual ~FunctionMockerBase()
1468
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
1469
- MutexLock l(&g_gmock_mutex);
1470
- VerifyAndClearExpectationsLocked();
1471
- Mock::UnregisterLocked(this);
1472
- ClearDefaultActionsLocked();
1473
- }
1474
-
1475
- // Returns the ON_CALL spec that matches this mock function with the
1476
- // given arguments; returns NULL if no matching ON_CALL is found.
1477
- // L = *
1478
- const OnCallSpec<F>* FindOnCallSpec(
1479
- const ArgumentTuple& args) const {
1480
- for (UntypedOnCallSpecs::const_reverse_iterator it
1481
- = untyped_on_call_specs_.rbegin();
1482
- it != untyped_on_call_specs_.rend(); ++it) {
1483
- const OnCallSpec<F>* spec = static_cast<const OnCallSpec<F>*>(*it);
1484
- if (spec->Matches(args))
1485
- return spec;
1486
- }
1487
-
1488
- return NULL;
1489
- }
1490
-
1491
- // Performs the default action of this mock function on the given
1492
- // arguments and returns the result. Asserts (or throws if
1493
- // exceptions are enabled) with a helpful call descrption if there
1494
- // is no valid return value. This method doesn't depend on the
1495
- // mutable state of this object, and thus can be called concurrently
1496
- // without locking.
1497
- // L = *
1498
- Result PerformDefaultAction(const ArgumentTuple& args,
1499
- const string& call_description) const {
1500
- const OnCallSpec<F>* const spec =
1501
- this->FindOnCallSpec(args);
1502
- if (spec != NULL) {
1503
- return spec->GetAction().Perform(args);
1504
- }
1505
- const string message = call_description +
1506
- "\n The mock function has no default action "
1507
- "set, and its return type has no default value set.";
1508
- #if GTEST_HAS_EXCEPTIONS
1509
- if (!DefaultValue<Result>::Exists()) {
1510
- throw std::runtime_error(message);
1511
- }
1512
- #else
1513
- Assert(DefaultValue<Result>::Exists(), "", -1, message);
1514
- #endif
1515
- return DefaultValue<Result>::Get();
1516
- }
1517
-
1518
- // Performs the default action with the given arguments and returns
1519
- // the action's result. The call description string will be used in
1520
- // the error message to describe the call in the case the default
1521
- // action fails. The caller is responsible for deleting the result.
1522
- // L = *
1523
- virtual UntypedActionResultHolderBase* UntypedPerformDefaultAction(
1524
- const void* untyped_args, // must point to an ArgumentTuple
1525
- const string& call_description) const {
1526
- const ArgumentTuple& args =
1527
- *static_cast<const ArgumentTuple*>(untyped_args);
1528
- return ResultHolder::PerformDefaultAction(this, args, call_description);
1529
- }
1530
-
1531
- // Performs the given action with the given arguments and returns
1532
- // the action's result. The caller is responsible for deleting the
1533
- // result.
1534
- // L = *
1535
- virtual UntypedActionResultHolderBase* UntypedPerformAction(
1536
- const void* untyped_action, const void* untyped_args) const {
1537
- // Make a copy of the action before performing it, in case the
1538
- // action deletes the mock object (and thus deletes itself).
1539
- const Action<F> action = *static_cast<const Action<F>*>(untyped_action);
1540
- const ArgumentTuple& args =
1541
- *static_cast<const ArgumentTuple*>(untyped_args);
1542
- return ResultHolder::PerformAction(action, args);
1543
- }
1544
-
1545
- // Implements UntypedFunctionMockerBase::ClearDefaultActionsLocked():
1546
- // clears the ON_CALL()s set on this mock function.
1547
- virtual void ClearDefaultActionsLocked()
1548
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
1549
- g_gmock_mutex.AssertHeld();
1550
-
1551
- // Deleting our default actions may trigger other mock objects to be
1552
- // deleted, for example if an action contains a reference counted smart
1553
- // pointer to that mock object, and that is the last reference. So if we
1554
- // delete our actions within the context of the global mutex we may deadlock
1555
- // when this method is called again. Instead, make a copy of the set of
1556
- // actions to delete, clear our set within the mutex, and then delete the
1557
- // actions outside of the mutex.
1558
- UntypedOnCallSpecs specs_to_delete;
1559
- untyped_on_call_specs_.swap(specs_to_delete);
1560
-
1561
- g_gmock_mutex.Unlock();
1562
- for (UntypedOnCallSpecs::const_iterator it =
1563
- specs_to_delete.begin();
1564
- it != specs_to_delete.end(); ++it) {
1565
- delete static_cast<const OnCallSpec<F>*>(*it);
1566
- }
1567
-
1568
- // Lock the mutex again, since the caller expects it to be locked when we
1569
- // return.
1570
- g_gmock_mutex.Lock();
1571
- }
1572
-
1573
- protected:
1574
- template <typename Function>
1575
- friend class MockSpec;
1576
-
1577
- typedef ActionResultHolder<Result> ResultHolder;
1578
-
1579
- // Returns the result of invoking this mock function with the given
1580
- // arguments. This function can be safely called from multiple
1581
- // threads concurrently.
1582
- Result InvokeWith(const ArgumentTuple& args)
1583
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
1584
- scoped_ptr<ResultHolder> holder(
1585
- DownCast_<ResultHolder*>(this->UntypedInvokeWith(&args)));
1586
- return holder->Unwrap();
1587
- }
1588
-
1589
- // Adds and returns a default action spec for this mock function.
1590
- OnCallSpec<F>& AddNewOnCallSpec(
1591
- const char* file, int line,
1592
- const ArgumentMatcherTuple& m)
1593
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
1594
- Mock::RegisterUseByOnCallOrExpectCall(MockObject(), file, line);
1595
- OnCallSpec<F>* const on_call_spec = new OnCallSpec<F>(file, line, m);
1596
- untyped_on_call_specs_.push_back(on_call_spec);
1597
- return *on_call_spec;
1598
- }
1599
-
1600
- // Adds and returns an expectation spec for this mock function.
1601
- TypedExpectation<F>& AddNewExpectation(
1602
- const char* file,
1603
- int line,
1604
- const string& source_text,
1605
- const ArgumentMatcherTuple& m)
1606
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
1607
- Mock::RegisterUseByOnCallOrExpectCall(MockObject(), file, line);
1608
- TypedExpectation<F>* const expectation =
1609
- new TypedExpectation<F>(this, file, line, source_text, m);
1610
- const linked_ptr<ExpectationBase> untyped_expectation(expectation);
1611
- untyped_expectations_.push_back(untyped_expectation);
1612
-
1613
- // Adds this expectation into the implicit sequence if there is one.
1614
- Sequence* const implicit_sequence = g_gmock_implicit_sequence.get();
1615
- if (implicit_sequence != NULL) {
1616
- implicit_sequence->AddExpectation(Expectation(untyped_expectation));
1617
- }
1618
-
1619
- return *expectation;
1620
- }
1621
-
1622
- // The current spec (either default action spec or expectation spec)
1623
- // being described on this function mocker.
1624
- MockSpec<F>& current_spec() { return current_spec_; }
1625
-
1626
- private:
1627
- template <typename Func> friend class TypedExpectation;
1628
-
1629
- // Some utilities needed for implementing UntypedInvokeWith().
1630
-
1631
- // Describes what default action will be performed for the given
1632
- // arguments.
1633
- // L = *
1634
- void DescribeDefaultActionTo(const ArgumentTuple& args,
1635
- ::std::ostream* os) const {
1636
- const OnCallSpec<F>* const spec = FindOnCallSpec(args);
1637
-
1638
- if (spec == NULL) {
1639
- *os << (internal::type_equals<Result, void>::value ?
1640
- "returning directly.\n" :
1641
- "returning default value.\n");
1642
- } else {
1643
- *os << "taking default action specified at:\n"
1644
- << FormatFileLocation(spec->file(), spec->line()) << "\n";
1645
- }
1646
- }
1647
-
1648
- // Writes a message that the call is uninteresting (i.e. neither
1649
- // explicitly expected nor explicitly unexpected) to the given
1650
- // ostream.
1651
- virtual void UntypedDescribeUninterestingCall(
1652
- const void* untyped_args,
1653
- ::std::ostream* os) const
1654
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
1655
- const ArgumentTuple& args =
1656
- *static_cast<const ArgumentTuple*>(untyped_args);
1657
- *os << "Uninteresting mock function call - ";
1658
- DescribeDefaultActionTo(args, os);
1659
- *os << " Function call: " << Name();
1660
- UniversalPrint(args, os);
1661
- }
1662
-
1663
- // Returns the expectation that matches the given function arguments
1664
- // (or NULL is there's no match); when a match is found,
1665
- // untyped_action is set to point to the action that should be
1666
- // performed (or NULL if the action is "do default"), and
1667
- // is_excessive is modified to indicate whether the call exceeds the
1668
- // expected number.
1669
- //
1670
- // Critical section: We must find the matching expectation and the
1671
- // corresponding action that needs to be taken in an ATOMIC
1672
- // transaction. Otherwise another thread may call this mock
1673
- // method in the middle and mess up the state.
1674
- //
1675
- // However, performing the action has to be left out of the critical
1676
- // section. The reason is that we have no control on what the
1677
- // action does (it can invoke an arbitrary user function or even a
1678
- // mock function) and excessive locking could cause a dead lock.
1679
- virtual const ExpectationBase* UntypedFindMatchingExpectation(
1680
- const void* untyped_args,
1681
- const void** untyped_action, bool* is_excessive,
1682
- ::std::ostream* what, ::std::ostream* why)
1683
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
1684
- const ArgumentTuple& args =
1685
- *static_cast<const ArgumentTuple*>(untyped_args);
1686
- MutexLock l(&g_gmock_mutex);
1687
- TypedExpectation<F>* exp = this->FindMatchingExpectationLocked(args);
1688
- if (exp == NULL) { // A match wasn't found.
1689
- this->FormatUnexpectedCallMessageLocked(args, what, why);
1690
- return NULL;
1691
- }
1692
-
1693
- // This line must be done before calling GetActionForArguments(),
1694
- // which will increment the call count for *exp and thus affect
1695
- // its saturation status.
1696
- *is_excessive = exp->IsSaturated();
1697
- const Action<F>* action = exp->GetActionForArguments(this, args, what, why);
1698
- if (action != NULL && action->IsDoDefault())
1699
- action = NULL; // Normalize "do default" to NULL.
1700
- *untyped_action = action;
1701
- return exp;
1702
- }
1703
-
1704
- // Prints the given function arguments to the ostream.
1705
- virtual void UntypedPrintArgs(const void* untyped_args,
1706
- ::std::ostream* os) const {
1707
- const ArgumentTuple& args =
1708
- *static_cast<const ArgumentTuple*>(untyped_args);
1709
- UniversalPrint(args, os);
1710
- }
1711
-
1712
- // Returns the expectation that matches the arguments, or NULL if no
1713
- // expectation matches them.
1714
- TypedExpectation<F>* FindMatchingExpectationLocked(
1715
- const ArgumentTuple& args) const
1716
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
1717
- g_gmock_mutex.AssertHeld();
1718
- for (typename UntypedExpectations::const_reverse_iterator it =
1719
- untyped_expectations_.rbegin();
1720
- it != untyped_expectations_.rend(); ++it) {
1721
- TypedExpectation<F>* const exp =
1722
- static_cast<TypedExpectation<F>*>(it->get());
1723
- if (exp->ShouldHandleArguments(args)) {
1724
- return exp;
1725
- }
1726
- }
1727
- return NULL;
1728
- }
1729
-
1730
- // Returns a message that the arguments don't match any expectation.
1731
- void FormatUnexpectedCallMessageLocked(
1732
- const ArgumentTuple& args,
1733
- ::std::ostream* os,
1734
- ::std::ostream* why) const
1735
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
1736
- g_gmock_mutex.AssertHeld();
1737
- *os << "\nUnexpected mock function call - ";
1738
- DescribeDefaultActionTo(args, os);
1739
- PrintTriedExpectationsLocked(args, why);
1740
- }
1741
-
1742
- // Prints a list of expectations that have been tried against the
1743
- // current mock function call.
1744
- void PrintTriedExpectationsLocked(
1745
- const ArgumentTuple& args,
1746
- ::std::ostream* why) const
1747
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
1748
- g_gmock_mutex.AssertHeld();
1749
- const int count = static_cast<int>(untyped_expectations_.size());
1750
- *why << "Google Mock tried the following " << count << " "
1751
- << (count == 1 ? "expectation, but it didn't match" :
1752
- "expectations, but none matched")
1753
- << ":\n";
1754
- for (int i = 0; i < count; i++) {
1755
- TypedExpectation<F>* const expectation =
1756
- static_cast<TypedExpectation<F>*>(untyped_expectations_[i].get());
1757
- *why << "\n";
1758
- expectation->DescribeLocationTo(why);
1759
- if (count > 1) {
1760
- *why << "tried expectation #" << i << ": ";
1761
- }
1762
- *why << expectation->source_text() << "...\n";
1763
- expectation->ExplainMatchResultTo(args, why);
1764
- expectation->DescribeCallCountTo(why);
1765
- }
1766
- }
1767
-
1768
- // The current spec (either default action spec or expectation spec)
1769
- // being described on this function mocker.
1770
- MockSpec<F> current_spec_;
1771
-
1772
- // There is no generally useful and implementable semantics of
1773
- // copying a mock object, so copying a mock is usually a user error.
1774
- // Thus we disallow copying function mockers. If the user really
1775
- // wants to copy a mock object, he should implement his own copy
1776
- // operation, for example:
1777
- //
1778
- // class MockFoo : public Foo {
1779
- // public:
1780
- // // Defines a copy constructor explicitly.
1781
- // MockFoo(const MockFoo& src) {}
1782
- // ...
1783
- // };
1784
- GTEST_DISALLOW_COPY_AND_ASSIGN_(FunctionMockerBase);
1785
- }; // class FunctionMockerBase
1786
-
1787
- #ifdef _MSC_VER
1788
- # pragma warning(pop) // Restores the warning state.
1789
- #endif // _MSV_VER
1790
-
1791
- // Implements methods of FunctionMockerBase.
1792
-
1793
- // Verifies that all expectations on this mock function have been
1794
- // satisfied. Reports one or more Google Test non-fatal failures and
1795
- // returns false if not.
1796
-
1797
- // Reports an uninteresting call (whose description is in msg) in the
1798
- // manner specified by 'reaction'.
1799
- void ReportUninterestingCall(CallReaction reaction, const string& msg);
1800
-
1801
- } // namespace internal
1802
-
1803
- // The style guide prohibits "using" statements in a namespace scope
1804
- // inside a header file. However, the MockSpec class template is
1805
- // meant to be defined in the ::testing namespace. The following line
1806
- // is just a trick for working around a bug in MSVC 8.0, which cannot
1807
- // handle it if we define MockSpec in ::testing.
1808
- using internal::MockSpec;
1809
-
1810
- // Const(x) is a convenient function for obtaining a const reference
1811
- // to x. This is useful for setting expectations on an overloaded
1812
- // const mock method, e.g.
1813
- //
1814
- // class MockFoo : public FooInterface {
1815
- // public:
1816
- // MOCK_METHOD0(Bar, int());
1817
- // MOCK_CONST_METHOD0(Bar, int&());
1818
- // };
1819
- //
1820
- // MockFoo foo;
1821
- // // Expects a call to non-const MockFoo::Bar().
1822
- // EXPECT_CALL(foo, Bar());
1823
- // // Expects a call to const MockFoo::Bar().
1824
- // EXPECT_CALL(Const(foo), Bar());
1825
- template <typename T>
1826
- inline const T& Const(const T& x) { return x; }
1827
-
1828
- // Constructs an Expectation object that references and co-owns exp.
1829
- inline Expectation::Expectation(internal::ExpectationBase& exp) // NOLINT
1830
- : expectation_base_(exp.GetHandle().expectation_base()) {}
1831
-
1832
- } // namespace testing
1833
-
1834
- // A separate macro is required to avoid compile errors when the name
1835
- // of the method used in call is a result of macro expansion.
1836
- // See CompilesWithMethodNameExpandedFromMacro tests in
1837
- // internal/gmock-spec-builders_test.cc for more details.
1838
- #define GMOCK_ON_CALL_IMPL_(obj, call) \
1839
- ((obj).gmock_##call).InternalDefaultActionSetAt(__FILE__, __LINE__, \
1840
- #obj, #call)
1841
- #define ON_CALL(obj, call) GMOCK_ON_CALL_IMPL_(obj, call)
1842
-
1843
- #define GMOCK_EXPECT_CALL_IMPL_(obj, call) \
1844
- ((obj).gmock_##call).InternalExpectedAt(__FILE__, __LINE__, #obj, #call)
1845
- #define EXPECT_CALL(obj, call) GMOCK_EXPECT_CALL_IMPL_(obj, call)
1846
-
1847
- #endif // GMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_