oj 3.13.23 → 3.16.10

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 (178) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +86 -0
  3. data/README.md +2 -2
  4. data/ext/oj/buf.h +7 -6
  5. data/ext/oj/cache.c +29 -26
  6. data/ext/oj/cache.h +3 -2
  7. data/ext/oj/cache8.c +10 -9
  8. data/ext/oj/circarray.c +7 -5
  9. data/ext/oj/circarray.h +2 -2
  10. data/ext/oj/code.c +5 -12
  11. data/ext/oj/code.h +2 -2
  12. data/ext/oj/compat.c +20 -60
  13. data/ext/oj/custom.c +26 -59
  14. data/ext/oj/debug.c +3 -9
  15. data/ext/oj/dump.c +103 -53
  16. data/ext/oj/dump.h +1 -4
  17. data/ext/oj/dump_compat.c +557 -592
  18. data/ext/oj/dump_leaf.c +3 -5
  19. data/ext/oj/dump_object.c +42 -48
  20. data/ext/oj/dump_strict.c +10 -22
  21. data/ext/oj/encoder.c +1 -1
  22. data/ext/oj/err.c +2 -13
  23. data/ext/oj/err.h +9 -12
  24. data/ext/oj/extconf.rb +16 -7
  25. data/ext/oj/fast.c +63 -98
  26. data/ext/oj/intern.c +62 -47
  27. data/ext/oj/intern.h +3 -7
  28. data/ext/oj/mem.c +318 -0
  29. data/ext/oj/mem.h +53 -0
  30. data/ext/oj/mimic_json.c +54 -38
  31. data/ext/oj/object.c +33 -43
  32. data/ext/oj/odd.c +8 -6
  33. data/ext/oj/odd.h +4 -4
  34. data/ext/oj/oj.c +245 -216
  35. data/ext/oj/oj.h +83 -81
  36. data/ext/oj/parse.c +109 -153
  37. data/ext/oj/parse.h +21 -24
  38. data/ext/oj/parser.c +80 -67
  39. data/ext/oj/parser.h +9 -8
  40. data/ext/oj/rails.c +71 -94
  41. data/ext/oj/reader.c +9 -14
  42. data/ext/oj/reader.h +4 -2
  43. data/ext/oj/resolve.c +3 -4
  44. data/ext/oj/rxclass.c +6 -5
  45. data/ext/oj/rxclass.h +1 -1
  46. data/ext/oj/saj.c +13 -15
  47. data/ext/oj/saj2.c +37 -49
  48. data/ext/oj/saj2.h +1 -1
  49. data/ext/oj/scp.c +6 -20
  50. data/ext/oj/sparse.c +22 -70
  51. data/ext/oj/stream_writer.c +46 -48
  52. data/ext/oj/strict.c +22 -56
  53. data/ext/oj/string_writer.c +64 -40
  54. data/ext/oj/trace.h +31 -4
  55. data/ext/oj/usual.c +125 -114
  56. data/ext/oj/usual.h +7 -6
  57. data/ext/oj/util.h +1 -1
  58. data/ext/oj/val_stack.c +13 -2
  59. data/ext/oj/val_stack.h +8 -7
  60. data/ext/oj/wab.c +25 -57
  61. data/lib/oj/active_support_helper.rb +1 -3
  62. data/lib/oj/bag.rb +7 -1
  63. data/lib/oj/easy_hash.rb +4 -5
  64. data/lib/oj/error.rb +0 -1
  65. data/lib/oj/json.rb +162 -150
  66. data/lib/oj/mimic.rb +7 -7
  67. data/lib/oj/schandler.rb +5 -4
  68. data/lib/oj/state.rb +8 -5
  69. data/lib/oj/version.rb +1 -2
  70. data/lib/oj.rb +2 -0
  71. data/pages/InstallOptions.md +20 -0
  72. data/pages/Options.md +4 -0
  73. metadata +46 -121
  74. data/test/_test_active.rb +0 -76
  75. data/test/_test_active_mimic.rb +0 -96
  76. data/test/_test_mimic_rails.rb +0 -126
  77. data/test/activerecord/result_test.rb +0 -32
  78. data/test/activesupport4/decoding_test.rb +0 -108
  79. data/test/activesupport4/encoding_test.rb +0 -531
  80. data/test/activesupport4/test_helper.rb +0 -41
  81. data/test/activesupport5/abstract_unit.rb +0 -45
  82. data/test/activesupport5/decoding_test.rb +0 -133
  83. data/test/activesupport5/encoding_test.rb +0 -500
  84. data/test/activesupport5/encoding_test_cases.rb +0 -98
  85. data/test/activesupport5/test_helper.rb +0 -72
  86. data/test/activesupport5/time_zone_test_helpers.rb +0 -39
  87. data/test/activesupport6/abstract_unit.rb +0 -44
  88. data/test/activesupport6/decoding_test.rb +0 -133
  89. data/test/activesupport6/encoding_test.rb +0 -507
  90. data/test/activesupport6/encoding_test_cases.rb +0 -98
  91. data/test/activesupport6/test_common.rb +0 -17
  92. data/test/activesupport6/test_helper.rb +0 -163
  93. data/test/activesupport6/time_zone_test_helpers.rb +0 -39
  94. data/test/activesupport7/abstract_unit.rb +0 -49
  95. data/test/activesupport7/decoding_test.rb +0 -125
  96. data/test/activesupport7/encoding_test.rb +0 -486
  97. data/test/activesupport7/encoding_test_cases.rb +0 -104
  98. data/test/activesupport7/time_zone_test_helpers.rb +0 -47
  99. data/test/bar.rb +0 -11
  100. data/test/baz.rb +0 -16
  101. data/test/bug.rb +0 -16
  102. data/test/files.rb +0 -29
  103. data/test/foo.rb +0 -77
  104. data/test/helper.rb +0 -42
  105. data/test/isolated/shared.rb +0 -308
  106. data/test/isolated/test_mimic_after.rb +0 -13
  107. data/test/isolated/test_mimic_alone.rb +0 -12
  108. data/test/isolated/test_mimic_as_json.rb +0 -45
  109. data/test/isolated/test_mimic_before.rb +0 -13
  110. data/test/isolated/test_mimic_define.rb +0 -28
  111. data/test/isolated/test_mimic_rails_after.rb +0 -22
  112. data/test/isolated/test_mimic_rails_before.rb +0 -21
  113. data/test/isolated/test_mimic_redefine.rb +0 -15
  114. data/test/json_gem/json_addition_test.rb +0 -216
  115. data/test/json_gem/json_common_interface_test.rb +0 -153
  116. data/test/json_gem/json_encoding_test.rb +0 -107
  117. data/test/json_gem/json_ext_parser_test.rb +0 -20
  118. data/test/json_gem/json_fixtures_test.rb +0 -35
  119. data/test/json_gem/json_generator_test.rb +0 -396
  120. data/test/json_gem/json_generic_object_test.rb +0 -90
  121. data/test/json_gem/json_parser_test.rb +0 -477
  122. data/test/json_gem/json_string_matching_test.rb +0 -42
  123. data/test/json_gem/test_helper.rb +0 -30
  124. data/test/mem.rb +0 -33
  125. data/test/perf.rb +0 -107
  126. data/test/perf_compat.rb +0 -130
  127. data/test/perf_dump.rb +0 -50
  128. data/test/perf_fast.rb +0 -164
  129. data/test/perf_file.rb +0 -64
  130. data/test/perf_object.rb +0 -138
  131. data/test/perf_once.rb +0 -58
  132. data/test/perf_parser.rb +0 -189
  133. data/test/perf_saj.rb +0 -109
  134. data/test/perf_scp.rb +0 -152
  135. data/test/perf_simple.rb +0 -287
  136. data/test/perf_strict.rb +0 -139
  137. data/test/perf_wab.rb +0 -131
  138. data/test/prec.rb +0 -23
  139. data/test/sample/change.rb +0 -14
  140. data/test/sample/dir.rb +0 -19
  141. data/test/sample/doc.rb +0 -36
  142. data/test/sample/file.rb +0 -48
  143. data/test/sample/group.rb +0 -16
  144. data/test/sample/hasprops.rb +0 -16
  145. data/test/sample/layer.rb +0 -12
  146. data/test/sample/line.rb +0 -20
  147. data/test/sample/oval.rb +0 -10
  148. data/test/sample/rect.rb +0 -10
  149. data/test/sample/shape.rb +0 -35
  150. data/test/sample/text.rb +0 -20
  151. data/test/sample.rb +0 -54
  152. data/test/sample_json.rb +0 -37
  153. data/test/test_compat.rb +0 -540
  154. data/test/test_custom.rb +0 -544
  155. data/test/test_debian.rb +0 -53
  156. data/test/test_fast.rb +0 -530
  157. data/test/test_file.rb +0 -255
  158. data/test/test_gc.rb +0 -60
  159. data/test/test_generate.rb +0 -21
  160. data/test/test_hash.rb +0 -39
  161. data/test/test_integer_range.rb +0 -72
  162. data/test/test_null.rb +0 -376
  163. data/test/test_object.rb +0 -1025
  164. data/test/test_parser.rb +0 -11
  165. data/test/test_parser_debug.rb +0 -27
  166. data/test/test_parser_saj.rb +0 -335
  167. data/test/test_parser_usual.rb +0 -217
  168. data/test/test_rails.rb +0 -35
  169. data/test/test_saj.rb +0 -186
  170. data/test/test_scp.rb +0 -431
  171. data/test/test_strict.rb +0 -435
  172. data/test/test_various.rb +0 -752
  173. data/test/test_wab.rb +0 -309
  174. data/test/test_writer.rb +0 -380
  175. data/test/tests.rb +0 -33
  176. data/test/tests_mimic.rb +0 -23
  177. data/test/tests_mimic_addition.rb +0 -16
  178. data/test/zoo.rb +0 -13
