nutshell-crm 0.0.5 → 0.0.6.alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. data/.rbenv-version +1 -0
  2. data/.travis.yml +8 -0
  3. data/CHANGELOG.md +5 -0
  4. data/README.md +37 -0
  5. data/Rakefile +14 -3
  6. data/lib/nutshell-crm.rb +92 -5
  7. data/lib/nutshell-crm/version.rb +1 -1
  8. data/nutshell-crm.gemspec +1 -0
  9. data/spec/nutshell-crm_spec.rb +17 -8
  10. data/vendor/bundle/bin/rake +19 -0
  11. data/vendor/bundle/gems/json-1.6.4/.gitignore +8 -0
  12. data/vendor/bundle/gems/json-1.6.4/.travis.yml +15 -0
  13. data/vendor/bundle/gems/json-1.6.4/CHANGES +227 -0
  14. data/vendor/bundle/gems/json-1.6.4/COPYING +58 -0
  15. data/vendor/bundle/gems/json-1.6.4/COPYING-json-jruby +57 -0
  16. data/vendor/bundle/gems/json-1.6.4/GPL +340 -0
  17. data/vendor/bundle/gems/json-1.6.4/Gemfile +11 -0
  18. data/vendor/bundle/gems/json-1.6.4/README-json-jruby.markdown +33 -0
  19. data/vendor/bundle/gems/json-1.6.4/README.rdoc +358 -0
  20. data/vendor/bundle/gems/json-1.6.4/Rakefile +408 -0
  21. data/vendor/bundle/gems/json-1.6.4/TODO +1 -0
  22. data/vendor/bundle/gems/json-1.6.4/VERSION +1 -0
  23. data/{README → vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/.keep} +0 -0
  24. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log +52 -0
  25. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat +1000 -0
  26. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat +1001 -0
  27. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat +900 -0
  28. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat +901 -0
  29. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat +1000 -0
  30. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat +1001 -0
  31. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log +261 -0
  32. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat +1000 -0
  33. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat +1001 -0
  34. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat +1000 -0
  35. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat +1001 -0
  36. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat +1000 -0
  37. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat +1001 -0
  38. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log +262 -0
  39. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat +1000 -0
  40. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat +1001 -0
  41. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log +82 -0
  42. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log +34 -0
  43. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat +900 -0
  44. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat +901 -0
  45. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log +81 -0
  46. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat +1000 -0
  47. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat +1001 -0
  48. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log +82 -0
  49. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat +1000 -0
  50. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat +1001 -0
  51. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log +82 -0
  52. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat +1000 -0
  53. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat +1001 -0
  54. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log +82 -0
  55. data/vendor/bundle/gems/json-1.6.4/benchmarks/data/.keep +0 -0
  56. data/vendor/bundle/gems/json-1.6.4/benchmarks/generator2_benchmark.rb +222 -0
  57. data/vendor/bundle/gems/json-1.6.4/benchmarks/generator_benchmark.rb +224 -0
  58. data/vendor/bundle/gems/json-1.6.4/benchmarks/ohai.json +1216 -0
  59. data/vendor/bundle/gems/json-1.6.4/benchmarks/ohai.ruby +1 -0
  60. data/vendor/bundle/gems/json-1.6.4/benchmarks/parser2_benchmark.rb +251 -0
  61. data/vendor/bundle/gems/json-1.6.4/benchmarks/parser_benchmark.rb +259 -0
  62. data/vendor/bundle/gems/json-1.6.4/data/example.json +1 -0
  63. data/vendor/bundle/gems/json-1.6.4/data/index.html +38 -0
  64. data/vendor/bundle/gems/json-1.6.4/data/prototype.js +4184 -0
  65. data/vendor/bundle/gems/json-1.6.4/diagrams/.keep +0 -0
  66. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/fbuffer/fbuffer.h +156 -0
  67. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/Makefile +187 -0
  68. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/extconf.rb +13 -0
  69. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/generator.bundle +0 -0
  70. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/generator.c +1384 -0
  71. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/generator.h +161 -0
  72. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/generator.o +0 -0
  73. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/json/ext/generator.bundle +0 -0
  74. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/json/ext/parser.bundle +0 -0
  75. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/Makefile +187 -0
  76. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/extconf.rb +13 -0
  77. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/parser.bundle +0 -0
  78. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/parser.c +2203 -0
  79. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/parser.h +77 -0
  80. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/parser.o +0 -0
  81. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/parser.rl +926 -0
  82. data/vendor/bundle/gems/json-1.6.4/install.rb +19 -0
  83. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/ByteListTranscoder.java +167 -0
  84. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/Generator.java +437 -0
  85. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/GeneratorMethods.java +232 -0
  86. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/GeneratorService.java +43 -0
  87. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/GeneratorState.java +522 -0
  88. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/OptionsReader.java +113 -0
  89. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/Parser.java +2640 -0
  90. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/Parser.rl +964 -0
  91. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/ParserService.java +35 -0
  92. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/RuntimeInfo.java +121 -0
  93. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/StringDecoder.java +166 -0
  94. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/StringEncoder.java +106 -0
  95. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/Utils.java +89 -0
  96. data/vendor/bundle/gems/json-1.6.4/json-java.gemspec +22 -0
  97. data/vendor/bundle/gems/json-1.6.4/json.gemspec +40 -0
  98. data/vendor/bundle/gems/json-1.6.4/json_pure.gemspec +42 -0
  99. data/vendor/bundle/gems/json-1.6.4/lib/json.rb +62 -0
  100. data/vendor/bundle/gems/json-1.6.4/lib/json/add/bigdecimal.rb +21 -0
  101. data/vendor/bundle/gems/json-1.6.4/lib/json/add/complex.rb +22 -0
  102. data/vendor/bundle/gems/json-1.6.4/lib/json/add/core.rb +11 -0
  103. data/vendor/bundle/gems/json-1.6.4/lib/json/add/date.rb +34 -0
  104. data/vendor/bundle/gems/json-1.6.4/lib/json/add/date_time.rb +50 -0
  105. data/vendor/bundle/gems/json-1.6.4/lib/json/add/exception.rb +31 -0
  106. data/vendor/bundle/gems/json-1.6.4/lib/json/add/ostruct.rb +31 -0
  107. data/vendor/bundle/gems/json-1.6.4/lib/json/add/range.rb +29 -0
  108. data/vendor/bundle/gems/json-1.6.4/lib/json/add/rational.rb +22 -0
  109. data/vendor/bundle/gems/json-1.6.4/lib/json/add/regexp.rb +30 -0
  110. data/vendor/bundle/gems/json-1.6.4/lib/json/add/struct.rb +30 -0
  111. data/vendor/bundle/gems/json-1.6.4/lib/json/add/symbol.rb +25 -0
  112. data/vendor/bundle/gems/json-1.6.4/lib/json/add/time.rb +35 -0
  113. data/vendor/bundle/gems/json-1.6.4/lib/json/common.rb +470 -0
  114. data/vendor/bundle/gems/json-1.6.4/lib/json/ext.rb +21 -0
  115. data/vendor/bundle/gems/json-1.6.4/lib/json/ext/.keep +0 -0
  116. data/vendor/bundle/gems/json-1.6.4/lib/json/pure.rb +21 -0
  117. data/vendor/bundle/gems/json-1.6.4/lib/json/pure/generator.rb +468 -0
  118. data/vendor/bundle/gems/json-1.6.4/lib/json/pure/parser.rb +359 -0
  119. data/vendor/bundle/gems/json-1.6.4/lib/json/version.rb +8 -0
  120. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail1.json +1 -0
  121. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail10.json +1 -0
  122. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail11.json +1 -0
  123. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail12.json +1 -0
  124. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail13.json +1 -0
  125. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail14.json +1 -0
  126. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail18.json +1 -0
  127. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail19.json +1 -0
  128. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail2.json +1 -0
  129. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail20.json +1 -0
  130. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail21.json +1 -0
  131. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail22.json +1 -0
  132. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail23.json +1 -0
  133. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail24.json +1 -0
  134. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail25.json +1 -0
  135. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail27.json +2 -0
  136. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail28.json +2 -0
  137. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail3.json +1 -0
  138. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail4.json +1 -0
  139. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail5.json +1 -0
  140. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail6.json +1 -0
  141. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail7.json +1 -0
  142. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail8.json +1 -0
  143. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail9.json +1 -0
  144. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass1.json +56 -0
  145. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass15.json +1 -0
  146. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass16.json +1 -0
  147. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass17.json +1 -0
  148. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass2.json +1 -0
  149. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass26.json +1 -0
  150. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass3.json +6 -0
  151. data/vendor/bundle/gems/json-1.6.4/tests/setup_variant.rb +11 -0
  152. data/vendor/bundle/gems/json-1.6.4/tests/test_json.rb +527 -0
  153. data/vendor/bundle/gems/json-1.6.4/tests/test_json_addition.rb +188 -0
  154. data/vendor/bundle/gems/json-1.6.4/tests/test_json_encoding.rb +65 -0
  155. data/vendor/bundle/gems/json-1.6.4/tests/test_json_fixtures.rb +35 -0
  156. data/vendor/bundle/gems/json-1.6.4/tests/test_json_generate.rb +249 -0
  157. data/vendor/bundle/gems/json-1.6.4/tests/test_json_string_matching.rb +40 -0
  158. data/vendor/bundle/gems/json-1.6.4/tests/test_json_unicode.rb +72 -0
  159. data/vendor/bundle/gems/json-1.6.4/tools/fuzz.rb +139 -0
  160. data/vendor/bundle/gems/json-1.6.4/tools/server.rb +62 -0
  161. data/vendor/bundle/gems/rake-0.9.2.2/.gemtest +0 -0
  162. data/vendor/bundle/gems/rake-0.9.2.2/CHANGES +522 -0
  163. data/vendor/bundle/gems/rake-0.9.2.2/MIT-LICENSE +21 -0
  164. data/vendor/bundle/gems/rake-0.9.2.2/README.rdoc +197 -0
  165. data/vendor/bundle/gems/rake-0.9.2.2/Rakefile +369 -0
  166. data/vendor/bundle/gems/rake-0.9.2.2/TODO +20 -0
  167. data/vendor/bundle/gems/rake-0.9.2.2/bin/rake +33 -0
  168. data/vendor/bundle/gems/rake-0.9.2.2/install.rb +90 -0
  169. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake.rb +69 -0
  170. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/alt_system.rb +109 -0
  171. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/application.rb +595 -0
  172. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/classic_namespace.rb +11 -0
  173. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/clean.rb +32 -0
  174. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/cloneable.rb +25 -0
  175. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/compositepublisher.rb +21 -0
  176. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/ftptools.rb +150 -0
  177. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/publisher.rb +73 -0
  178. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/rubyforgepublisher.rb +16 -0
  179. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/sshpublisher.rb +50 -0
  180. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/sys.rb +191 -0
  181. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/default_loader.rb +10 -0
  182. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/dsl_definition.rb +176 -0
  183. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/early_time.rb +18 -0
  184. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/ext/core.rb +27 -0
  185. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/ext/module.rb +39 -0
  186. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/ext/string.rb +167 -0
  187. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/ext/time.rb +14 -0
  188. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/file_creation_task.rb +24 -0
  189. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/file_list.rb +403 -0
  190. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/file_task.rb +47 -0
  191. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/file_utils.rb +114 -0
  192. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/file_utils_ext.rb +145 -0
  193. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/gempackagetask.rb +15 -0
  194. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/invocation_chain.rb +51 -0
  195. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/invocation_exception_mixin.rb +16 -0
  196. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/loaders/makefile.rb +40 -0
  197. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/multi_task.rb +16 -0
  198. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/name_space.rb +25 -0
  199. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/packagetask.rb +185 -0
  200. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/pathmap.rb +1 -0
  201. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/pseudo_status.rb +24 -0
  202. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/rake_module.rb +29 -0
  203. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb +22 -0
  204. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/rdoctask.rb +234 -0
  205. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/ruby182_test_unit_fix.rb +25 -0
  206. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
  207. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/runtest.rb +21 -0
  208. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/task.rb +327 -0
  209. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/task_argument_error.rb +7 -0
  210. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/task_arguments.rb +78 -0
  211. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/task_manager.rb +307 -0
  212. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/tasklib.rb +22 -0
  213. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/testtask.rb +191 -0
  214. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/version.rb +8 -0
  215. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/win32.rb +55 -0
  216. data/vendor/bundle/gems/rake-0.9.2.2/test/file_creation.rb +34 -0
  217. data/vendor/bundle/gems/rake-0.9.2.2/test/helper.rb +492 -0
  218. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake.rb +40 -0
  219. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_application.rb +489 -0
  220. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_application_options.rb +335 -0
  221. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_clean.rb +14 -0
  222. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_definitions.rb +80 -0
  223. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_directory_task.rb +46 -0
  224. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_dsl.rb +77 -0
  225. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_early_time.rb +31 -0
  226. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_extension.rb +59 -0
  227. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_file_creation_task.rb +56 -0
  228. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_file_list.rb +628 -0
  229. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_file_list_path_map.rb +8 -0
  230. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_file_task.rb +102 -0
  231. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_file_utils.rb +305 -0
  232. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_ftp_file.rb +59 -0
  233. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_functional.rb +450 -0
  234. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_invocation_chain.rb +52 -0
  235. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_makefile_loader.rb +44 -0
  236. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_multi_task.rb +51 -0
  237. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_name_space.rb +43 -0
  238. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_package_task.rb +79 -0
  239. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_path_map.rb +157 -0
  240. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_path_map_explode.rb +34 -0
  241. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_path_map_partial.rb +18 -0
  242. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_pseudo_status.rb +21 -0
  243. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_rake_test_loader.rb +21 -0
  244. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_rdoc_task.rb +83 -0
  245. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_require.rb +40 -0
  246. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_rules.rb +327 -0
  247. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task.rb +267 -0
  248. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_argument_parsing.rb +103 -0
  249. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_arguments.rb +88 -0
  250. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_lib.rb +9 -0
  251. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_manager.rb +157 -0
  252. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_manager_argument_resolution.rb +36 -0
  253. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_with_arguments.rb +173 -0
  254. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_test_task.rb +120 -0
  255. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_top_level_functions.rb +111 -0
  256. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_win32.rb +72 -0
  257. data/vendor/bundle/gems/rake-0.9.2.2/test/test_sys.rb +20 -0
  258. data/vendor/bundle/specifications/json-1.6.4.gemspec +39 -0
  259. data/vendor/bundle/specifications/rake-0.9.2.2.gemspec +34 -0
  260. metadata +285 -18
