benschwarz-smoke 0.5.7 → 0.5.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (194) hide show
  1. data/Rakefile +6 -0
  2. data/VERSION.yml +1 -1
  3. metadata +65 -196
  4. data/Gemfile +0 -10
  5. data/bin/edit_json.rb +0 -3
  6. data/bin/restclient +0 -3
  7. data/vendor/gems/cache/crack-0.1.1.gem +0 -0
  8. data/vendor/gems/cache/fakeweb-1.2.5.gem +0 -0
  9. data/vendor/gems/cache/json-1.1.3.gem +0 -0
  10. data/vendor/gems/cache/rest-client-1.0.1.gem +0 -0
  11. data/vendor/gems/cache/simple-rss-1.2.gem +0 -0
  12. data/vendor/gems/cache/wycats-moneta-0.6.0.gem +0 -0
  13. data/vendor/gems/environment.rb +0 -83
  14. data/vendor/gems/gems/crack-0.1.1/LICENSE +0 -20
  15. data/vendor/gems/gems/crack-0.1.1/README.rdoc +0 -22
  16. data/vendor/gems/gems/crack-0.1.1/VERSION.yml +0 -4
  17. data/vendor/gems/gems/crack-0.1.1/lib/crack.rb +0 -7
  18. data/vendor/gems/gems/crack-0.1.1/lib/crack/core_extensions.rb +0 -126
  19. data/vendor/gems/gems/crack-0.1.1/lib/crack/json.rb +0 -66
  20. data/vendor/gems/gems/crack-0.1.1/lib/crack/xml.rb +0 -211
  21. data/vendor/gems/gems/crack-0.1.1/test/crack_test.rb +0 -4
  22. data/vendor/gems/gems/crack-0.1.1/test/json_test.rb +0 -42
  23. data/vendor/gems/gems/crack-0.1.1/test/test_helper.rb +0 -12
  24. data/vendor/gems/gems/crack-0.1.1/test/xml_test.rb +0 -451
  25. data/vendor/gems/gems/fakeweb-1.2.5/CHANGELOG +0 -163
  26. data/vendor/gems/gems/fakeweb-1.2.5/LICENSE.txt +0 -281
  27. data/vendor/gems/gems/fakeweb-1.2.5/README.rdoc +0 -193
  28. data/vendor/gems/gems/fakeweb-1.2.5/Rakefile +0 -76
  29. data/vendor/gems/gems/fakeweb-1.2.5/lib/fake_web.rb +0 -172
  30. data/vendor/gems/gems/fakeweb-1.2.5/lib/fake_web/ext/net_http.rb +0 -71
  31. data/vendor/gems/gems/fakeweb-1.2.5/lib/fake_web/registry.rb +0 -103
  32. data/vendor/gems/gems/fakeweb-1.2.5/lib/fake_web/responder.rb +0 -113
  33. data/vendor/gems/gems/fakeweb-1.2.5/lib/fake_web/response.rb +0 -10
  34. data/vendor/gems/gems/fakeweb-1.2.5/lib/fake_web/stub_socket.rb +0 -15
  35. data/vendor/gems/gems/fakeweb-1.2.5/lib/fake_web/utility.rb +0 -22
  36. data/vendor/gems/gems/fakeweb-1.2.5/lib/fakeweb.rb +0 -2
  37. data/vendor/gems/gems/fakeweb-1.2.5/test/fixtures/google_response_from_curl +0 -12
  38. data/vendor/gems/gems/fakeweb-1.2.5/test/fixtures/google_response_with_transfer_encoding +0 -17
  39. data/vendor/gems/gems/fakeweb-1.2.5/test/fixtures/google_response_without_transfer_encoding +0 -11
  40. data/vendor/gems/gems/fakeweb-1.2.5/test/fixtures/test_example.txt +0 -1
  41. data/vendor/gems/gems/fakeweb-1.2.5/test/fixtures/test_txt_file +0 -3
  42. data/vendor/gems/gems/fakeweb-1.2.5/test/test_allow_net_connect.rb +0 -85
  43. data/vendor/gems/gems/fakeweb-1.2.5/test/test_deprecations.rb +0 -54
  44. data/vendor/gems/gems/fakeweb-1.2.5/test/test_fake_authentication.rb +0 -92
  45. data/vendor/gems/gems/fakeweb-1.2.5/test/test_fake_web.rb +0 -518
  46. data/vendor/gems/gems/fakeweb-1.2.5/test/test_fake_web_open_uri.rb +0 -58
  47. data/vendor/gems/gems/fakeweb-1.2.5/test/test_helper.rb +0 -74
  48. data/vendor/gems/gems/fakeweb-1.2.5/test/test_missing_open_uri.rb +0 -25
  49. data/vendor/gems/gems/fakeweb-1.2.5/test/test_precedence.rb +0 -51
  50. data/vendor/gems/gems/fakeweb-1.2.5/test/test_query_string.rb +0 -45
  51. data/vendor/gems/gems/fakeweb-1.2.5/test/test_regexes.rb +0 -103
  52. data/vendor/gems/gems/fakeweb-1.2.5/test/test_response_headers.rb +0 -67
  53. data/vendor/gems/gems/fakeweb-1.2.5/test/test_trailing_slashes.rb +0 -53
  54. data/vendor/gems/gems/fakeweb-1.2.5/test/test_utility.rb +0 -70
  55. data/vendor/gems/gems/json-1.1.3/CHANGES +0 -93
  56. data/vendor/gems/gems/json-1.1.3/GPL +0 -340
  57. data/vendor/gems/gems/json-1.1.3/README +0 -78
  58. data/vendor/gems/gems/json-1.1.3/RUBY +0 -58
  59. data/vendor/gems/gems/json-1.1.3/Rakefile +0 -309
  60. data/vendor/gems/gems/json-1.1.3/TODO +0 -1
  61. data/vendor/gems/gems/json-1.1.3/VERSION +0 -1
  62. data/vendor/gems/gems/json-1.1.3/benchmarks/benchmark.txt +0 -133
  63. data/vendor/gems/gems/json-1.1.3/benchmarks/benchmark_generator.rb +0 -48
  64. data/vendor/gems/gems/json-1.1.3/benchmarks/benchmark_parser.rb +0 -26
  65. data/vendor/gems/gems/json-1.1.3/benchmarks/benchmark_rails.rb +0 -26
  66. data/vendor/gems/gems/json-1.1.3/bin/edit_json.rb +0 -10
  67. data/vendor/gems/gems/json-1.1.3/bin/prettify_json.rb +0 -76
  68. data/vendor/gems/gems/json-1.1.3/data/example.json +0 -1
  69. data/vendor/gems/gems/json-1.1.3/data/index.html +0 -38
  70. data/vendor/gems/gems/json-1.1.3/data/prototype.js +0 -4184
  71. data/vendor/gems/gems/json-1.1.3/ext/json/ext/generator.bundle +0 -0
  72. data/vendor/gems/gems/json-1.1.3/ext/json/ext/generator/Makefile +0 -150
  73. data/vendor/gems/gems/json-1.1.3/ext/json/ext/generator/extconf.rb +0 -9
  74. data/vendor/gems/gems/json-1.1.3/ext/json/ext/generator/generator.bundle +0 -0
  75. data/vendor/gems/gems/json-1.1.3/ext/json/ext/generator/generator.c +0 -875
  76. data/vendor/gems/gems/json-1.1.3/ext/json/ext/generator/generator.o +0 -0
  77. data/vendor/gems/gems/json-1.1.3/ext/json/ext/generator/unicode.c +0 -182
  78. data/vendor/gems/gems/json-1.1.3/ext/json/ext/generator/unicode.h +0 -53
  79. data/vendor/gems/gems/json-1.1.3/ext/json/ext/generator/unicode.o +0 -0
  80. data/vendor/gems/gems/json-1.1.3/ext/json/ext/parser.bundle +0 -0
  81. data/vendor/gems/gems/json-1.1.3/ext/json/ext/parser/Makefile +0 -150
  82. data/vendor/gems/gems/json-1.1.3/ext/json/ext/parser/extconf.rb +0 -9
  83. data/vendor/gems/gems/json-1.1.3/ext/json/ext/parser/parser.bundle +0 -0
  84. data/vendor/gems/gems/json-1.1.3/ext/json/ext/parser/parser.c +0 -1758
  85. data/vendor/gems/gems/json-1.1.3/ext/json/ext/parser/parser.o +0 -0
  86. data/vendor/gems/gems/json-1.1.3/ext/json/ext/parser/parser.rl +0 -638
  87. data/vendor/gems/gems/json-1.1.3/ext/json/ext/parser/unicode.c +0 -154
  88. data/vendor/gems/gems/json-1.1.3/ext/json/ext/parser/unicode.h +0 -58
  89. data/vendor/gems/gems/json-1.1.3/ext/json/ext/parser/unicode.o +0 -0
  90. data/vendor/gems/gems/json-1.1.3/install.rb +0 -26
  91. data/vendor/gems/gems/json-1.1.3/lib/json.rb +0 -235
  92. data/vendor/gems/gems/json-1.1.3/lib/json/Array.xpm +0 -21
  93. data/vendor/gems/gems/json-1.1.3/lib/json/FalseClass.xpm +0 -21
  94. data/vendor/gems/gems/json-1.1.3/lib/json/Hash.xpm +0 -21
  95. data/vendor/gems/gems/json-1.1.3/lib/json/Key.xpm +0 -73
  96. data/vendor/gems/gems/json-1.1.3/lib/json/NilClass.xpm +0 -21
  97. data/vendor/gems/gems/json-1.1.3/lib/json/Numeric.xpm +0 -28
  98. data/vendor/gems/gems/json-1.1.3/lib/json/String.xpm +0 -96
  99. data/vendor/gems/gems/json-1.1.3/lib/json/TrueClass.xpm +0 -21
  100. data/vendor/gems/gems/json-1.1.3/lib/json/add/core.rb +0 -135
  101. data/vendor/gems/gems/json-1.1.3/lib/json/add/rails.rb +0 -58
  102. data/vendor/gems/gems/json-1.1.3/lib/json/common.rb +0 -354
  103. data/vendor/gems/gems/json-1.1.3/lib/json/editor.rb +0 -1362
  104. data/vendor/gems/gems/json-1.1.3/lib/json/ext.rb +0 -13
  105. data/vendor/gems/gems/json-1.1.3/lib/json/json.xpm +0 -1499
  106. data/vendor/gems/gems/json-1.1.3/lib/json/pure.rb +0 -75
  107. data/vendor/gems/gems/json-1.1.3/lib/json/pure/generator.rb +0 -394
  108. data/vendor/gems/gems/json-1.1.3/lib/json/pure/parser.rb +0 -259
  109. data/vendor/gems/gems/json-1.1.3/lib/json/version.rb +0 -9
  110. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail1.json +0 -1
  111. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail10.json +0 -1
  112. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail11.json +0 -1
  113. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail12.json +0 -1
  114. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail13.json +0 -1
  115. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail14.json +0 -1
  116. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail18.json +0 -1
  117. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail19.json +0 -1
  118. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail2.json +0 -1
  119. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail20.json +0 -1
  120. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail21.json +0 -1
  121. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail22.json +0 -1
  122. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail23.json +0 -1
  123. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail24.json +0 -1
  124. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail25.json +0 -1
  125. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail27.json +0 -2
  126. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail28.json +0 -2
  127. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail3.json +0 -1
  128. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail4.json +0 -1
  129. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail5.json +0 -1
  130. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail6.json +0 -1
  131. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail7.json +0 -1
  132. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail8.json +0 -1
  133. data/vendor/gems/gems/json-1.1.3/tests/fixtures/fail9.json +0 -1
  134. data/vendor/gems/gems/json-1.1.3/tests/fixtures/pass1.json +0 -56
  135. data/vendor/gems/gems/json-1.1.3/tests/fixtures/pass15.json +0 -1
  136. data/vendor/gems/gems/json-1.1.3/tests/fixtures/pass16.json +0 -1
  137. data/vendor/gems/gems/json-1.1.3/tests/fixtures/pass17.json +0 -1
  138. data/vendor/gems/gems/json-1.1.3/tests/fixtures/pass2.json +0 -1
  139. data/vendor/gems/gems/json-1.1.3/tests/fixtures/pass26.json +0 -1
  140. data/vendor/gems/gems/json-1.1.3/tests/fixtures/pass3.json +0 -6
  141. data/vendor/gems/gems/json-1.1.3/tests/runner.rb +0 -25
  142. data/vendor/gems/gems/json-1.1.3/tests/test_json.rb +0 -293
  143. data/vendor/gems/gems/json-1.1.3/tests/test_json_addition.rb +0 -161
  144. data/vendor/gems/gems/json-1.1.3/tests/test_json_fixtures.rb +0 -30
  145. data/vendor/gems/gems/json-1.1.3/tests/test_json_generate.rb +0 -100
  146. data/vendor/gems/gems/json-1.1.3/tests/test_json_rails.rb +0 -118
  147. data/vendor/gems/gems/json-1.1.3/tests/test_json_unicode.rb +0 -61
  148. data/vendor/gems/gems/json-1.1.3/tools/fuzz.rb +0 -140
  149. data/vendor/gems/gems/json-1.1.3/tools/server.rb +0 -62
  150. data/vendor/gems/gems/rest-client-1.0.1/README.rdoc +0 -151
  151. data/vendor/gems/gems/rest-client-1.0.1/Rakefile +0 -85
  152. data/vendor/gems/gems/rest-client-1.0.1/bin/restclient +0 -87
  153. data/vendor/gems/gems/rest-client-1.0.1/lib/rest_client.rb +0 -2
  154. data/vendor/gems/gems/rest-client-1.0.1/lib/restclient.rb +0 -93
  155. data/vendor/gems/gems/rest-client-1.0.1/lib/restclient/exceptions.rb +0 -84
  156. data/vendor/gems/gems/rest-client-1.0.1/lib/restclient/mixin/response.rb +0 -43
  157. data/vendor/gems/gems/rest-client-1.0.1/lib/restclient/raw_response.rb +0 -30
  158. data/vendor/gems/gems/rest-client-1.0.1/lib/restclient/request.rb +0 -236
  159. data/vendor/gems/gems/rest-client-1.0.1/lib/restclient/resource.rb +0 -146
  160. data/vendor/gems/gems/rest-client-1.0.1/lib/restclient/response.rb +0 -20
  161. data/vendor/gems/gems/rest-client-1.0.1/spec/base.rb +0 -4
  162. data/vendor/gems/gems/rest-client-1.0.1/spec/exceptions_spec.rb +0 -54
  163. data/vendor/gems/gems/rest-client-1.0.1/spec/mixin/response_spec.rb +0 -46
  164. data/vendor/gems/gems/rest-client-1.0.1/spec/raw_response_spec.rb +0 -17
  165. data/vendor/gems/gems/rest-client-1.0.1/spec/request_spec.rb +0 -462
  166. data/vendor/gems/gems/rest-client-1.0.1/spec/resource_spec.rb +0 -75
  167. data/vendor/gems/gems/rest-client-1.0.1/spec/response_spec.rb +0 -16
  168. data/vendor/gems/gems/rest-client-1.0.1/spec/restclient_spec.rb +0 -53
  169. data/vendor/gems/gems/simple-rss-1.2/LICENSE +0 -429
  170. data/vendor/gems/gems/simple-rss-1.2/README +0 -43
  171. data/vendor/gems/gems/simple-rss-1.2/Rakefile +0 -212
  172. data/vendor/gems/gems/simple-rss-1.2/lib/simple-rss.rb +0 -149
  173. data/vendor/gems/gems/simple-rss-1.2/test/base/base_test.rb +0 -51
  174. data/vendor/gems/gems/simple-rss-1.2/test/data/atom.xml +0 -45
  175. data/vendor/gems/gems/simple-rss-1.2/test/data/not-rss.xml +0 -8
  176. data/vendor/gems/gems/simple-rss-1.2/test/data/rss09.rdf +0 -79
  177. data/vendor/gems/gems/simple-rss-1.2/test/data/rss20.xml +0 -818
  178. data/vendor/gems/gems/simple-rss-1.2/test/test_helper.rb +0 -4
  179. data/vendor/gems/gems/wycats-moneta-0.6.0/LICENSE +0 -20
  180. data/vendor/gems/gems/wycats-moneta-0.6.0/README +0 -50
  181. data/vendor/gems/gems/wycats-moneta-0.6.0/Rakefile +0 -60
  182. data/vendor/gems/gems/wycats-moneta-0.6.0/TODO +0 -4
  183. data/vendor/gems/gems/wycats-moneta-0.6.0/lib/moneta.rb +0 -76
  184. data/vendor/gems/gems/wycats-moneta-0.6.0/lib/moneta/datamapper.rb +0 -117
  185. data/vendor/gems/gems/wycats-moneta-0.6.0/lib/moneta/file.rb +0 -91
  186. data/vendor/gems/gems/wycats-moneta-0.6.0/lib/moneta/memcache.rb +0 -52
  187. data/vendor/gems/gems/wycats-moneta-0.6.0/lib/moneta/memory.rb +0 -11
  188. data/vendor/gems/gems/wycats-moneta-0.6.0/lib/moneta/xattr.rb +0 -58
  189. data/vendor/gems/specifications/crack-0.1.1.gemspec +0 -29
  190. data/vendor/gems/specifications/fakeweb-1.2.5.gemspec +0 -34
  191. data/vendor/gems/specifications/json-1.1.3.gemspec +0 -33
  192. data/vendor/gems/specifications/rest-client-1.0.1.gemspec +0 -30
  193. data/vendor/gems/specifications/simple-rss-1.2.gemspec +0 -27
  194. data/vendor/gems/specifications/wycats-moneta-0.6.0.gemspec +0 -29
