oj 3.16.9 → 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 (108) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/ext/oj/fast.c +3 -6
  4. data/ext/oj/mimic_json.c +3 -6
  5. data/ext/oj/oj.c +2 -4
  6. data/ext/oj/parse.c +15 -5
  7. data/ext/oj/parser.c +1 -1
  8. data/ext/oj/parser.h +2 -0
  9. data/ext/oj/rails.c +1 -2
  10. data/ext/oj/saj.c +3 -6
  11. data/ext/oj/scp.c +3 -6
  12. data/ext/oj/stream_writer.c +1 -7
  13. data/ext/oj/strict.c +2 -4
  14. data/ext/oj/string_writer.c +1 -3
  15. data/lib/oj/version.rb +1 -1
  16. metadata +3 -98
  17. data/test/_test_active.rb +0 -75
  18. data/test/_test_active_mimic.rb +0 -95
  19. data/test/_test_mimic_rails.rb +0 -123
  20. data/test/activerecord/result_test.rb +0 -31
  21. data/test/activesupport6/abstract_unit.rb +0 -44
  22. data/test/activesupport6/decoding_test.rb +0 -133
  23. data/test/activesupport6/encoding_test.rb +0 -542
  24. data/test/activesupport6/encoding_test_cases.rb +0 -98
  25. data/test/activesupport6/test_common.rb +0 -17
  26. data/test/activesupport6/test_helper.rb +0 -163
  27. data/test/activesupport6/time_zone_test_helpers.rb +0 -39
  28. data/test/activesupport7/abstract_unit.rb +0 -52
  29. data/test/activesupport7/decoding_test.rb +0 -125
  30. data/test/activesupport7/encoding_test.rb +0 -536
  31. data/test/activesupport7/encoding_test_cases.rb +0 -104
  32. data/test/activesupport7/time_zone_test_helpers.rb +0 -47
  33. data/test/files.rb +0 -29
  34. data/test/foo.rb +0 -26
  35. data/test/helper.rb +0 -39
  36. data/test/isolated/shared.rb +0 -309
  37. data/test/isolated/test_mimic_after.rb +0 -13
  38. data/test/isolated/test_mimic_alone.rb +0 -12
  39. data/test/isolated/test_mimic_as_json.rb +0 -45
  40. data/test/isolated/test_mimic_before.rb +0 -13
  41. data/test/isolated/test_mimic_define.rb +0 -28
  42. data/test/isolated/test_mimic_rails_after.rb +0 -22
  43. data/test/isolated/test_mimic_rails_before.rb +0 -21
  44. data/test/isolated/test_mimic_redefine.rb +0 -15
  45. data/test/json_gem/json_addition_test.rb +0 -216
  46. data/test/json_gem/json_common_interface_test.rb +0 -155
  47. data/test/json_gem/json_encoding_test.rb +0 -107
  48. data/test/json_gem/json_ext_parser_test.rb +0 -21
  49. data/test/json_gem/json_fixtures_test.rb +0 -36
  50. data/test/json_gem/json_generator_test.rb +0 -413
  51. data/test/json_gem/json_generic_object_test.rb +0 -90
  52. data/test/json_gem/json_parser_test.rb +0 -477
  53. data/test/json_gem/json_string_matching_test.rb +0 -42
  54. data/test/json_gem/test_helper.rb +0 -30
  55. data/test/mem.rb +0 -34
  56. data/test/perf.rb +0 -102
  57. data/test/perf_compat.rb +0 -128
  58. data/test/perf_dump.rb +0 -50
  59. data/test/perf_fast.rb +0 -162
  60. data/test/perf_file.rb +0 -62
  61. data/test/perf_object.rb +0 -134
  62. data/test/perf_once.rb +0 -59
  63. data/test/perf_parser.rb +0 -183
  64. data/test/perf_saj.rb +0 -101
  65. data/test/perf_scp.rb +0 -140
  66. data/test/perf_simple.rb +0 -289
  67. data/test/perf_strict.rb +0 -137
  68. data/test/perf_wab.rb +0 -129
  69. data/test/prec.rb +0 -23
  70. data/test/sample/change.rb +0 -13
  71. data/test/sample/dir.rb +0 -18
  72. data/test/sample/doc.rb +0 -35
  73. data/test/sample/file.rb +0 -47
  74. data/test/sample/group.rb +0 -15
  75. data/test/sample/hasprops.rb +0 -15
  76. data/test/sample/layer.rb +0 -11
  77. data/test/sample/line.rb +0 -20
  78. data/test/sample/oval.rb +0 -10
  79. data/test/sample/rect.rb +0 -9
  80. data/test/sample/shape.rb +0 -34
  81. data/test/sample/text.rb +0 -19
  82. data/test/sample.rb +0 -54
  83. data/test/sample_json.rb +0 -37
  84. data/test/test_compat.rb +0 -567
  85. data/test/test_custom.rb +0 -555
  86. data/test/test_debian.rb +0 -50
  87. data/test/test_fast.rb +0 -526
  88. data/test/test_file.rb +0 -250
  89. data/test/test_gc.rb +0 -60
  90. data/test/test_generate.rb +0 -21
  91. data/test/test_hash.rb +0 -39
  92. data/test/test_integer_range.rb +0 -72
  93. data/test/test_null.rb +0 -376
  94. data/test/test_object.rb +0 -1030
  95. data/test/test_parser.rb +0 -11
  96. data/test/test_parser_debug.rb +0 -27
  97. data/test/test_parser_saj.rb +0 -337
  98. data/test/test_parser_usual.rb +0 -255
  99. data/test/test_rails.rb +0 -35
  100. data/test/test_saj.rb +0 -188
  101. data/test/test_scp.rb +0 -431
  102. data/test/test_strict.rb +0 -441
  103. data/test/test_various.rb +0 -801
  104. data/test/test_wab.rb +0 -311
  105. data/test/test_writer.rb +0 -396
  106. data/test/tests.rb +0 -33
  107. data/test/tests_mimic.rb +0 -23
  108. data/test/tests_mimic_addition.rb +0 -16