@@ -0,0 +1 @@
1
+ ["Illegal backslash escape: \x15"]
@@ -0,0 +1 @@
1
+ ["Illegal backslash escape: \'"]
@@ -0,0 +1 @@
1
+ ["Illegal backslash escape: \017"]
@@ -0,0 +1 @@
1
+ [[[[[[[[[[[[[[[[[[["Not too deep"]]]]]]]]]]]]]]]]]]]
@@ -0,0 +1 @@
1
+ ["tab\ character\ in\ string\ "]
@@ -0,0 +1,6 @@
1
+ {
2
+ "JSON Test Pattern pass3": {
3
+ "The outermost value": "must be an object or array.",
4
+ "In this test": "It is an object."
5
+ }
6
+ }
@@ -0,0 +1,11 @@
1
+ case ENV['JSON']
2
+ when 'pure'
3
+ $:.unshift 'lib'
4
+ require 'json/pure'
5
+ when 'ext'
6
+ $:.unshift 'ext', 'lib'
7
+ require 'json/ext'
8
+ else
9
+ $:.unshift 'ext', 'lib'
10
+ require 'json'
11
+ end
@@ -0,0 +1,527 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ require 'test/unit'
5
+ require File.join(File.dirname(__FILE__), 'setup_variant')
6
+ require 'stringio'
7
+ require 'tempfile'
8
+ require 'ostruct'
9
+
10
+ unless Array.method_defined?(:permutation)
11
+ begin
12
+ require 'enumerator'
13
+ require 'permutation'
14
+ class Array
15
+ def permutation
16
+ Permutation.for(self).to_enum.map { |x| x.project }
17
+ end
18
+ end
19
+ rescue LoadError
20
+ warn "Skipping permutation tests."
21
+ end
22
+ end
23
+
24
+ class TC_JSON < Test::Unit::TestCase
25
+ include JSON
26
+
27
+ def setup
28
+ @ary = [1, "foo", 3.14, 4711.0, 2.718, nil, [1,-2,3], false, true].map do
29
+ |x| [x]
30
+ end
31
+ @ary_to_parse = ["1", '"foo"', "3.14", "4711.0", "2.718", "null",
32
+ "[1,-2,3]", "false", "true"].map do
33
+ |x| "[#{x}]"
34
+ end
35
+ @hash = {
36
+ 'a' => 2,
37
+ 'b' => 3.141,
38
+ 'c' => 'c',
39
+ 'd' => [ 1, "b", 3.14 ],
40
+ 'e' => { 'foo' => 'bar' },
41
+ 'g' => "\"\0\037",
42
+ 'h' => 1000.0,
43
+ 'i' => 0.001
44
+ }
45
+ @json = '{"a":2,"b":3.141,"c":"c","d":[1,"b",3.14],"e":{"foo":"bar"},'\
46
+ '"g":"\\"\\u0000\\u001f","h":1.0E3,"i":1.0E-3}'
47
+ end
48
+
49
+ def test_construction
50
+ parser = JSON::Parser.new('test')
51
+ assert_equal 'test', parser.source
52
+ end
53
+
54
+ def assert_equal_float(expected, is)
55
+ assert_in_delta(expected.first, is.first, 1e-2)
56
+ end
57
+
58
+ def test_parse_simple_arrays
59
+ assert_equal([], parse('[]'))
60
+ assert_equal([], parse(' [ ] '))
61
+ assert_equal([nil], parse('[null]'))
62
+ assert_equal([false], parse('[false]'))
63
+ assert_equal([true], parse('[true]'))
64
+ assert_equal([-23], parse('[-23]'))
65
+ assert_equal([23], parse('[23]'))
66
+ assert_equal([0.23], parse('[0.23]'))
67
+ assert_equal([0.0], parse('[0e0]'))
68
+ assert_raises(JSON::ParserError) { parse('[+23.2]') }
69
+ assert_raises(JSON::ParserError) { parse('[+23]') }
70
+ assert_raises(JSON::ParserError) { parse('[.23]') }
71
+ assert_raises(JSON::ParserError) { parse('[023]') }
72
+ assert_equal_float [3.141], parse('[3.141]')
73
+ assert_equal_float [-3.141], parse('[-3.141]')
74
+ assert_equal_float [3.141], parse('[3141e-3]')
75
+ assert_equal_float [3.141], parse('[3141.1e-3]')
76
+ assert_equal_float [3.141], parse('[3141E-3]')
77
+ assert_equal_float [3.141], parse('[3141.0E-3]')
78
+ assert_equal_float [-3.141], parse('[-3141.0e-3]')
79
+ assert_equal_float [-3.141], parse('[-3141e-3]')
80
+ assert_raises(ParserError) { parse('[NaN]') }
81
+ assert parse('[NaN]', :allow_nan => true).first.nan?
82
+ assert_raises(ParserError) { parse('[Infinity]') }
83
+ assert_equal [1.0/0], parse('[Infinity]', :allow_nan => true)
84
+ assert_raises(ParserError) { parse('[-Infinity]') }
85
+ assert_equal [-1.0/0], parse('[-Infinity]', :allow_nan => true)
86
+ assert_equal([""], parse('[""]'))
87
+ assert_equal(["foobar"], parse('["foobar"]'))
88
+ assert_equal([{}], parse('[{}]'))
89
+ end
90
+
91
+ def test_parse_simple_objects
92
+ assert_equal({}, parse('{}'))
93
+ assert_equal({}, parse(' { } '))
94
+ assert_equal({ "a" => nil }, parse('{ "a" : null}'))
95
+ assert_equal({ "a" => nil }, parse('{"a":null}'))
96
+ assert_equal({ "a" => false }, parse('{ "a" : false } '))
97
+ assert_equal({ "a" => false }, parse('{"a":false}'))
98
+ assert_raises(JSON::ParserError) { parse('{false}') }
99
+ assert_equal({ "a" => true }, parse('{"a":true}'))
100
+ assert_equal({ "a" => true }, parse(' { "a" : true } '))
101
+ assert_equal({ "a" => -23 }, parse(' { "a" : -23 } '))
102
+ assert_equal({ "a" => -23 }, parse(' { "a" : -23 } '))
103
+ assert_equal({ "a" => 23 }, parse('{"a":23 } '))
104
+ assert_equal({ "a" => 23 }, parse(' { "a" : 23 } '))
105
+ assert_equal({ "a" => 0.23 }, parse(' { "a" : 0.23 } '))
106
+ assert_equal({ "a" => 0.23 }, parse(' { "a" : 0.23 } '))
107
+ end
108
+
109
+ def test_parse_json_primitive_values
110
+ assert_raise(JSON::ParserError) { JSON.parse('') }
111
+ assert_raise(JSON::ParserError) { JSON.parse('', :quirks_mode => true) }
112
+ assert_raise(TypeError) { JSON.parse(nil) }
113
+ assert_raise(TypeError) { JSON.parse(nil, :quirks_mode => true) }
114
+ assert_raise(JSON::ParserError) { JSON.parse(' /* foo */ ') }
115
+ assert_raise(JSON::ParserError) { JSON.parse(' /* foo */ ', :quirks_mode => true) }
116
+ parser = JSON::Parser.new('null')
117
+ assert_equal false, parser.quirks_mode?
118
+ assert_raise(JSON::ParserError) { parser.parse }
119
+ assert_raise(JSON::ParserError) { JSON.parse('null') }
120
+ assert_equal nil, JSON.parse('null', :quirks_mode => true)
121
+ parser = JSON::Parser.new('null', :quirks_mode => true)
122
+ assert_equal true, parser.quirks_mode?
123
+ assert_equal nil, parser.parse
124
+ assert_raise(JSON::ParserError) { JSON.parse('false') }
125
+ assert_equal false, JSON.parse('false', :quirks_mode => true)
126
+ assert_raise(JSON::ParserError) { JSON.parse('true') }
127
+ assert_equal true, JSON.parse('true', :quirks_mode => true)
128
+ assert_raise(JSON::ParserError) { JSON.parse('23') }
129
+ assert_equal 23, JSON.parse('23', :quirks_mode => true)
130
+ assert_raise(JSON::ParserError) { JSON.parse('1') }
131
+ assert_equal 1, JSON.parse('1', :quirks_mode => true)
132
+ assert_raise(JSON::ParserError) { JSON.parse('3.141') }
133
+ assert_in_delta 3.141, JSON.parse('3.141', :quirks_mode => true), 1E-3
134
+ assert_raise(JSON::ParserError) { JSON.parse('18446744073709551616') }
135
+ assert_equal 2 ** 64, JSON.parse('18446744073709551616', :quirks_mode => true)
136
+ assert_raise(JSON::ParserError) { JSON.parse('"foo"') }
137
+ assert_equal 'foo', JSON.parse('"foo"', :quirks_mode => true)
138
+ assert_raise(JSON::ParserError) { JSON.parse('NaN', :allow_nan => true) }
139
+ assert JSON.parse('NaN', :quirks_mode => true, :allow_nan => true).nan?
140
+ assert_raise(JSON::ParserError) { JSON.parse('Infinity', :allow_nan => true) }
141
+ assert JSON.parse('Infinity', :quirks_mode => true, :allow_nan => true).infinite?
142
+ assert_raise(JSON::ParserError) { JSON.parse('-Infinity', :allow_nan => true) }
143
+ assert JSON.parse('-Infinity', :quirks_mode => true, :allow_nan => true).infinite?
144
+ assert_raise(JSON::ParserError) { JSON.parse('[ 1, ]', :quirks_mode => true) }
145
+ end
146
+
147
+ if Array.method_defined?(:permutation)
148
+ def test_parse_more_complex_arrays
149
+ a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "n€ßt€ð2" => {} }]
150
+ a.permutation.each do |perm|
151
+ json = pretty_generate(perm)
152
+ assert_equal perm, parse(json)
153
+ end
154
+ end
155
+
156
+ def test_parse_complex_objects
157
+ a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "n€ßt€ð2" => {} }]
158
+ a.permutation.each do |perm|
159
+ s = "a"
160
+ orig_obj = perm.inject({}) { |h, x| h[s.dup] = x; s = s.succ; h }
161
+ json = pretty_generate(orig_obj)
162
+ assert_equal orig_obj, parse(json)
163
+ end
164
+ end
165
+ end
166
+
167
+ def test_parse_arrays
168
+ assert_equal([1,2,3], parse('[1,2,3]'))
169
+ assert_equal([1.2,2,3], parse('[1.2,2,3]'))
170
+ assert_equal([[],[[],[]]], parse('[[],[[],[]]]'))
171
+ end
172
+
173
+ def test_parse_values
174
+ assert_equal([""], parse('[""]'))
175
+ assert_equal(["\\"], parse('["\\\\"]'))
176
+ assert_equal(['"'], parse('["\""]'))
177
+ assert_equal(['\\"\\'], parse('["\\\\\\"\\\\"]'))
178
+ assert_equal(["\"\b\n\r\t\0\037"],
179
+ parse('["\"\b\n\r\t\u0000\u001f"]'))
180
+ for i in 0 ... @ary.size
181
+ assert_equal(@ary[i], parse(@ary_to_parse[i]))
182
+ end
183
+ end
184
+
185
+ def test_parse_array
186
+ assert_equal([], parse('[]'))
187
+ assert_equal([], parse(' [ ] '))
188
+ assert_equal([1], parse('[1]'))
189
+ assert_equal([1], parse(' [ 1 ] '))
190
+ assert_equal(@ary,
191
+ parse('[[1],["foo"],[3.14],[47.11e+2],[2718.0E-3],[null],[[1,-2,3]]'\
192
+ ',[false],[true]]'))
193
+ assert_equal(@ary, parse(%Q{ [ [1] , ["foo"] , [3.14] \t , [47.11e+2]\s
194
+ , [2718.0E-3 ],\r[ null] , [[1, -2, 3 ]], [false ],[ true]\n ] }))
195
+ end
196
+
197
+ class SubArray < Array
198
+ def <<(v)
199
+ @shifted = true
200
+ super
201
+ end
202
+
203
+ def shifted?
204
+ @shifted
205
+ end
206
+ end
207
+
208
+ class SubArray2 < Array
209
+ def to_json(*a)
210
+ {
211
+ JSON.create_id => self.class.name,
212
+ 'ary' => to_a,
213
+ }.to_json(*a)
214
+ end
215
+
216
+ def self.json_create(o)
217
+ o.delete JSON.create_id
218
+ o['ary']
219
+ end
220
+ end
221
+
222
+ class SubArrayWrapper
223
+ def initialize
224
+ @data = []
225
+ end
226
+
227
+ attr_reader :data
228
+
229
+ def [](index)
230
+ @data[index]
231
+ end
232
+
233
+ def <<(value)
234
+ @data << value
235
+ @shifted = true
236
+ end
237
+
238
+ def shifted?
239
+ @shifted
240
+ end
241
+ end
242
+
243
+ def test_parse_array_custom_array_derived_class
244
+ res = parse('[1,2]', :array_class => SubArray)
245
+ assert_equal([1,2], res)
246
+ assert_equal(SubArray, res.class)
247
+ assert res.shifted?
248
+ end
249
+
250
+ def test_parse_array_custom_non_array_derived_class
251
+ res = parse('[1,2]', :array_class => SubArrayWrapper)
252
+ assert_equal([1,2], res.data)
253
+ assert_equal(SubArrayWrapper, res.class)
254
+ assert res.shifted?
255
+ end
256
+
257
+ def test_parse_object
258
+ assert_equal({}, parse('{}'))
259
+ assert_equal({}, parse(' { } '))
260
+ assert_equal({'foo'=>'bar'}, parse('{"foo":"bar"}'))
261
+ assert_equal({'foo'=>'bar'}, parse(' { "foo" : "bar" } '))
262
+ end
263
+
264
+ class SubHash < Hash
265
+ def []=(k, v)
266
+ @item_set = true
267
+ super
268
+ end
269
+
270
+ def item_set?
271
+ @item_set
272
+ end
273
+ end
274
+
275
+ class SubHash2 < Hash
276
+ def to_json(*a)
277
+ {
278
+ JSON.create_id => self.class.name,
279
+ }.merge(self).to_json(*a)
280
+ end
281
+
282
+ def self.json_create(o)
283
+ o.delete JSON.create_id
284
+ self[o]
285
+ end
286
+ end
287
+
288
+ class SubOpenStruct < OpenStruct
289
+ def [](k)
290
+ __send__(k)
291
+ end
292
+
293
+ def []=(k, v)
294
+ @item_set = true
295
+ __send__("#{k}=", v)
296
+ end
297
+
298
+ def item_set?
299
+ @item_set
300
+ end
301
+ end
302
+
303
+ def test_parse_object_custom_hash_derived_class
304
+ res = parse('{"foo":"bar"}', :object_class => SubHash)
305
+ assert_equal({"foo" => "bar"}, res)
306
+ assert_equal(SubHash, res.class)
307
+ assert res.item_set?
308
+ end
309
+
310
+ def test_parse_object_custom_non_hash_derived_class
311
+ res = parse('{"foo":"bar"}', :object_class => SubOpenStruct)
312
+ assert_equal "bar", res.foo
313
+ assert_equal(SubOpenStruct, res.class)
314
+ assert res.item_set?
315
+ end
316
+
317
+ def test_generation_of_core_subclasses_with_new_to_json
318
+ obj = SubHash2["foo" => SubHash2["bar" => true]]
319
+ obj_json = JSON(obj)
320
+ obj_again = JSON(obj_json)
321
+ assert_kind_of SubHash2, obj_again
322
+ assert_kind_of SubHash2, obj_again['foo']
323
+ assert obj_again['foo']['bar']
324
+ assert_equal obj, obj_again
325
+ assert_equal ["foo"], JSON(JSON(SubArray2["foo"]))
326
+ end
327
+
328
+ def test_generation_of_core_subclasses_with_default_to_json
329
+ assert_equal '{"foo":"bar"}', JSON(SubHash["foo" => "bar"])
330
+ assert_equal '["foo"]', JSON(SubArray["foo"])
331
+ end
332
+
333
+ def test_generation_of_core_subclasses
334
+ obj = SubHash["foo" => SubHash["bar" => true]]
335
+ obj_json = JSON(obj)
336
+ obj_again = JSON(obj_json)
337
+ assert_kind_of Hash, obj_again
338
+ assert_kind_of Hash, obj_again['foo']
339
+ assert obj_again['foo']['bar']
340
+ assert_equal obj, obj_again
341
+ end
342
+
343
+ def test_parser_reset
344
+ parser = Parser.new(@json)
345
+ assert_equal(@hash, parser.parse)
346
+ assert_equal(@hash, parser.parse)
347
+ end
348
+
349
+ def test_comments
350
+ json = <<EOT
351
+ {
352
+ "key1":"value1", // eol comment
353
+ "key2":"value2" /* multi line
354
+ * comment */,
355
+ "key3":"value3" /* multi line
356
+ // nested eol comment
357
+ * comment */
358
+ }
359
+ EOT
360
+ assert_equal(
361
+ { "key1" => "value1", "key2" => "value2", "key3" => "value3" },
362
+ parse(json))
363
+ json = <<EOT
364
+ {
365
+ "key1":"value1" /* multi line
366
+ // nested eol comment
367
+ /* illegal nested multi line comment */
368
+ * comment */
369
+ }
370
+ EOT
371
+ assert_raises(ParserError) { parse(json) }
372
+ json = <<EOT
373
+ {
374
+ "key1":"value1" /* multi line
375
+ // nested eol comment
376
+ closed multi comment */
377
+ and again, throw an Error */
378
+ }
379
+ EOT
380
+ assert_raises(ParserError) { parse(json) }
381
+ json = <<EOT
382
+ {
383
+ "key1":"value1" /*/*/
384
+ }
385
+ EOT
386
+ assert_equal({ "key1" => "value1" }, parse(json))
387
+ end
388
+
389
+ def test_backslash
390
+ data = [ '\\.(?i:gif|jpe?g|png)$' ]
391
+ json = '["\\\\.(?i:gif|jpe?g|png)$"]'
392
+ assert_equal json, JSON.generate(data)
393
+ assert_equal data, JSON.parse(json)
394
+ #
395
+ data = [ '\\"' ]
396
+ json = '["\\\\\""]'
397
+ assert_equal json, JSON.generate(data)
398
+ assert_equal data, JSON.parse(json)
399
+ #
400
+ json = '["/"]'
401
+ data = JSON.parse(json)
402
+ assert_equal ['/'], data
403
+ assert_equal json, JSON.generate(data)
404
+ #
405
+ json = '["\""]'
406
+ data = JSON.parse(json)
407
+ assert_equal ['"'], data
408
+ assert_equal json, JSON.generate(data)
409
+ json = '["\\\'"]'
410
+ data = JSON.parse(json)
411
+ assert_equal ["'"], data
412
+ assert_equal '["\'"]', JSON.generate(data)
413
+ end
414
+
415
+ def test_wrong_inputs
416
+ assert_raises(ParserError) { JSON.parse('"foo"') }
417
+ assert_raises(ParserError) { JSON.parse('123') }
418
+ assert_raises(ParserError) { JSON.parse('[] bla') }
419
+ assert_raises(ParserError) { JSON.parse('[] 1') }
420
+ assert_raises(ParserError) { JSON.parse('[] []') }
421
+ assert_raises(ParserError) { JSON.parse('[] {}') }
422
+ assert_raises(ParserError) { JSON.parse('{} []') }
423
+ assert_raises(ParserError) { JSON.parse('{} {}') }
424
+ assert_raises(ParserError) { JSON.parse('[NULL]') }
425
+ assert_raises(ParserError) { JSON.parse('[FALSE]') }
426
+ assert_raises(ParserError) { JSON.parse('[TRUE]') }
427
+ assert_raises(ParserError) { JSON.parse('[07] ') }
428
+ assert_raises(ParserError) { JSON.parse('[0a]') }
429
+ assert_raises(ParserError) { JSON.parse('[1.]') }
430
+ assert_raises(ParserError) { JSON.parse(' ') }
431
+ end
432
+
433
+ def test_nesting
434
+ assert_raises(JSON::NestingError) { JSON.parse '[[]]', :max_nesting => 1 }
435
+ assert_raises(JSON::NestingError) { JSON.parser.new('[[]]', :max_nesting => 1).parse }
436
+ assert_equal [[]], JSON.parse('[[]]', :max_nesting => 2)
437
+ too_deep = '[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]'
438
+ too_deep_ary = eval too_deep
439
+ assert_raises(JSON::NestingError) { JSON.parse too_deep }
440
+ assert_raises(JSON::NestingError) { JSON.parser.new(too_deep).parse }
441
+ assert_raises(JSON::NestingError) { JSON.parse too_deep, :max_nesting => 19 }
442
+ ok = JSON.parse too_deep, :max_nesting => 20
443
+ assert_equal too_deep_ary, ok
444
+ ok = JSON.parse too_deep, :max_nesting => nil
445
+ assert_equal too_deep_ary, ok
446
+ ok = JSON.parse too_deep, :max_nesting => false
447
+ assert_equal too_deep_ary, ok
448
+ ok = JSON.parse too_deep, :max_nesting => 0
449
+ assert_equal too_deep_ary, ok
450
+ assert_raises(JSON::NestingError) { JSON.generate [[]], :max_nesting => 1 }
451
+ assert_equal '[[]]', JSON.generate([[]], :max_nesting => 2)
452
+ assert_raises(JSON::NestingError) { JSON.generate too_deep_ary }
453
+ assert_raises(JSON::NestingError) { JSON.generate too_deep_ary, :max_nesting => 19 }
454
+ ok = JSON.generate too_deep_ary, :max_nesting => 20
455
+ assert_equal too_deep, ok
456
+ ok = JSON.generate too_deep_ary, :max_nesting => nil
457
+ assert_equal too_deep, ok
458
+ ok = JSON.generate too_deep_ary, :max_nesting => false
459
+ assert_equal too_deep, ok
460
+ ok = JSON.generate too_deep_ary, :max_nesting => 0
461
+ assert_equal too_deep, ok
462
+ end
463
+
464
+ def test_symbolize_names
465
+ assert_equal({ "foo" => "bar", "baz" => "quux" },
466
+ JSON.parse('{"foo":"bar", "baz":"quux"}'))
467
+ assert_equal({ :foo => "bar", :baz => "quux" },
468
+ JSON.parse('{"foo":"bar", "baz":"quux"}', :symbolize_names => true))
469
+ end
470
+
471
+ def test_load
472
+ assert_equal @hash, JSON.load(@json)
473
+ tempfile = Tempfile.open('json')
474
+ tempfile.write @json
475
+ tempfile.rewind
476
+ assert_equal @hash, JSON.load(tempfile)
477
+ stringio = StringIO.new(@json)
478
+ stringio.rewind
479
+ assert_equal @hash, JSON.load(stringio)
480
+ assert_equal nil, JSON.load(nil)
481
+ assert_equal nil, JSON.load('')
482
+ end
483
+
484
+ def test_dump
485
+ too_deep = '[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]'
486
+ assert_equal too_deep, JSON.dump(eval(too_deep))
487
+ assert_kind_of String, Marshal.dump(eval(too_deep))
488
+ assert_raises(ArgumentError) { JSON.dump(eval(too_deep), 19) }
489
+ assert_raises(ArgumentError) { Marshal.dump(eval(too_deep), 19) }
490
+ assert_equal too_deep, JSON.dump(eval(too_deep), 20)
491
+ assert_kind_of String, Marshal.dump(eval(too_deep), 20)
492
+ output = StringIO.new
493
+ JSON.dump(eval(too_deep), output)
494
+ assert_equal too_deep, output.string
495
+ output = StringIO.new
496
+ JSON.dump(eval(too_deep), output, 20)
497
+ assert_equal too_deep, output.string
498
+ end
499
+
500
+ def test_big_integers
501
+ json1 = JSON([orig = (1 << 31) - 1])
502
+ assert_equal orig, JSON[json1][0]
503
+ json2 = JSON([orig = 1 << 31])
504
+ assert_equal orig, JSON[json2][0]
505
+ json3 = JSON([orig = (1 << 62) - 1])
506
+ assert_equal orig, JSON[json3][0]
507
+ json4 = JSON([orig = 1 << 62])
508
+ assert_equal orig, JSON[json4][0]
509
+ json5 = JSON([orig = 1 << 64])
510
+ assert_equal orig, JSON[json5][0]
511
+ end
512
+
513
+ if defined?(JSON::Ext::Parser)
514
+ def test_allocate
515
+ parser = JSON::Ext::Parser.new("{}")
516
+ assert_raise(TypeError, '[ruby-core:35079]') {parser.__send__(:initialize, "{}")}
517
+ parser = JSON::Ext::Parser.allocate
518
+ assert_raise(TypeError, '[ruby-core:35079]') {parser.source}
519
+ end
520
+ end
521
+
522
+ def test_argument_encoding
523
+ source = "{}".force_encoding("ascii-8bit")
524
+ JSON::Parser.new(source)
525
+ assert_equal Encoding::ASCII_8BIT, source.encoding
526
+ end if defined?(Encoding::ASCII_8BIT)
527
+ end