@@ -1,293 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'test/unit'
4
- require 'json'
5
- require 'stringio'
6
-
7
- class TC_JSON < Test::Unit::TestCase
8
- include JSON
9
-
10
- def setup
11
- $KCODE = 'UTF8'
12
- @ary = [1, "foo", 3.14, 4711.0, 2.718, nil, [1,-2,3], false, true].map do
13
- |x| [x]
14
- end
15
- @ary_to_parse = ["1", '"foo"', "3.14", "4711.0", "2.718", "null",
16
- "[1,-2,3]", "false", "true"].map do
17
- |x| "[#{x}]"
18
- end
19
- @hash = {
20
- 'a' => 2,
21
- 'b' => 3.141,
22
- 'c' => 'c',
23
- 'd' => [ 1, "b", 3.14 ],
24
- 'e' => { 'foo' => 'bar' },
25
- 'g' => "\"\0\037",
26
- 'h' => 1000.0,
27
- 'i' => 0.001
28
- }
29
- @json = '{"a":2,"b":3.141,"c":"c","d":[1,"b",3.14],"e":{"foo":"bar"},' +
30
- '"g":"\\"\\u0000\\u001f","h":1.0E3,"i":1.0E-3}'
31
- end
32
- suite << TC_JSON.suite
33
-
34
- def test_construction
35
- parser = JSON::Parser.new('test')
36
- assert_equal 'test', parser.source
37
- end
38
-
39
- def assert_equal_float(expected, is)
40
- assert_in_delta(expected.first, is.first, 1e-2)
41
- end
42
-
43
- def test_parse_simple_arrays
44
- assert_equal([], parse('[]'))
45
- assert_equal([], parse(' [ ] '))
46
- assert_equal([nil], parse('[null]'))
47
- assert_equal([false], parse('[false]'))
48
- assert_equal([true], parse('[true]'))
49
- assert_equal([-23], parse('[-23]'))
50
- assert_equal([23], parse('[23]'))
51
- assert_equal([0.23], parse('[0.23]'))
52
- assert_equal([0.0], parse('[0e0]'))
53
- assert_raises(JSON::ParserError) { parse('[+23.2]') }
54
- assert_raises(JSON::ParserError) { parse('[+23]') }
55
- assert_raises(JSON::ParserError) { parse('[.23]') }
56
- assert_raises(JSON::ParserError) { parse('[023]') }
57
- assert_equal_float [3.141], parse('[3.141]')
58
- assert_equal_float [-3.141], parse('[-3.141]')
59
- assert_equal_float [3.141], parse('[3141e-3]')
60
- assert_equal_float [3.141], parse('[3141.1e-3]')
61
- assert_equal_float [3.141], parse('[3141E-3]')
62
- assert_equal_float [3.141], parse('[3141.0E-3]')
63
- assert_equal_float [-3.141], parse('[-3141.0e-3]')
64
- assert_equal_float [-3.141], parse('[-3141e-3]')
65
- assert_raises(ParserError) { parse('[NaN]') }
66
- assert parse('[NaN]', :allow_nan => true).first.nan?
67
- assert_raises(ParserError) { parse('[Infinity]') }
68
- assert_equal [1.0/0], parse('[Infinity]', :allow_nan => true)
69
- assert_raises(ParserError) { parse('[-Infinity]') }
70
- assert_equal [-1.0/0], parse('[-Infinity]', :allow_nan => true)
71
- assert_equal([""], parse('[""]'))
72
- assert_equal(["foobar"], parse('["foobar"]'))
73
- assert_equal([{}], parse('[{}]'))
74
- end
75
-
76
- def test_parse_simple_objects
77
- assert_equal({}, parse('{}'))
78
- assert_equal({}, parse(' { } '))
79
- assert_equal({ "a" => nil }, parse('{ "a" : null}'))
80
- assert_equal({ "a" => nil }, parse('{"a":null}'))
81
- assert_equal({ "a" => false }, parse('{ "a" : false } '))
82
- assert_equal({ "a" => false }, parse('{"a":false}'))
83
- assert_raises(JSON::ParserError) { parse('{false}') }
84
- assert_equal({ "a" => true }, parse('{"a":true}'))
85
- assert_equal({ "a" => true }, parse(' { "a" : true } '))
86
- assert_equal({ "a" => -23 }, parse(' { "a" : -23 } '))
87
- assert_equal({ "a" => -23 }, parse(' { "a" : -23 } '))
88
- assert_equal({ "a" => 23 }, parse('{"a":23 } '))
89
- assert_equal({ "a" => 23 }, parse(' { "a" : 23 } '))
90
- assert_equal({ "a" => 0.23 }, parse(' { "a" : 0.23 } '))
91
- assert_equal({ "a" => 0.23 }, parse(' { "a" : 0.23 } '))
92
- end
93
-
94
- begin
95
- require 'permutation'
96
- def test_parse_more_complex_arrays
97
- a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "n€ßt€ð2" => {} }]
98
- perms = Permutation.for a
99
- perms.each do |perm|
100
- orig_ary = perm.project
101
- json = pretty_generate(orig_ary)
102
- assert_equal orig_ary, parse(json)
103
- end
104
- end
105
-
106
- def test_parse_complex_objects
107
- a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "n€ßt€ð2" => {} }]
108
- perms = Permutation.for a
109
- perms.each do |perm|
110
- s = "a"
111
- orig_obj = perm.project.inject({}) { |h, x| h[s.dup] = x; s = s.succ; h }
112
- json = pretty_generate(orig_obj)
113
- assert_equal orig_obj, parse(json)
114
- end
115
- end
116
- rescue LoadError
117
- warn "Skipping permutation tests."
118
- end
119
-
120
- def test_parse_arrays
121
- assert_equal([1,2,3], parse('[1,2,3]'))
122
- assert_equal([1.2,2,3], parse('[1.2,2,3]'))
123
- assert_equal([[],[[],[]]], parse('[[],[[],[]]]'))
124
- end
125
-
126
- def test_parse_values
127
- assert_equal([""], parse('[""]'))
128
- assert_equal(["\\"], parse('["\\\\"]'))
129
- assert_equal(['"'], parse('["\""]'))
130
- assert_equal(['\\"\\'], parse('["\\\\\\"\\\\"]'))
131
- assert_equal(["\"\b\n\r\t\0\037"],
132
- parse('["\"\b\n\r\t\u0000\u001f"]'))
133
- for i in 0 ... @ary.size
134
- assert_equal(@ary[i], parse(@ary_to_parse[i]))
135
- end
136
- end
137
-
138
- def test_parse_array
139
- assert_equal([], parse('[]'))
140
- assert_equal([], parse(' [ ] '))
141
- assert_equal([1], parse('[1]'))
142
- assert_equal([1], parse(' [ 1 ] '))
143
- assert_equal(@ary,
144
- parse('[[1],["foo"],[3.14],[47.11e+2],[2718.0E-3],[null],[[1,-2,3]]'\
145
- ',[false],[true]]'))
146
- assert_equal(@ary, parse(%Q{ [ [1] , ["foo"] , [3.14] \t , [47.11e+2]
147
- , [2718.0E-3 ],\r[ null] , [[1, -2, 3 ]], [false ],[ true]\n ] }))
148
- end
149
-
150
- def test_parse_object
151
- assert_equal({}, parse('{}'))
152
- assert_equal({}, parse(' { } '))
153
- assert_equal({'foo'=>'bar'}, parse('{"foo":"bar"}'))
154
- assert_equal({'foo'=>'bar'}, parse(' { "foo" : "bar" } '))
155
- end
156
-
157
- def test_parser_reset
158
- parser = Parser.new(@json)
159
- assert_equal(@hash, parser.parse)
160
- assert_equal(@hash, parser.parse)
161
- end
162
-
163
- def test_comments
164
- json = <<EOT
165
- {
166
- "key1":"value1", // eol comment
167
- "key2":"value2" /* multi line
168
- * comment */,
169
- "key3":"value3" /* multi line
170
- // nested eol comment
171
- * comment */
172
- }
173
- EOT
174
- assert_equal(
175
- { "key1" => "value1", "key2" => "value2", "key3" => "value3" },
176
- parse(json))
177
- json = <<EOT
178
- {
179
- "key1":"value1" /* multi line
180
- // nested eol comment
181
- /* illegal nested multi line comment */
182
- * comment */
183
- }
184
- EOT
185
- assert_raises(ParserError) { parse(json) }
186
- json = <<EOT
187
- {
188
- "key1":"value1" /* multi line
189
- // nested eol comment
190
- closed multi comment */
191
- and again, throw an Error */
192
- }
193
- EOT
194
- assert_raises(ParserError) { parse(json) }
195
- json = <<EOT
196
- {
197
- "key1":"value1" /*/*/
198
- }
199
- EOT
200
- assert_equal({ "key1" => "value1" }, parse(json))
201
- end
202
-
203
- def test_backslash
204
- data = [ '\\.(?i:gif|jpe?g|png)$' ]
205
- json = '["\\\\.(?i:gif|jpe?g|png)$"]'
206
- assert_equal json, JSON.unparse(data)
207
- assert_equal data, JSON.parse(json)
208
- #
209
- data = [ '\\"' ]
210
- json = '["\\\\\""]'
211
- assert_equal json, JSON.unparse(data)
212
- assert_equal data, JSON.parse(json)
213
- #
214
- json = '["\/"]'
215
- data = JSON.parse(json)
216
- assert_equal ['/'], data
217
- assert_equal json, JSON.unparse(data)
218
- #
219
- json = '["\""]'
220
- data = JSON.parse(json)
221
- assert_equal ['"'], data
222
- assert_equal json, JSON.unparse(data)
223
- json = '["\\\'"]'
224
- data = JSON.parse(json)
225
- assert_equal ["'"], data
226
- assert_equal '["\'"]', JSON.unparse(data)
227
- end
228
-
229
- def test_wrong_inputs
230
- assert_raises(ParserError) { JSON.parse('"foo"') }
231
- assert_raises(ParserError) { JSON.parse('123') }
232
- assert_raises(ParserError) { JSON.parse('[] bla') }
233
- assert_raises(ParserError) { JSON.parse('[] 1') }
234
- assert_raises(ParserError) { JSON.parse('[] []') }
235
- assert_raises(ParserError) { JSON.parse('[] {}') }
236
- assert_raises(ParserError) { JSON.parse('{} []') }
237
- assert_raises(ParserError) { JSON.parse('{} {}') }
238
- assert_raises(ParserError) { JSON.parse('[NULL]') }
239
- assert_raises(ParserError) { JSON.parse('[FALSE]') }
240
- assert_raises(ParserError) { JSON.parse('[TRUE]') }
241
- assert_raises(ParserError) { JSON.parse('[07] ') }
242
- assert_raises(ParserError) { JSON.parse('[0a]') }
243
- assert_raises(ParserError) { JSON.parse('[1.]') }
244
- assert_raises(ParserError) { JSON.parse(' ') }
245
- end
246
-
247
- def test_nesting
248
- assert_raises(JSON::NestingError) { JSON.parse '[[]]', :max_nesting => 1 }
249
- assert_raises(JSON::NestingError) { JSON.parser.new('[[]]', :max_nesting => 1).parse }
250
- assert_equal [[]], JSON.parse('[[]]', :max_nesting => 2)
251
- too_deep = '[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]'
252
- too_deep_ary = eval too_deep
253
- assert_raises(JSON::NestingError) { JSON.parse too_deep }
254
- assert_raises(JSON::NestingError) { JSON.parser.new(too_deep).parse }
255
- assert_raises(JSON::NestingError) { JSON.parse too_deep, :max_nesting => 19 }
256
- ok = JSON.parse too_deep, :max_nesting => 20
257
- assert_equal too_deep_ary, ok
258
- ok = JSON.parse too_deep, :max_nesting => nil
259
- assert_equal too_deep_ary, ok
260
- ok = JSON.parse too_deep, :max_nesting => false
261
- assert_equal too_deep_ary, ok
262
- ok = JSON.parse too_deep, :max_nesting => 0
263
- assert_equal too_deep_ary, ok
264
- assert_raises(JSON::NestingError) { JSON.generate [[]], :max_nesting => 1 }
265
- assert_equal '[[]]', JSON.generate([[]], :max_nesting => 2)
266
- assert_raises(JSON::NestingError) { JSON.generate too_deep_ary }
267
- assert_raises(JSON::NestingError) { JSON.generate too_deep_ary, :max_nesting => 19 }
268
- ok = JSON.generate too_deep_ary, :max_nesting => 20
269
- assert_equal too_deep, ok
270
- ok = JSON.generate too_deep_ary, :max_nesting => nil
271
- assert_equal too_deep, ok
272
- ok = JSON.generate too_deep_ary, :max_nesting => false
273
- assert_equal too_deep, ok
274
- ok = JSON.generate too_deep_ary, :max_nesting => 0
275
- assert_equal too_deep, ok
276
- end
277
-
278
- def test_load_dump
279
- too_deep = '[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]'
280
- assert_equal too_deep, JSON.dump(eval(too_deep))
281
- assert_kind_of String, Marshal.dump(eval(too_deep))
282
- assert_raises(ArgumentError) { JSON.dump(eval(too_deep), 19) }
283
- assert_raises(ArgumentError) { Marshal.dump(eval(too_deep), 19) }
284
- assert_equal too_deep, JSON.dump(eval(too_deep), 20)
285
- assert_kind_of String, Marshal.dump(eval(too_deep), 20)
286
- output = StringIO.new
287
- JSON.dump(eval(too_deep), output)
288
- assert_equal too_deep, output.string
289
- output = StringIO.new
290
- JSON.dump(eval(too_deep), output, 20)
291
- assert_equal too_deep, output.string
292
- end
293
- end
@@ -1,161 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'test/unit'
4
- require 'json/add/core'
5
- require 'date'
6
-
7
- class TC_JSONAddition < Test::Unit::TestCase
8
- include JSON
9
-
10
- class A
11
- def initialize(a)
12
- @a = a
13
- end
14
-
15
- attr_reader :a
16
-
17
- def ==(other)
18
- a == other.a
19
- end
20
-
21
- def self.json_create(object)
22
- new(*object['args'])
23
- end
24
-
25
- def to_json(*args)
26
- {
27
- 'json_class' => self.class.name,
28
- 'args' => [ @a ],
29
- }.to_json(*args)
30
- end
31
- end
32
-
33
- class B
34
- def self.json_creatable?
35
- false
36
- end
37
-
38
- def to_json(*args)
39
- {
40
- 'json_class' => self.class.name,
41
- }.to_json(*args)
42
- end
43
- end
44
-
45
- class C
46
- def self.json_creatable?
47
- false
48
- end
49
-
50
- def to_json(*args)
51
- {
52
- 'json_class' => 'TC_JSONAddition::Nix',
53
- }.to_json(*args)
54
- end
55
- end
56
-
57
- def setup
58
- $KCODE = 'UTF8'
59
- end
60
-
61
- def test_extended_json
62
- a = A.new(666)
63
- assert A.json_creatable?
64
- json = generate(a)
65
- a_again = JSON.parse(json)
66
- assert_kind_of a.class, a_again
67
- assert_equal a, a_again
68
- end
69
-
70
- def test_extended_json_disabled
71
- a = A.new(666)
72
- assert A.json_creatable?
73
- json = generate(a)
74
- a_again = JSON.parse(json, :create_additions => true)
75
- assert_kind_of a.class, a_again
76
- assert_equal a, a_again
77
- a_hash = JSON.parse(json, :create_additions => false)
78
- assert_kind_of Hash, a_hash
79
- assert_equal(
80
- {"args"=>[666], "json_class"=>"TC_JSONAddition::A"}.sort_by { |k,| k },
81
- a_hash.sort_by { |k,| k }
82
- )
83
- end
84
-
85
- def test_extended_json_fail1
86
- b = B.new
87
- assert !B.json_creatable?
88
- json = generate(b)
89
- assert_equal({ "json_class"=>"TC_JSONAddition::B" }, JSON.parse(json))
90
- end
91
-
92
- def test_extended_json_fail2
93
- c = C.new
94
- assert !C.json_creatable?
95
- json = generate(c)
96
- assert_raises(ArgumentError) { JSON.parse(json) }
97
- end
98
-
99
- def test_raw_strings
100
- raw = ''
101
- raw_array = []
102
- for i in 0..255
103
- raw << i
104
- raw_array << i
105
- end
106
- json = raw.to_json_raw
107
- json_raw_object = raw.to_json_raw_object
108
- hash = { 'json_class' => 'String', 'raw'=> raw_array }
109
- assert_equal hash, json_raw_object
110
- json_raw = <<EOT.chomp
111
- {\"json_class\":\"String\",\"raw\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]}
112
- EOT
113
- # "
114
- assert_equal json_raw, json
115
- raw_again = JSON.parse(json)
116
- assert_equal raw, raw_again
117
- end
118
-
119
- MyJsonStruct = Struct.new 'MyJsonStruct', :foo, :bar
120
-
121
- def test_core
122
- t = Time.now
123
- assert_equal t, JSON(JSON(t))
124
- d = Date.today
125
- assert_equal d, JSON(JSON(d))
126
- d = DateTime.civil(2007, 6, 14, 14, 57, 10, Rational(1, 12), 2299161)
127
- assert_equal d, JSON(JSON(d))
128
- assert_equal 1..10, JSON(JSON(1..10))
129
- assert_equal 1...10, JSON(JSON(1...10))
130
- assert_equal "a".."c", JSON(JSON("a".."c"))
131
- assert_equal "a"..."c", JSON(JSON("a"..."c"))
132
- s = MyJsonStruct.new 4711, 'foot'
133
- assert_equal s, JSON(JSON(s))
134
- struct = Struct.new :foo, :bar
135
- s = struct.new 4711, 'foot'
136
- assert_raises(JSONError) { JSON(s) }
137
- begin
138
- raise TypeError, "test me"
139
- rescue TypeError => e
140
- e_json = JSON.generate e
141
- e_again = JSON e_json
142
- assert_kind_of TypeError, e_again
143
- assert_equal e.message, e_again.message
144
- assert_equal e.backtrace, e_again.backtrace
145
- end
146
- assert_equal(/foo/, JSON(JSON(/foo/)))
147
- assert_equal(/foo/i, JSON(JSON(/foo/i)))
148
- end
149
-
150
- def test_utc_datetime
151
- now = Time.now
152
- d = DateTime.parse(now.to_s) # usual case
153
- assert d, JSON.parse(d.to_json)
154
- d = DateTime.parse(now.utc.to_s) # of = 0
155
- assert d, JSON.parse(d.to_json)
156
- d = DateTime.civil(2008, 6, 17, 11, 48, 32, 1) # of = 1 / 12 => 1/12
157
- assert d, JSON.parse(d.to_json)
158
- d = DateTime.civil(2008, 6, 17, 11, 48, 32, 12) # of = 12 / 12 => 12
159
- assert d, JSON.parse(d.to_json)
160
- end
161
- end