data/test/test_custom.rb DELETED
@@ -1,555 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- $LOAD_PATH << __dir__
5
- @oj_dir = File.dirname(File.expand_path(__dir__))
6
- %w(lib ext).each do |dir|
7
- $LOAD_PATH << File.join(@oj_dir, dir)
8
- end
9
-
10
- require 'minitest'
11
- require 'minitest/autorun'
12
- require 'stringio'
13
- require 'date'
14
- require 'bigdecimal'
15
- require 'oj'
16
-
17
- class CustomJuice < Minitest::Test
18
-
19
- module TestModule
20
- end
21
-
22
- class Jeez
23
- attr_accessor :x, :y, :_z
24
-
25
- def initialize(x, y)
26
- @x = x
27
- @y = y
28
- @_z = x.to_s
29
- end
30
-
31
- def ==(o)
32
- self.class == o.class && @x == o.x && @y = o.y
33
- end
34
-
35
- def to_json(*_args)
36
- %|{"xx":#{@x},"yy":#{y}}|
37
- end
38
-
39
- def raw_json(_depth, _indent)
40
- %|{"xxx":#{@x},"yyy":#{y}}|
41
- end
42
-
43
- def as_json(*_args)
44
- {'a' => @x, :b => @y }
45
- end
46
-
47
- def to_hash
48
- {'b' => @x, 'n' => @y }
49
- end
50
- end
51
-
52
- class AsJson
53
- attr_accessor :x, :y
54
-
55
- def initialize(x, y)
56
- @x = x
57
- @y = y
58
- end
59
-
60
- def ==(o)
61
- self.class == o.class && @x == o.x && @y = o.y
62
- end
63
-
64
- def as_json(*_args)
65
- {'a' => @x, :b => @y }
66
- end
67
- end
68
-
69
- class AsRails
70
- attr_accessor :x, :y
71
-
72
- def initialize(x, y)
73
- @x = x
74
- @y = y
75
- end
76
-
77
- def ==(o)
78
- self.class == o.class && @x == o.x && @y = o.y
79
- end
80
-
81
- def as_json(*_args)
82
- a = @x
83
- a = a.as_json if a.respond_to?('as_json')
84
- b = @y
85
- b = b.as_json if b.respond_to?('as_json')
86
- {'a' => a, :b => b }
87
- end
88
- end
89
-
90
- def setup
91
- @default_options = Oj.default_options
92
- Oj.default_options = { :mode => :custom }
93
- end
94
-
95
- def teardown
96
- Oj.default_options = @default_options
97
- end
98
-
99
- def test_nil
100
- dump_and_load(nil, false)
101
- end
102
-
103
- def test_true
104
- dump_and_load(true, false)
105
- end
106
-
107
- def test_false
108
- dump_and_load(false, false)
109
- end
110
-
111
- def test_fixnum
112
- dump_and_load(0, false)
113
- dump_and_load(12_345, false)
114
- dump_and_load(-54_321, false)
115
- dump_and_load(1, false)
116
- end
117
-
118
- def test_float
119
- dump_and_load(0.0, false)
120
- dump_and_load(12_345.6789, false)
121
- dump_and_load(70.35, false)
122
- dump_and_load(-54_321.012, false)
123
- dump_and_load(1.7775, false)
124
- dump_and_load(2.5024, false)
125
- dump_and_load(2.48e16, false)
126
- dump_and_load(2.48e100 * 1.0e10, false)
127
- dump_and_load(-2.48e100 * 1.0e10, false)
128
- end
129
-
130
- def test_float_parse
131
- f = Oj.load('12.123456789012345678', mode: :custom, bigdecimal_load: :float)
132
- assert_equal(Float, f.class)
133
- end
134
-
135
- def test_float_parse_fast
136
- f = Oj.load('12.123456789012345678', mode: :custom, bigdecimal_load: :fast)
137
- assert_equal(Float, f.class)
138
- assert(12.12345678901234 <= f && f < 12.12345678901236)
139
- end
140
-
141
- def test_nan_dump
142
- assert_equal('null', Oj.dump(0/0.0, :nan => :null))
143
- assert_equal('3.3e14159265358979323846', Oj.dump(0/0.0, :nan => :huge))
144
- assert_equal('NaN', Oj.dump(0/0.0, :nan => :word))
145
- begin
146
- Oj.dump(0/0.0, :nan => :raise)
147
- rescue Exception
148
- assert(true)
149
- return
150
- end
151
- assert(false, '*** expected an exception')
152
- end
153
-
154
- def test_infinity_dump
155
- assert_equal('null', Oj.dump(1/0.0, :nan => :null))
156
- assert_equal('3.0e14159265358979323846', Oj.dump(1/0.0, :nan => :huge))
157
- assert_equal('Infinity', Oj.dump(1/0.0, :nan => :word))
158
- begin
159
- Oj.dump(1/0.0, :nan => :raise)
160
- rescue Exception
161
- assert(true)
162
- return
163
- end
164
- assert(false, '*** expected an exception')
165
- end
166
-
167
- def test_neg_infinity_dump
168
- assert_equal('null', Oj.dump(-1/0.0, :nan => :null))
169
- assert_equal('-3.0e14159265358979323846', Oj.dump(-1/0.0, :nan => :huge))
170
- assert_equal('-Infinity', Oj.dump(-1/0.0, :nan => :word))
171
- begin
172
- Oj.dump(-1/0.0, :nan => :raise)
173
- rescue Exception
174
- assert(true)
175
- return
176
- end
177
- assert(false, '*** expected an exception')
178
- end
179
-
180
- def test_string
181
- dump_and_load('', false)
182
- dump_and_load('abc', false)
183
- dump_and_load("abc\ndef", false)
184
- dump_and_load("a\u0041", false)
185
- end
186
-
187
- def test_string_ascii
188
- json = Oj.dump('ぴーたー', :escape_mode => :ascii)
189
- assert_equal(%{"\\u3074\\u30fc\\u305f\\u30fc"}, json)
190
- dump_and_load('ぴーたー', false, :escape_mode => :ascii)
191
- end
192
-
193
- def test_string_json
194
- json = Oj.dump('ぴーたー', :escape_mode => :json)
195
- assert_equal(%{"ぴーたー"}, json)
196
- dump_and_load('ぴーたー', false, :escape_mode => :json)
197
- end
198
-
199
- def test_array
200
- dump_and_load([], false)
201
- dump_and_load([true, false], false)
202
- dump_and_load(['a', 1, nil], false)
203
- dump_and_load([[nil]], false)
204
- dump_and_load([[nil], 58], false)
205
- end
206
-
207
- def test_array_deep
208
- dump_and_load([1, [2, [3, [4, [5, [6, [7, [8, [9, [10, [11, [12, [13, [14, [15, [16, [17, [18, [19, [20]]]]]]]]]]]]]]]]]]]], false)
209
- end
210
-
211
- def test_deep_nest
212
- skip 'TruffleRuby causes SEGV' if RUBY_ENGINE == 'truffleruby'
213
-
214
- begin
215
- n = 10_000
216
- Oj.strict_load(('[' * n) + (']' * n))
217
- rescue Exception => e
218
- refute(e.message)
219
- end
220
- end
221
-
222
- def test_hash
223
- dump_and_load({}, false)
224
- dump_and_load({ 'true' => true, 'false' => false}, false)
225
- dump_and_load({ 'true' => true, 'array' => [], 'hash' => { }}, false)
226
- end
227
-
228
- def test_hash_deep
229
- dump_and_load({'1' => {
230
- '2' => {
231
- '3' => {
232
- '4' => {
233
- '5' => {
234
- '6' => {
235
- '7' => {
236
- '8' => {
237
- '9' => {
238
- '10' => {
239
- '11' => {
240
- '12' => {
241
- '13' => {
242
- '14' => {
243
- '15' => {
244
- '16' => {
245
- '17' => {
246
- '18' => {
247
- '19' => {
248
- '20' => {}}}}}}}}}}}}}}}}}}}}}, false)
249
- end
250
-
251
- def test_hash_escaped_key
252
- json = %{{"a\nb":true,"c\td":false}}
253
- obj = Oj.load(json)
254
- assert_equal({"a\nb" => true, "c\td" => false}, obj)
255
- end
256
-
257
- def test_hash_non_string_key
258
- assert_equal(%|{"1":true}|, Oj.dump({ 1 => true }, :indent => 0))
259
- end
260
-
261
- def test_bignum_object
262
- dump_and_load(7 ** 55, false)
263
- end
264
-
265
- def test_bigdecimal
266
- assert_equal('0.314159265358979323846e1', Oj.dump(BigDecimal('3.14159265358979323846'), bigdecimal_as_decimal: true).downcase())
267
- assert_equal('"0.314159265358979323846e1"', Oj.dump(BigDecimal('3.14159265358979323846'), bigdecimal_as_decimal: false).downcase())
268
- dump_and_load(BigDecimal('3.14159265358979323846'), false, :bigdecimal_load => true)
269
- end
270
-
271
- def test_object
272
- obj = Jeez.new(true, 58)
273
- json = Oj.dump(obj, create_id: '^o', use_to_json: false, use_as_json: false, use_to_hash: false)
274
- assert_equal(%|{"x":true,"y":58,"_z":"true"}|, json)
275
- json = Oj.dump(obj, create_id: '^o', use_to_json: false, use_as_json: false, use_to_hash: false, ignore_under: true)
276
- assert_equal(%|{"x":true,"y":58}|, json)
277
- dump_and_load(obj, false, :create_id => '^o', :create_additions => true)
278
- end
279
-
280
- def test_object_to_json
281
- obj = Jeez.new(true, 58)
282
- json = Oj.dump(obj, :use_to_json => true, :use_as_json => false, :use_to_hash => false)
283
- assert_equal(%|{"xx":true,"yy":58}|, json)
284
- end
285
-
286
- def test_object_as_json
287
- obj = Jeez.new(true, 58)
288
- json = Oj.dump(obj, :use_to_json => false, :use_as_json => true, :use_to_hash => false)
289
- assert_equal(%|{"a":true,"b":58}|, json)
290
- end
291
-
292
- def test_object_to_hash
293
- obj = Jeez.new(true, 58)
294
- json = Oj.dump(obj, :use_to_json => false, :use_as_json => false, :use_to_hash => true)
295
- assert_equal(%|{"b":true,"n":58}|, json)
296
- end
297
-
298
- def test_object_raw_json
299
- obj = Jeez.new(true, 58)
300
- json = Oj.dump(obj, :use_to_json => true, :use_as_json => false, :use_raw_json => true, :use_to_hash => false)
301
- assert_equal(%|{"xxx":true,"yyy":58}|, json)
302
- end
303
-
304
- def test_raw_json_stringwriter
305
- obj = Oj::StringWriter.new(:indent => 0)
306
- obj.push_array()
307
- obj.pop()
308
- json = Oj.dump(obj, :use_raw_json => true)
309
- assert_equal(%|[]|, json)
310
- end
311
-
312
- def test_as_raw_json_stringwriter
313
- obj = Oj::StringWriter.new(:indent => 0)
314
- obj.push_array()
315
- obj.push_value(3)
316
- obj.pop()
317
- j = AsJson.new(1, obj)
318
-
319
- json = Oj.dump(j, use_raw_json: true, use_as_json: true, indent: 2)
320
- assert_equal(%|{
321
- "a":1,
322
- "b":[3]
323
- }
324
- |, json)
325
-
326
- json = Oj.dump(j, use_raw_json: false, use_as_json: true, indent: 2)
327
- assert_equal(%|{
328
- "a":1,
329
- "b":{}
330
- }
331
- |, json)
332
- end
333
-
334
- def test_rails_as_raw_json_stringwriter
335
- obj = Oj::StringWriter.new(:indent => 0)
336
- obj.push_array()
337
- obj.push_value(3)
338
- obj.pop()
339
- j = AsRails.new(1, obj)
340
- json = Oj.dump(j, mode: :rails, use_raw_json: true, indent: 2)
341
- assert_equal(%|{
342
- "a":1,
343
- "b":{}
344
- }
345
- |, json)
346
-
347
- Oj::Rails.optimize
348
- json = Oj.dump(j, mode: :rails, use_raw_json: true, indent: 2)
349
- Oj::Rails.deoptimize
350
- assert_equal(%|{
351
- "a":1,
352
- "b":[3]
353
- }
354
- |, json)
355
- end
356
-
357
- def test_symbol
358
- json = Oj.dump(:abc)
359
- assert_equal('"abc"', json)
360
- end
361
-
362
- def test_class
363
- assert_equal(%|"CustomJuice"|, Oj.dump(CustomJuice))
364
- end
365
-
366
- def test_module
367
- assert_equal(%|"CustomJuice::TestModule"|, Oj.dump(TestModule))
368
- end
369
-
370
- def test_symbol_keys
371
- json = %|{
372
- "x":true,
373
- "y":58,
374
- "z": [1,2,3]
375
- }
376
- |
377
- obj = Oj.load(json, :symbol_keys => true)
378
- assert_equal({ :x => true, :y => 58, :z => [1, 2, 3]}, obj)
379
- end
380
-
381
- def test_double
382
- json = %{{ "x": 1}{ "y": 2}}
383
- results = []
384
- Oj.load(json, :mode => :strict) { |x| results << x }
385
-
386
- assert_equal([{ 'x' => 1 }, { 'y' => 2 }], results)
387
- end
388
-
389
- def test_circular_hash
390
- h = { 'a' => 7 }
391
- h['b'] = h
392
- json = Oj.dump(h, :indent => 2, :circular => true)
393
- assert_equal(%|{
394
- "a":7,
395
- "b":null
396
- }
397
- |, json)
398
- end
399
-
400
- def test_omit_nil
401
- json = Oj.dump({'x' => {'a' => 1, 'b' => nil }, 'y' => nil}, :omit_nil => true)
402
- assert_equal(%|{"x":{"a":1}}|, json)
403
- end
404
-
405
- def test_omit_null_byte
406
- json = Oj.dump({ "fo\x00o" => "b\x00ar" }, :omit_null_byte => true)
407
- assert_equal(%|{"foo":"bar"}|, json)
408
- end
409
-
410
- def test_complex
411
- obj = Complex(2, 9)
412
- dump_and_load(obj, false, :create_id => '^o', :create_additions => true)
413
- end
414
-
415
- def test_rational
416
- obj = Rational(2, 9)
417
- dump_and_load(obj, false, :create_id => '^o', :create_additions => true)
418
- end
419
-
420
- def test_range
421
- obj = 3..8
422
- dump_and_load(obj, false, :create_id => '^o', :create_additions => true)
423
- end
424
-
425
- def test_date
426
- obj = Date.new(2017, 1, 5)
427
- dump_and_load(obj, false, :create_id => '^o', :create_additions => true)
428
- end
429
-
430
- def test_date_unix
431
- obj = Date.new(2017, 1, 5)
432
- json = Oj.dump(obj, :indent => 2, time_format: :unix)
433
- assert_equal('1483574400.000000000', json)
434
- end
435
-
436
- def test_date_unix_zone
437
- obj = Date.new(2017, 1, 5)
438
- json = Oj.dump(obj, :indent => 2, time_format: :unix_zone)
439
- assert_equal('1483574400.000000000', json)
440
- end
441
-
442
- def test_date_ruby
443
- obj = Date.new(2017, 1, 5)
444
- json = Oj.dump(obj, :indent => 2, time_format: :ruby)
445
- assert_equal('"2017-01-05"', json)
446
- end
447
-
448
- def test_date_xmlschema
449
- obj = Date.new(2017, 1, 5)
450
- json = Oj.dump(obj, :indent => 2, time_format: :xmlschema)
451
- assert_equal('"2017-01-05"', json)
452
- end
453
-
454
- def test_datetime
455
- obj = DateTime.new(2017, 1, 5, 10, 20, 30)
456
- dump_and_load(obj, false, :create_id => '^o', :create_additions => true)
457
- end
458
-
459
- def test_datetime_unix
460
- obj = DateTime.new(2017, 1, 5, 10, 20, 30, '-0500')
461
- json = Oj.dump(obj, :indent => 2, time_format: :unix)
462
- assert_equal('1483629630.000000000', json)
463
- end
464
-
465
- def test_datetime_unix_zone
466
- obj = DateTime.new(2017, 1, 5, 10, 20, 30, '-0500')
467
- json = Oj.dump(obj, :indent => 2, time_format: :unix_zone)
468
- assert_equal('1483629630.000000000e-18000', json)
469
- end
470
-
471
- def test_datetime_ruby
472
- obj = DateTime.new(2017, 1, 5, 10, 20, 30, '-0500')
473
- json = Oj.dump(obj, :indent => 2, time_format: :ruby)
474
- assert_equal('"2017-01-05T10:20:30-05:00"', json)
475
- end
476
-
477
- def test_datetime_xmlschema
478
- obj = DateTime.new(2017, 1, 5, 10, 20, 30, '-0500')
479
- json = Oj.dump(obj, :indent => 2, time_format: :xmlschema)
480
- assert_equal('"2017-01-05T10:20:30-05:00"', json)
481
- end
482
-
483
- def test_regexp
484
- # this notation must be used to get an == match later
485
- obj = /(?ix-m:^yes$)/
486
- dump_and_load(obj, false, :create_id => '^o', :create_additions => true)
487
- end
488
-
489
- def test_openstruct
490
- obj = OpenStruct.new(:a => 1, 'b' => 2)
491
- dump_and_load(obj, false, :create_id => '^o', :create_additions => true)
492
- end
493
-
494
- def test_time
495
- skip 'TruffleRuby fails this spec' if RUBY_ENGINE == 'truffleruby'
496
-
497
- obj = Time.now()
498
- # These two forms should be able to recreate the time precisely,
499
- # so we check they can load a dumped version and recreate the
500
- # original object correctly.
501
- dump_and_load(obj, false, :time_format => :unix, :create_id => '^o', :create_additions => true)
502
- dump_and_load(obj, false, :time_format => :unix_zone, :create_id => '^o', :create_additions => true)
503
- # These two forms will lose precision while dumping as they don't
504
- # preserve full precision. We check that a dumped version is equal
505
- # to that version loaded and dumped a second time, but don't check
506
- # that the loaded Ruby object is still the same as the original.
507
- dump_load_dump(obj, false, :time_format => :xmlschema, :create_id => '^o', :create_additions => true)
508
- dump_load_dump(obj, false, :time_format => :xmlschema, :create_id => '^o', :create_additions => true, second_precision: 3)
509
- dump_load_dump(obj, false, :time_format => :ruby, :create_id => '^o', :create_additions => true)
510
- end
511
-
512
- def dump_and_load(obj, trace=false, options={})
513
- options = options.merge(:indent => 2, :mode => :custom)
514
- json = Oj.dump(obj, options)
515
- puts json if trace
516
-
517
- loaded = Oj.load(json, options)
518
- if obj.nil?
519
- assert_nil(loaded)
520
- else
521
- assert_equal(obj, loaded)
522
- end
523
- loaded
524
- end
525
-
526
- def dump_and_load_inspect(obj, trace=false, options={})
527
- options = options.merge(:indent => 2, :mode => :custom)
528
- json = Oj.dump(obj, options)
529
- puts json if trace
530
-
531
- loaded = Oj.load(json, options)
532
- if obj.nil?
533
- assert_nil(loaded)
534
- else
535
- assert_equal(obj.inspect, loaded.inspect)
536
- end
537
- loaded
538
- end
539
-
540
- def dump_load_dump(obj, trace=false, options={})
541
- options = options.merge(:indent => 2, :mode => :custom)
542
- json = Oj.dump(obj, options)
543
- puts json if trace
544
-
545
- loaded = Oj.load(json, options)
546
- if obj.nil?
547
- assert_nil(loaded)
548
- else
549
- json2 = Oj.dump(loaded, options)
550
- assert_equal(json, json2)
551
- end
552
- loaded
553
- end
554
-
555
- end
data/test/test_debian.rb DELETED
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'helper'
4
-
5
- class DebJuice < Minitest::Test
6
- class Jam
7
- attr_accessor :x, :y
8
-
9
- def initialize(x, y)
10
- @x = x
11
- @y = y
12
- end
13
-
14
- def eql?(o)
15
- self.class == o.class && @x == o.x && @y == o.y
16
- end
17
- alias == eql?
18
-
19
- end # Jam
20
-
21
- # contributed by sauliusg to fix as_json
22
- class Orange < Jam
23
-
24
- def as_json
25
- { :json_class => self.class,
26
- :x => @x,
27
- :y => @y }
28
- end
29
-
30
- def self.json_create(h)
31
- new(h['x'], h['y'])
32
- end
33
- end
34
-
35
- def test_as_json_object_compat_hash_cached
36
- Oj.default_options = { :mode => :compat, :class_cache => true, :use_as_json => true }
37
- obj = Orange.new(true, 58)
38
- json = Oj.dump(obj, :indent => 2)
39
- refute_nil(json)
40
- dump_and_load(obj, true)
41
- end
42
-
43
- def dump_and_load(obj, _trace=false)
44
- json = Oj.dump(obj, :indent => 2)
45
- loaded = Oj.load(json)
46
- assert_equal(obj, loaded)
47
- loaded
48
- end
49
-
50
- end