data/test/files.rb DELETED
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env ruby -wW2
2
-
3
- if $0 == __FILE__
4
- $: << '.'
5
- $: << '..'
6
- $: << '../lib'
7
- $: << '../ext'
8
- end
9
-
10
- require 'pp'
11
- require 'sample/file'
12
- require 'sample/dir'
13
-
14
- def files(dir)
15
- d = ::Sample::Dir.new(dir)
16
- Dir.new(dir).each do |fn|
17
- next if fn.start_with?('.')
18
- filename = File.join(dir, fn)
19
- #filename = '.' == dir ? fn : File.join(dir, fn)
20
- if File.directory?(filename)
21
- d << files(filename)
22
- else
23
- d << ::Sample::File.new(filename)
24
- end
25
- end
26
- #pp d
27
- d
28
- end
29
-
data/test/foo.rb DELETED
@@ -1,77 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- $: << '.'
4
- $: << File.join(File.dirname(__FILE__), "../lib")
5
- $: << File.join(File.dirname(__FILE__), "../ext")
6
-
7
- require "oj"
8
- require "socket"
9
- require 'io/nonblock'
10
-
11
- #pid = spawn("nc -d 0.1 -l 5000", out: "/dev/null")
12
- pid = spawn("nc -i 1 -l 7777", out: "/dev/null")
13
- at_exit { Process.kill 9, pid }
14
- sleep 0.2
15
- s = Socket.tcp("localhost", 7777)
16
- s.nonblock = false
17
- 1_000_000.times do |x|
18
- Oj.to_stream(s, { x: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]})
19
- end
20
-
21
- =begin
22
- IO.pipe do |r, w|
23
- if fork
24
- r.close
25
- #w.nonblock = false
26
- 1_000_000.times do |i|
27
- begin
28
- Oj.to_stream(w, { x: i})
29
- rescue IOError => e
30
- puts "*** #{i} raised #{e.class}: #{e}"
31
- IO.select(nil, [w])
32
- retry
33
- end
34
- w.puts
35
- end
36
- else
37
- w.close
38
- sleep(0.1)
39
- r.each_line { |b|
40
- #print b
41
- }
42
- r.close
43
- Process.exit(0)
44
- end
45
- end
46
- =end
47
-
48
- =begin
49
- IO.pipe do |r, w|
50
- if fork
51
- r.close
52
- #w.nonblock = false
53
- a = []
54
- 10_000.times do |i|
55
- a << i
56
- end
57
- begin
58
- Oj.to_stream(w, a, indent: 2)
59
- rescue IOError => e
60
- puts "*** raised #{e.class}: #{e}"
61
- puts "*** fileno: #{w.fileno}"
62
- puts "*** is an IO?: #{w.kind_of?(IO)}"
63
- IO.select(nil, [w])
64
- retry
65
- end
66
- w.puts
67
- else
68
- w.close
69
- sleep(0.5)
70
- r.each_line { |b|
71
- #print b
72
- }
73
- r.close
74
- Process.exit(0)
75
- end
76
- end
77
- =end
data/test/helper.rb DELETED
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
- #
3
- # Ubuntu does not accept arguments to ruby when called using env. To get warnings to show up the -w options is
4
- # required. That can be set in the RUBYOPT environment variable.
5
- # export RUBYOPT=-w
6
-
7
- $VERBOSE = true
8
-
9
- %w(lib ext test).each do |dir|
10
- $LOAD_PATH.unshift File.expand_path("../../#{dir}", __FILE__)
11
- end
12
-
13
- require 'minitest'
14
- require 'minitest/autorun'
15
- require 'stringio'
16
- require 'date'
17
- require 'bigdecimal'
18
- require 'pp'
19
- require 'oj'
20
-
21
-
22
- def verify_gc_compaction
23
- # This method was added in Ruby 3.0.0. Calling it this way asks the GC to
24
- # move objects around, helping to find object movement bugs.
25
- if defined?(GC.verify_compaction_references) == 'method' && !(RbConfig::CONFIG['host_os'] =~ /(mingw|mswin)/)
26
- if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.2.0")
27
- GC.verify_compaction_references(expand_heap: true, toward: :empty)
28
- else
29
- GC.verify_compaction_references(double_heap: true, toward: :empty)
30
- end
31
- end
32
- end
33
-
34
-
35
- $ruby = RUBY_DESCRIPTION.split(' ')[0]
36
- $ruby = 'ree' if 'ruby' == $ruby && RUBY_DESCRIPTION.include?('Ruby Enterprise Edition')
37
-
38
- class Range
39
- def to_hash()
40
- { 'begin' => self.begin, 'end' => self.end, 'exclude_end' => self.exclude_end? }
41
- end
42
- end
@@ -1,308 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- # The rails tests set this to true. Both Rails and the JSON gem monkey patch the
4
- # as_json methods on several base classes. Depending on which one replaces the
5
- # method last the behavior will be different. Oj.mimic_JSON abides by the same
6
- # conflicting behavior and the tests reflect that.
7
- $rails_monkey = false unless defined?($rails_monkey)
8
-
9
- class SharedMimicTest < Minitest::Test
10
- class Jam
11
- attr_accessor :x, :y
12
-
13
- def initialize(x, y)
14
- @x = x
15
- @y = y
16
- end
17
-
18
- def eql?(o)
19
- self.class == o.class && @x == o.x && @y == o.y
20
- end
21
- alias == eql?
22
-
23
- def as_json()
24
- {"json_class" => self.class.to_s,"x" => @x,"y" => @y}
25
- end
26
-
27
- def self.json_create(h)
28
- self.new(h['x'], h['y'])
29
- end
30
-
31
- end # Jam
32
-
33
- def setup
34
- @default_options = Oj.default_options
35
- @time = Time.at(1400000000).utc
36
- @expected_time_string =
37
- if defined?(Rails)
38
- %{"2014-05-13T16:53:20.000Z"}
39
- else
40
- %{"2014-05-13 16:53:20 UTC"}
41
- end
42
- end
43
-
44
- def teardown
45
- Oj.default_options = @default_options
46
- end
47
-
48
- # exception
49
- def test_exception
50
- begin
51
- JSON.parse("{")
52
- puts "Failed"
53
- rescue JSON::ParserError
54
- assert(true)
55
- rescue Exception
56
- assert(false, 'Expected a JSON::ParserError')
57
- end
58
- end
59
-
60
- # dump
61
- def test_dump_string
62
- json = JSON.dump([1, true, nil, @time])
63
- if $rails_monkey
64
- assert_equal(%{[1,true,null,#{@expected_time_string}]}, json)
65
- else
66
- assert_equal(%{[1,true,null,{"json_class":"Time","s":1400000000,"n":0}]}, json)
67
- end
68
- end
69
-
70
- def test_dump_with_options
71
- Oj.default_options= {:indent => 2} # JSON this will not change anything
72
- json = JSON.dump([1, true, nil, @time])
73
- if $rails_monkey
74
- assert_equal(%{[
75
- 1,
76
- true,
77
- null,
78
- #{@expected_time_string}
79
- ]
80
- }, json)
81
- else
82
- assert_equal(%{[
83
- 1,
84
- true,
85
- null,
86
- {
87
- "json_class":"Time",
88
- "s":1400000000,
89
- "n\":0
90
- }
91
- ]
92
- }, json)
93
- end
94
- end
95
-
96
- def test_dump_io
97
- s = StringIO.new()
98
- json = JSON.dump([1, true, nil, @time], s)
99
- assert_equal(s, json)
100
- if $rails_monkey
101
- assert_equal(%{[1,true,null,#{@expected_time_string}]}, s.string)
102
- else
103
- assert_equal(%{[1,true,null,{"json_class":"Time","s":1400000000,"n":0}]}, s.string)
104
- end
105
- end
106
- # TBD options
107
-
108
- def test_dump_struct
109
- # anonymous Struct not supported by json so name it
110
- if Object.const_defined?("Struct::Abc")
111
- s = Struct::Abc
112
- else
113
- s = Struct.new("Abc", :a, :b, :c)
114
- end
115
- o = s.new(1, 'two', [true, false])
116
- json = JSON.dump(o)
117
- if o.respond_to?(:as_json)
118
- if $rails_monkey
119
- assert_equal(%|{"a":1,"b":"two","c":[true,false]}|, json)
120
- else
121
- assert_equal(%|{"json_class":"Struct::Abc","v":[1,"two",[true,false]]}|, json)
122
- end
123
- else
124
- j = '"' + o.to_s.gsub('"', '\\"') + '"'
125
- assert_equal(j, json)
126
- end
127
- end
128
-
129
- # load
130
- def test_load_string
131
- json = %{{"a":1,"b":[true,false]}}
132
- obj = JSON.load(json)
133
- assert_equal({ 'a' => 1, 'b' => [true, false]}, obj)
134
- end
135
-
136
- def test_load_io
137
- json = %{{"a":1,"b":[true,false]}}
138
- obj = JSON.load(StringIO.new(json))
139
- assert_equal({ 'a' => 1, 'b' => [true, false]}, obj)
140
- end
141
-
142
- def test_load_proc
143
- Oj.mimic_JSON
144
- children = []
145
- json = %{{"a":1,"b":[true,false]}}
146
- if 'rubinius' == $ruby
147
- obj = JSON.load(json) {|x| children << x }
148
- else
149
- p = Proc.new {|x| children << x }
150
- obj = JSON.load(json, p)
151
- end
152
- assert_equal({ 'a' => 1, 'b' => [true, false]}, obj)
153
- assert([1, true, false, [true, false], { 'a' => 1, 'b' => [true, false]}] == children ||
154
- [true, false, [true, false], 1, { 'a' => 1, 'b' => [true, false]}] == children,
155
- "children don't match")
156
- end
157
-
158
- def test_parse_with_quirks_mode
159
- json = %{null}
160
- assert_equal(nil, JSON.parse(json, :quirks_mode => true))
161
- assert_raises(JSON::ParserError) { JSON.parse(json, :quirks_mode => false) }
162
- assert_raises(JSON::ParserError) { JSON.parse(json) }
163
- end
164
-
165
- def test_parse_with_empty_string
166
- Oj.mimic_JSON
167
- assert_raises(JSON::ParserError) { JSON.parse(' ') }
168
- assert_raises(JSON::ParserError) { JSON.parse("\t\t\n ") }
169
- end
170
-
171
- # []
172
- def test_bracket_load
173
- json = %{{"a":1,"b":[true,false]}}
174
- obj = JSON[json]
175
- assert_equal({ 'a' => 1, 'b' => [true, false]}, obj)
176
- end
177
-
178
- def test_bracket_dump
179
- json = JSON[[1, true, nil]]
180
- assert_equal(%{[1,true,null]}, json)
181
- end
182
-
183
- # generate
184
- def test_generate
185
- json = JSON.generate({ 'a' => 1, 'b' => [true, false]})
186
- assert(%{{"a":1,"b":[true,false]}} == json ||
187
- %{{"b":[true,false],"a":1}} == json)
188
- end
189
- def test_generate_options
190
- json = JSON.generate({ 'a' => 1, 'b' => [true, false]},
191
- :indent => "--",
192
- :array_nl => "\n",
193
- :object_nl => "#\n",
194
- :space => "*",
195
- :space_before => "~")
196
- assert(%{{#
197
- --"a"~:*1,#
198
- --"b"~:*[
199
- ----true,
200
- ----false
201
- --]#
202
- }} == json ||
203
- %{{#
204
- --"b"~:*[
205
- ----true,
206
- ----false
207
- --],#
208
- --"a"~:*1#
209
- }} == json)
210
-
211
- end
212
-
213
- # fast_generate
214
- def test_fast_generate
215
- json = JSON.generate({ 'a' => 1, 'b' => [true, false]})
216
- assert(%{{"a":1,"b":[true,false]}} == json ||
217
- %{{"b":[true,false],"a":1}} == json)
218
- end
219
-
220
- # pretty_generate
221
- def test_pretty_generate
222
- json = JSON.pretty_generate({ 'a' => 1, 'b' => [true, false]})
223
- assert(%{{
224
- "a": 1,
225
- "b": [
226
- true,
227
- false
228
- ]
229
- }} == json ||
230
- %{{
231
- "b": [
232
- true,
233
- false
234
- ],
235
- "a": 1
236
- }} == json)
237
- end
238
-
239
- # parse
240
- def test_parse
241
- json = %{{"a":1,"b":[true,false]}}
242
- obj = JSON.parse(json)
243
- assert_equal({ 'a' => 1, 'b' => [true, false]}, obj)
244
- end
245
- def test_parse_sym_names
246
- json = %{{"a":1,"b":[true,false]}}
247
- obj = JSON.parse(json, :symbolize_names => true)
248
- assert_equal({ :a => 1, :b => [true, false]}, obj)
249
- end
250
- def test_parse_additions
251
- jam = Jam.new(true, 58)
252
- json = Oj.dump(jam, :mode => :compat, :use_to_json => true)
253
- obj = JSON.parse(json)
254
- assert_equal(jam, obj)
255
- obj = JSON.parse(json, :create_additions => true)
256
- assert_equal(jam, obj)
257
- obj = JSON.parse(json, :create_additions => false)
258
- assert_equal({'json_class' => 'SharedMimicTest::Jam', 'x' => true, 'y' => 58}, obj)
259
- json.gsub!('json_class', 'kson_class')
260
- JSON.create_id = 'kson_class'
261
- obj = JSON.parse(json, :create_additions => true)
262
- JSON.create_id = 'json_class'
263
- assert_equal(jam, obj)
264
- end
265
- def test_parse_bang
266
- json = %{{"a":1,"b":[true,false]}}
267
- obj = JSON.parse!(json)
268
- assert_equal({ 'a' => 1, 'b' => [true, false]}, obj)
269
- end
270
-
271
- # recurse_proc
272
- def test_recurse_proc
273
- children = []
274
- JSON.recurse_proc({ 'a' => 1, 'b' => [true, false]}) { |x| children << x }
275
- # JRuby 1.7.0 rb_yield() is broken and converts the [true, false] array into true
276
- unless 'jruby' == $ruby
277
- assert([1, true, false, [true, false], { 'a' => 1, 'b' => [true, false]}] == children ||
278
- [true, false, [true, false], 1, { 'b' => [true, false], 'a' => 1}] == children)
279
- end
280
- end
281
-
282
- # make sure to_json is defined for object.
283
- def test_mimic_to_json
284
- {'a' => 1}.to_json()
285
- Object.new().to_json()
286
- end
287
- end # SharedMimicTest
288
-
289
- if defined?(ActiveSupport)
290
- class SharedMimicRailsTest < SharedMimicTest
291
- def test_activesupport_exception
292
- begin
293
- ActiveSupport::JSON.decode("{")
294
- puts "Failed"
295
- rescue ActiveSupport::JSON.parse_error
296
- assert(true)
297
- rescue Exception
298
- assert(false, 'Expected a JSON::ParserError')
299
- end
300
- end
301
-
302
- def test_activesupport_encode
303
- Oj.default_options= {:indent => 0}
304
- json = ActiveSupport::JSON.encode([1, true, nil])
305
- assert_equal(%{[1,true,null]}, json)
306
- end
307
- end # SharedMimicRailsTest
308
- end
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $: << File.join(File.dirname(__FILE__), '..')
5
-
6
- require 'helper'
7
- require 'isolated/shared'
8
-
9
- require 'json'
10
- Oj.mimic_JSON
11
-
12
- class MimicAfter < SharedMimicTest
13
- end # MimicAfter
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $: << File.join(File.dirname(__FILE__), '..')
5
-
6
- require 'helper'
7
- require 'isolated/shared'
8
-
9
- Oj.mimic_JSON
10
-
11
- class MimicAlone < SharedMimicTest
12
- end # MimicAlone
@@ -1,45 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $: << File.dirname(__FILE__)
5
-
6
- require 'helper'
7
- require 'oj'
8
-
9
- class ObjectFolder < Minitest::Test
10
- class Raccoon
11
- attr_accessor :name
12
-
13
- def initialize(name)
14
- @name = name
15
- end
16
-
17
- def as_json(options={})
18
- {:name => @name}.merge(options)
19
- end
20
- end
21
-
22
- def setup
23
- @default_options = Oj.default_options
24
- end
25
-
26
- def teardown
27
- Oj.default_options = @default_options
28
- end
29
-
30
- def test_as_json_options
31
- Oj.mimic_JSON()
32
- raccoon = Raccoon.new('Rocket')
33
- json = raccoon.to_json()
34
- assert_equal(json, '{"name":"Rocket"}')
35
-
36
- json = raccoon.to_json(:occupation => 'bounty hunter')
37
- # depending on the ruby version the order of the hash members maybe different.
38
- if (json.start_with?('{"name'))
39
- assert_equal(json, '{"name":"Rocket","occupation":"bounty hunter"}')
40
- else
41
- assert_equal(json, '{"occupation":"bounty hunter","name":"Rocket"}')
42
- end
43
- end
44
-
45
- end
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $: << File.join(File.dirname(__FILE__), '..')
5
-
6
- require 'helper'
7
- require 'isolated/shared'
8
-
9
- Oj.mimic_JSON
10
- require 'json'
11
-
12
- class MimicBefore < SharedMimicTest
13
- end # MimicBefore
@@ -1,28 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $: << File.join(File.dirname(__FILE__), '..')
5
-
6
- require 'helper'
7
-
8
- class MimicDefine < Minitest::Test
9
- def test_mimic_define
10
- assert(defined?(JSON).nil?)
11
- Oj.mimic_JSON
12
-
13
- # Test constants
14
- assert(!defined?(JSON).nil?)
15
- assert(!defined?(JSON::ParserError).nil?)
16
- assert(Object.respond_to?(:to_json))
17
-
18
- # Test loaded features
19
- assert(!require('json'))
20
-
21
- begin
22
- require('json_spec')
23
- assert(false, '** should raise LoadError')
24
- rescue LoadError
25
- assert(true)
26
- end
27
- end
28
- end # MimicSingle
@@ -1,22 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $: << File.join(File.dirname(__FILE__), '..')
5
-
6
- require 'helper'
7
-
8
- begin
9
- require 'rails/all'
10
- rescue LoadError => e
11
- puts "Rails are not in the gemfile, skipping tests"
12
- Process.exit
13
- end
14
-
15
- Oj.mimic_JSON
16
-
17
- require 'isolated/shared'
18
-
19
- $rails_monkey = true
20
-
21
- class MimicRailsAfter < SharedMimicRailsTest
22
- end # MimicRailsAfter
@@ -1,21 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $: << File.join(File.dirname(__FILE__), '..')
5
-
6
- require 'helper'
7
-
8
- Oj.mimic_JSON
9
- begin
10
- require 'rails/all'
11
- rescue LoadError => e
12
- puts "Rails are not in the gemfile, skipping tests"
13
- Process.exit
14
- end
15
-
16
- require 'isolated/shared'
17
-
18
- $rails_monkey = true
19
-
20
- class MimicRailsBefore < SharedMimicRailsTest
21
- end # MimicRailsBefore
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $: << File.join(File.dirname(__FILE__), '..')
5
-
6
- require 'helper'
7
-
8
- class MimicRedefine < Minitest::Test
9
- def test_mimic_redefine
10
- require 'json'
11
- parser_error = JSON::ParserError
12
- Oj.mimic_JSON
13
- assert_equal(parser_error, JSON::ParserError)
14
- end
15
- end # MimicSingle