oj 3.14.3 → 3.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/ext/oj/custom.c +5 -15
- data/ext/oj/dump.c +27 -2
- data/ext/oj/mimic_json.c +21 -0
- data/ext/oj/object.c +7 -21
- data/ext/oj/oj.c +20 -0
- data/ext/oj/oj.h +3 -0
- data/ext/oj/strict.c +9 -27
- data/ext/oj/wab.c +9 -27
- data/lib/oj/version.rb +1 -1
- data/lib/oj.rb +3 -0
- data/pages/Options.md +4 -0
- data/test/_test_active.rb +8 -8
- data/test/_test_active_mimic.rb +7 -7
- data/test/_test_mimic_rails.rb +17 -19
- data/test/files.rb +14 -14
- data/test/foo.rb +5 -5
- data/test/helper.rb +4 -4
- data/test/mem.rb +8 -7
- data/test/perf.rb +21 -26
- data/test/perf_compat.rb +30 -32
- data/test/perf_dump.rb +25 -25
- data/test/perf_fast.rb +80 -82
- data/test/perf_file.rb +27 -29
- data/test/perf_object.rb +65 -68
- data/test/perf_once.rb +8 -7
- data/test/perf_parser.rb +40 -46
- data/test/perf_saj.rb +46 -53
- data/test/perf_scp.rb +57 -69
- data/test/perf_simple.rb +40 -38
- data/test/perf_strict.rb +68 -70
- data/test/perf_wab.rb +67 -69
- data/test/prec.rb +3 -3
- data/test/sample.rb +16 -15
- data/test/sample_json.rb +8 -7
- data/test/test_compat.rb +44 -46
- data/test/test_custom.rb +56 -42
- data/test/test_debian.rb +6 -9
- data/test/test_fast.rb +78 -72
- data/test/test_file.rb +16 -21
- data/test/test_gc.rb +5 -5
- data/test/test_generate.rb +5 -5
- data/test/test_hash.rb +4 -4
- data/test/test_integer_range.rb +9 -9
- data/test/test_null.rb +18 -20
- data/test/test_object.rb +76 -86
- data/test/test_parser.rb +4 -4
- data/test/test_parser_debug.rb +4 -4
- data/test/test_parser_saj.rb +31 -31
- data/test/test_parser_usual.rb +3 -3
- data/test/test_rails.rb +2 -2
- data/test/test_saj.rb +8 -8
- data/test/test_scp.rb +29 -29
- data/test/test_strict.rb +25 -31
- data/test/test_various.rb +121 -75
- data/test/test_wab.rb +43 -42
- data/test/test_writer.rb +46 -46
- data/test/tests.rb +7 -7
- data/test/tests_mimic.rb +6 -6
- data/test/tests_mimic_addition.rb +6 -6
- metadata +3 -6
- data/test/bar.rb +0 -11
- data/test/baz.rb +0 -16
- data/test/bug.rb +0 -16
- data/test/zoo.rb +0 -13
data/test/test_object.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
#
|
2
|
+
# frozen_string_literal: true
|
3
3
|
|
4
|
-
|
4
|
+
$LOAD_PATH << __dir__
|
5
5
|
|
6
6
|
require 'helper'
|
7
7
|
|
@@ -20,12 +20,12 @@ class ObjectJuice < Minitest::Test
|
|
20
20
|
end
|
21
21
|
alias == eql?
|
22
22
|
|
23
|
-
def to_json(*
|
23
|
+
def to_json(*_a)
|
24
24
|
%{{"json_class":"#{self.class}","x":#{@x},"y":#{@y}}}
|
25
25
|
end
|
26
26
|
|
27
27
|
def self.json_create(h)
|
28
|
-
|
28
|
+
new(h['x'], h['y'])
|
29
29
|
end
|
30
30
|
end # Jeez
|
31
31
|
|
@@ -45,30 +45,26 @@ class ObjectJuice < Minitest::Test
|
|
45
45
|
end # Jam
|
46
46
|
|
47
47
|
class Jazz < Jam
|
48
|
-
|
49
|
-
|
50
|
-
end
|
51
|
-
def to_hash()
|
48
|
+
|
49
|
+
def to_hash
|
52
50
|
{ 'json_class' => self.class.to_s, 'x' => @x, 'y' => @y }
|
53
51
|
end
|
52
|
+
|
54
53
|
def self.json_create(h)
|
55
|
-
|
54
|
+
new(h['x'], h['y'])
|
56
55
|
end
|
57
56
|
end # Jazz
|
58
57
|
|
59
58
|
class Orange < Jam
|
60
|
-
def initialize(x, y)
|
61
|
-
super
|
62
|
-
end
|
63
59
|
|
64
|
-
def as_json
|
60
|
+
def as_json
|
65
61
|
{ :json_class => self.class,
|
66
62
|
:x => @x,
|
67
63
|
:y => @y }
|
68
64
|
end
|
69
65
|
|
70
66
|
def self.json_create(h)
|
71
|
-
|
67
|
+
new(h['x'], h['y'])
|
72
68
|
end
|
73
69
|
end
|
74
70
|
|
@@ -77,24 +73,21 @@ class ObjectJuice < Minitest::Test
|
|
77
73
|
module Three
|
78
74
|
class Deep
|
79
75
|
|
80
|
-
def initialize()
|
81
|
-
end
|
82
|
-
|
83
76
|
def eql?(o)
|
84
77
|
self.class == o.class
|
85
78
|
end
|
86
79
|
alias == eql?
|
87
80
|
|
88
|
-
def to_hash
|
89
|
-
{'json_class' =>
|
81
|
+
def to_hash
|
82
|
+
{'json_class' => self.class.name.to_s}
|
90
83
|
end
|
91
84
|
|
92
|
-
def to_json(*
|
85
|
+
def to_json(*_a)
|
93
86
|
%{{"json_class":"#{self.class.name}"}}
|
94
87
|
end
|
95
88
|
|
96
|
-
def self.json_create(
|
97
|
-
|
89
|
+
def self.json_create(_h)
|
90
|
+
new()
|
98
91
|
end
|
99
92
|
end # Deep
|
100
93
|
end # Three
|
@@ -102,7 +95,6 @@ class ObjectJuice < Minitest::Test
|
|
102
95
|
|
103
96
|
class Stuck2 < Struct.new(:a, :b)
|
104
97
|
end
|
105
|
-
|
106
98
|
end # One
|
107
99
|
|
108
100
|
class Stuck < Struct.new(:a, :b)
|
@@ -115,7 +107,7 @@ class ObjectJuice < Minitest::Test
|
|
115
107
|
@safe = safe
|
116
108
|
end
|
117
109
|
|
118
|
-
def safe?
|
110
|
+
def safe?
|
119
111
|
@safe
|
120
112
|
end
|
121
113
|
|
@@ -128,8 +120,8 @@ class ObjectJuice < Minitest::Test
|
|
128
120
|
end
|
129
121
|
alias == eql?
|
130
122
|
|
131
|
-
def inspect
|
132
|
-
|
123
|
+
def inspect
|
124
|
+
super + '(' + @safe + ')'
|
133
125
|
end
|
134
126
|
end
|
135
127
|
|
@@ -182,7 +174,7 @@ class ObjectJuice < Minitest::Test
|
|
182
174
|
@json = j
|
183
175
|
end
|
184
176
|
|
185
|
-
def to_json(*
|
177
|
+
def to_json(*_a)
|
186
178
|
@json
|
187
179
|
end
|
188
180
|
|
@@ -206,7 +198,7 @@ class ObjectJuice < Minitest::Test
|
|
206
198
|
@hash = h
|
207
199
|
end
|
208
200
|
|
209
|
-
def dump
|
201
|
+
def dump
|
210
202
|
@hash
|
211
203
|
end
|
212
204
|
|
@@ -237,16 +229,16 @@ class ObjectJuice < Minitest::Test
|
|
237
229
|
|
238
230
|
def test_fixnum
|
239
231
|
dump_and_load(0, false)
|
240
|
-
dump_and_load(
|
241
|
-
dump_and_load(-
|
232
|
+
dump_and_load(12_345, false)
|
233
|
+
dump_and_load(-54_321, false)
|
242
234
|
dump_and_load(1, false)
|
243
235
|
end
|
244
236
|
|
245
237
|
def test_float
|
246
238
|
dump_and_load(0.0, false)
|
247
|
-
dump_and_load(
|
239
|
+
dump_and_load(12_345.6789, false)
|
248
240
|
dump_and_load(70.35, false)
|
249
|
-
dump_and_load(-
|
241
|
+
dump_and_load(-54_321.012, false)
|
250
242
|
dump_and_load(1.7775, false)
|
251
243
|
dump_and_load(2.5024, false)
|
252
244
|
dump_and_load(2.48e16, false)
|
@@ -256,8 +248,8 @@ class ObjectJuice < Minitest::Test
|
|
256
248
|
# NaN does not always == NaN
|
257
249
|
json = Oj.dump(0/0.0, :mode => :object)
|
258
250
|
assert_equal('3.3e14159265358979323846', json)
|
259
|
-
loaded = Oj.load(json)
|
260
|
-
|
251
|
+
loaded = Oj.load(json)
|
252
|
+
assert_predicate(loaded, :nan?)
|
261
253
|
end
|
262
254
|
|
263
255
|
def test_string
|
@@ -269,18 +261,18 @@ class ObjectJuice < Minitest::Test
|
|
269
261
|
|
270
262
|
def test_symbol
|
271
263
|
dump_and_load(:abc, false)
|
272
|
-
dump_and_load(
|
273
|
-
dump_and_load(
|
264
|
+
dump_and_load(':abc', false)
|
265
|
+
dump_and_load(:":xyz", false)
|
274
266
|
end
|
275
267
|
|
276
268
|
def test_encode
|
277
269
|
opts = Oj.default_options
|
278
270
|
Oj.default_options = { :ascii_only => false }
|
279
|
-
dump_and_load(
|
271
|
+
dump_and_load('ぴーたー', false)
|
280
272
|
Oj.default_options = { :ascii_only => true }
|
281
|
-
json = Oj.dump(
|
273
|
+
json = Oj.dump('ぴーたー')
|
282
274
|
assert_equal(%{"\\u3074\\u30fc\\u305f\\u30fc"}, json)
|
283
|
-
dump_and_load(
|
275
|
+
dump_and_load('ぴーたー', false)
|
284
276
|
Oj.default_options = opts
|
285
277
|
end
|
286
278
|
|
@@ -376,15 +368,13 @@ class ObjectJuice < Minitest::Test
|
|
376
368
|
end
|
377
369
|
|
378
370
|
def test_io_file
|
379
|
-
filename = File.join(
|
380
|
-
File.
|
381
|
-
f.write(%{{
|
371
|
+
filename = File.join(__dir__, 'open_file_test.json')
|
372
|
+
File.write(filename, %{{
|
382
373
|
"x":true,
|
383
374
|
"y":58,
|
384
375
|
"z": [1,2,3]
|
385
376
|
}
|
386
377
|
})
|
387
|
-
}
|
388
378
|
f = File.new(filename)
|
389
379
|
obj = Oj.object_load(f)
|
390
380
|
f.close()
|
@@ -414,7 +404,7 @@ class ObjectJuice < Minitest::Test
|
|
414
404
|
def test_non_str_hash_object
|
415
405
|
json = Oj.dump({ 1 => true, :sim => nil }, :mode => :object)
|
416
406
|
h = Oj.load(json, :mode => :strict)
|
417
|
-
assert_equal({
|
407
|
+
assert_equal({'^#1' => [1, true], ':sim' => nil}, h)
|
418
408
|
h = Oj.load(json, :mode => :object)
|
419
409
|
assert_equal({ 1 => true, :sim => nil }, h)
|
420
410
|
end
|
@@ -466,8 +456,8 @@ class ObjectJuice < Minitest::Test
|
|
466
456
|
# mismatch so instead the seconds, nsecs, and gmt_offset are checked
|
467
457
|
# separately along with utc.
|
468
458
|
json = Oj.dump(t, :mode => :object, :time_format => :xmlschema)
|
469
|
-
#puts "*** json for test_xml_time '#{json}'"
|
470
|
-
loaded = Oj.object_load(json)
|
459
|
+
# puts "*** json for test_xml_time '#{json}'"
|
460
|
+
loaded = Oj.object_load(json)
|
471
461
|
assert_equal(t.tv_sec, loaded.tv_sec)
|
472
462
|
if t.respond_to?(:tv_nsec)
|
473
463
|
assert_equal(t.tv_nsec, loaded.tv_nsec)
|
@@ -484,7 +474,7 @@ class ObjectJuice < Minitest::Test
|
|
484
474
|
# mismatch so instead the seconds, nsecs, and gmt_offset are checked
|
485
475
|
# separately along with utc.
|
486
476
|
json = Oj.dump(t, :mode => :object, :time_format => :xmlschema)
|
487
|
-
loaded = Oj.object_load(json)
|
477
|
+
loaded = Oj.object_load(json)
|
488
478
|
assert_equal(t.tv_sec, loaded.tv_sec)
|
489
479
|
if t.respond_to?(:tv_nsec)
|
490
480
|
assert_equal(t.tv_nsec, loaded.tv_nsec)
|
@@ -501,8 +491,8 @@ class ObjectJuice < Minitest::Test
|
|
501
491
|
# mismatch so instead the seconds, nsecs, and gmt_offset are checked
|
502
492
|
# separately along with utc.
|
503
493
|
json = Oj.dump(t, :mode => :object, :time_format => :ruby)
|
504
|
-
#puts "*** json for test_ruby_time '#{json}'"
|
505
|
-
loaded = Oj.object_load(json)
|
494
|
+
# puts "*** json for test_ruby_time '#{json}'"
|
495
|
+
loaded = Oj.object_load(json)
|
506
496
|
assert_equal(t.tv_sec, loaded.tv_sec)
|
507
497
|
if t.respond_to?(:tv_nsec)
|
508
498
|
assert_equal(t.tv_nsec, loaded.tv_nsec)
|
@@ -514,14 +504,14 @@ class ObjectJuice < Minitest::Test
|
|
514
504
|
end
|
515
505
|
|
516
506
|
def test_ruby_time_12345
|
517
|
-
t = Time.new(2015, 1, 5, 21, 37, 7.123456789,
|
507
|
+
t = Time.new(2015, 1, 5, 21, 37, 7.123456789, 12_345/60*60)
|
518
508
|
# The fractional seconds are not always recreated exactly which causes a
|
519
509
|
# mismatch so instead the seconds, nsecs, and gmt_offset are checked
|
520
510
|
# separately along with utc.
|
521
511
|
json = Oj.dump(t, :mode => :object, :time_format => :ruby)
|
522
|
-
#puts "*** json for test_ruby_time '#{json}'"
|
523
|
-
loaded = Oj.object_load(json)
|
524
|
-
#puts "*** loaded: #{loaded}"
|
512
|
+
# puts "*** json for test_ruby_time '#{json}'"
|
513
|
+
loaded = Oj.object_load(json)
|
514
|
+
# puts "*** loaded: #{loaded}"
|
525
515
|
assert_equal(t.tv_sec, loaded.tv_sec)
|
526
516
|
if t.respond_to?(:tv_nsec)
|
527
517
|
assert_equal(t.tv_nsec, loaded.tv_nsec)
|
@@ -538,8 +528,8 @@ class ObjectJuice < Minitest::Test
|
|
538
528
|
# mismatch so instead the seconds, nsecs, and gmt_offset are checked
|
539
529
|
# separately along with utc.
|
540
530
|
json = Oj.dump(t, :mode => :object, :time_format => :ruby)
|
541
|
-
#puts json
|
542
|
-
loaded = Oj.object_load(json)
|
531
|
+
# puts json
|
532
|
+
loaded = Oj.object_load(json)
|
543
533
|
assert_equal(t.tv_sec, loaded.tv_sec)
|
544
534
|
if t.respond_to?(:tv_nsec)
|
545
535
|
assert_equal(t.tv_nsec, loaded.tv_nsec)
|
@@ -559,8 +549,8 @@ class ObjectJuice < Minitest::Test
|
|
559
549
|
# mismatch so instead the seconds, nsecs, and gmt_offset are checked
|
560
550
|
# separately along with utc.
|
561
551
|
json = Oj.dump(t, :mode => :object, :time_format => :unix_zone)
|
562
|
-
#puts json
|
563
|
-
loaded = Oj.object_load(json)
|
552
|
+
# puts json
|
553
|
+
loaded = Oj.object_load(json)
|
564
554
|
assert_equal(t.tv_sec, loaded.tv_sec)
|
565
555
|
if t.respond_to?(:tv_nsec)
|
566
556
|
assert_equal(t.tv_nsec, loaded.tv_nsec)
|
@@ -577,8 +567,8 @@ class ObjectJuice < Minitest::Test
|
|
577
567
|
# mismatch so instead the seconds, nsecs, and gmt_offset are checked
|
578
568
|
# separately along with utc.
|
579
569
|
json = Oj.dump(t, :mode => :object, :time_format => :unix_zone)
|
580
|
-
#puts json
|
581
|
-
loaded = Oj.object_load(json)
|
570
|
+
# puts json
|
571
|
+
loaded = Oj.object_load(json)
|
582
572
|
assert_equal(t.tv_sec, loaded.tv_sec)
|
583
573
|
if t.respond_to?(:tv_nsec)
|
584
574
|
assert_equal(t.tv_nsec, loaded.tv_nsec)
|
@@ -590,13 +580,13 @@ class ObjectJuice < Minitest::Test
|
|
590
580
|
end
|
591
581
|
|
592
582
|
def test_time_unix_zone_12345
|
593
|
-
t = Time.new(2015, 1, 5, 21, 37, 7.123456789,
|
583
|
+
t = Time.new(2015, 1, 5, 21, 37, 7.123456789, 12_345)
|
594
584
|
# The fractional seconds are not always recreated exactly which causes a
|
595
585
|
# mismatch so instead the seconds, nsecs, and gmt_offset are checked
|
596
586
|
# separately along with utc.
|
597
587
|
json = Oj.dump(t, :mode => :object, :time_format => :unix_zone)
|
598
|
-
#puts json
|
599
|
-
loaded = Oj.object_load(json)
|
588
|
+
# puts json
|
589
|
+
loaded = Oj.object_load(json)
|
600
590
|
assert_equal(t.tv_sec, loaded.tv_sec)
|
601
591
|
if t.respond_to?(:tv_nsec)
|
602
592
|
assert_equal(t.tv_nsec, loaded.tv_nsec)
|
@@ -613,8 +603,8 @@ class ObjectJuice < Minitest::Test
|
|
613
603
|
# mismatch so instead the seconds, nsecs, and gmt_offset are checked
|
614
604
|
# separately along with utc.
|
615
605
|
json = Oj.dump(t, :mode => :object, :time_format => :unix_zone)
|
616
|
-
#puts json
|
617
|
-
loaded = Oj.object_load(json)
|
606
|
+
# puts json
|
607
|
+
loaded = Oj.object_load(json)
|
618
608
|
assert_equal(t.tv_sec, loaded.tv_sec)
|
619
609
|
if t.respond_to?(:tv_nsec)
|
620
610
|
assert_equal(t.tv_nsec, loaded.tv_nsec)
|
@@ -640,20 +630,20 @@ class ObjectJuice < Minitest::Test
|
|
640
630
|
begin
|
641
631
|
Oj.object_load(json)
|
642
632
|
rescue Exception => e
|
643
|
-
assert_equal(
|
633
|
+
assert_equal('ArgumentError', e.class().name)
|
644
634
|
return
|
645
635
|
end
|
646
|
-
assert(false,
|
636
|
+
assert(false, '*** expected an exception')
|
647
637
|
end
|
648
638
|
|
649
639
|
def test_json_object_not_hat_hash
|
650
640
|
json = %{{"^#x":[1,2]}}
|
651
641
|
h = Oj.object_load(json)
|
652
|
-
assert_equal({1 => 2}, h)
|
642
|
+
assert_equal({1 => 2}, h)
|
653
643
|
|
654
644
|
json = %{{"~#x":[1,2]}}
|
655
645
|
h = Oj.object_load(json)
|
656
|
-
assert_equal({'~#x' => [1, 2]}, h)
|
646
|
+
assert_equal({'~#x' => [1, 2]}, h)
|
657
647
|
end
|
658
648
|
|
659
649
|
def test_json_struct
|
@@ -670,14 +660,14 @@ class ObjectJuice < Minitest::Test
|
|
670
660
|
s = Struct.new(:x, :y)
|
671
661
|
obj = s.new(1, 2)
|
672
662
|
json = Oj.dump(obj, :indent => 2, :mode => :object)
|
673
|
-
#puts json
|
674
|
-
loaded = Oj.object_load(json)
|
663
|
+
# puts json
|
664
|
+
loaded = Oj.object_load(json)
|
675
665
|
assert_equal(obj.members, loaded.members)
|
676
666
|
assert_equal(obj.values, loaded.values)
|
677
667
|
end
|
678
668
|
|
679
669
|
def test_json_non_str_hash
|
680
|
-
obj = { 59 =>
|
670
|
+
obj = { 59 => 'young', false => true }
|
681
671
|
dump_and_load(obj, false)
|
682
672
|
end
|
683
673
|
|
@@ -781,24 +771,24 @@ class ObjectJuice < Minitest::Test
|
|
781
771
|
err = e
|
782
772
|
end
|
783
773
|
json = Oj.dump(err, :mode => :object, :indent => 2)
|
784
|
-
#puts "*** #{json}"
|
774
|
+
# puts "*** #{json}"
|
785
775
|
e2 = Oj.load(json, :mode => :strict)
|
786
776
|
assert_equal(err.class.to_s, e2['^o'])
|
787
777
|
assert_equal(err.message, e2['~mesg'])
|
788
778
|
assert_equal(err.backtrace, e2['~bt'])
|
789
779
|
e2 = Oj.load(json, :mode => :object)
|
790
780
|
if 'rubinius' == $ruby
|
791
|
-
assert_equal(e.class, e2.class)
|
792
|
-
assert_equal(e.message, e2.message)
|
793
|
-
assert_equal(e.backtrace, e2.backtrace)
|
781
|
+
assert_equal(e.class, e2.class)
|
782
|
+
assert_equal(e.message, e2.message)
|
783
|
+
assert_equal(e.backtrace, e2.backtrace)
|
794
784
|
else
|
795
|
-
assert_equal(e, e2)
|
785
|
+
assert_equal(e, e2)
|
796
786
|
end
|
797
787
|
end
|
798
788
|
|
799
|
-
class SubX <
|
789
|
+
class SubX < StandardError
|
800
790
|
def initialize
|
801
|
-
super(
|
791
|
+
super('sub')
|
802
792
|
@xyz = 123
|
803
793
|
end
|
804
794
|
end
|
@@ -811,13 +801,13 @@ class ObjectJuice < Minitest::Test
|
|
811
801
|
err = e
|
812
802
|
end
|
813
803
|
json = Oj.dump(err, :mode => :object, :indent => 2)
|
814
|
-
#puts "*** #{json}"
|
804
|
+
# puts "*** #{json}"
|
815
805
|
e2 = Oj.load(json, :mode => :strict)
|
816
806
|
assert_equal(err.class.to_s, e2['^o'])
|
817
807
|
assert_equal(err.message, e2['~mesg'])
|
818
808
|
assert_equal(err.backtrace, e2['~bt'])
|
819
809
|
e2 = Oj.load(json, :mode => :object)
|
820
|
-
assert_equal(e, e2)
|
810
|
+
assert_equal(e, e2)
|
821
811
|
end
|
822
812
|
|
823
813
|
def test_range_object
|
@@ -826,7 +816,7 @@ class ObjectJuice < Minitest::Test
|
|
826
816
|
if 'ruby' == $ruby
|
827
817
|
assert_equal(%{{"^u":["Range",1,7,false]}}, json)
|
828
818
|
else
|
829
|
-
|
819
|
+
assert_equal(%{{"^O":"Range","begin":1,"end":7,"exclude_end?":false}}, json)
|
830
820
|
end
|
831
821
|
dump_and_load(1..7, false)
|
832
822
|
dump_and_load(1..1, false)
|
@@ -958,7 +948,7 @@ class ObjectJuice < Minitest::Test
|
|
958
948
|
|
959
949
|
def test_odd_datetime
|
960
950
|
dump_and_load(DateTime.new(2012, 6, 19, 13, 5, Rational(4, 3)), false)
|
961
|
-
dump_and_load(DateTime.new(2012, 6, 19, 13, 5, Rational(
|
951
|
+
dump_and_load(DateTime.new(2012, 6, 19, 13, 5, Rational(7_123_456_789, 1_000_000_000)), false)
|
962
952
|
end
|
963
953
|
|
964
954
|
def test_bag
|
@@ -968,13 +958,13 @@ class ObjectJuice < Minitest::Test
|
|
968
958
|
"y":58 }}
|
969
959
|
obj = Oj.load(json, :mode => :object, :auto_define => true)
|
970
960
|
assert_equal('ObjectJuice::Jem', obj.class.name)
|
971
|
-
|
961
|
+
assert(obj.x)
|
972
962
|
assert_equal(58, obj.y)
|
973
963
|
end
|
974
964
|
|
975
965
|
def test_odd_string
|
976
966
|
Oj.register_odd(Strung, Strung, :create, :to_s, 'safe?')
|
977
|
-
s = Strung.new(
|
967
|
+
s = Strung.new('Pete', true)
|
978
968
|
dump_and_load(s, false)
|
979
969
|
end
|
980
970
|
|
@@ -995,7 +985,7 @@ class ObjectJuice < Minitest::Test
|
|
995
985
|
end
|
996
986
|
|
997
987
|
def test_auto_string
|
998
|
-
s = AutoStrung.new(
|
988
|
+
s = AutoStrung.new('Pete', true)
|
999
989
|
dump_and_load(s, false)
|
1000
990
|
end
|
1001
991
|
|
@@ -1014,7 +1004,7 @@ class ObjectJuice < Minitest::Test
|
|
1014
1004
|
def dump_and_load(obj, trace=false)
|
1015
1005
|
json = Oj.dump(obj, :indent => 2, :mode => :object)
|
1016
1006
|
puts json if trace
|
1017
|
-
loaded = Oj.object_load(json)
|
1007
|
+
loaded = Oj.object_load(json)
|
1018
1008
|
if obj.nil?
|
1019
1009
|
assert_nil(loaded)
|
1020
1010
|
else
|
data/test/test_parser.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
#
|
2
|
+
# frozen_string_literal: true
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
$LOAD_PATH << __dir__
|
5
|
+
@oj_dir = File.dirname(File.expand_path(__dir__))
|
6
6
|
%w(lib ext).each do |dir|
|
7
|
-
|
7
|
+
$LOAD_PATH << File.join(@oj_dir, dir)
|
8
8
|
end
|
9
9
|
|
10
10
|
require 'test_parser_usual'
|
data/test/test_parser_debug.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
#
|
2
|
+
# frozen_string_literal: true
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
$LOAD_PATH << __dir__
|
5
|
+
@oj_dir = File.dirname(File.expand_path(__dir__))
|
6
6
|
%w(lib ext).each do |dir|
|
7
|
-
|
7
|
+
$LOAD_PATH << File.join(@oj_dir, dir)
|
8
8
|
end
|
9
9
|
|
10
10
|
require 'minitest'
|
data/test/test_parser_saj.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
#
|
2
|
+
# frozen_string_literal: true
|
3
3
|
|
4
|
-
|
4
|
+
$LOAD_PATH << __dir__
|
5
5
|
|
6
6
|
require 'helper'
|
7
7
|
|
@@ -23,7 +23,7 @@ $json = %|{
|
|
23
23
|
class AllSaj < Oj::Saj
|
24
24
|
attr_accessor :calls
|
25
25
|
|
26
|
-
def initialize
|
26
|
+
def initialize
|
27
27
|
@calls = []
|
28
28
|
|
29
29
|
super
|
@@ -58,7 +58,7 @@ end # AllSaj
|
|
58
58
|
class LocSaj
|
59
59
|
attr_accessor :calls
|
60
60
|
|
61
|
-
def initialize
|
61
|
+
def initialize
|
62
62
|
@calls = []
|
63
63
|
end
|
64
64
|
|
@@ -128,7 +128,7 @@ class SajTest < Minitest::Test
|
|
128
128
|
p = Oj::Parser.new(:saj)
|
129
129
|
p.handler = handler
|
130
130
|
p.parse(json)
|
131
|
-
assert_equal([[:add_value,
|
131
|
+
assert_equal([[:add_value, 12_345, nil]], handler.calls)
|
132
132
|
end
|
133
133
|
|
134
134
|
def test_float
|
@@ -137,7 +137,7 @@ class SajTest < Minitest::Test
|
|
137
137
|
p = Oj::Parser.new(:saj)
|
138
138
|
p.handler = handler
|
139
139
|
p.parse(json)
|
140
|
-
assert_equal([[:add_value,
|
140
|
+
assert_equal([[:add_value, 12_345.6789, nil]], handler.calls)
|
141
141
|
end
|
142
142
|
|
143
143
|
def test_float_exp
|
@@ -148,7 +148,7 @@ class SajTest < Minitest::Test
|
|
148
148
|
p.parse(json)
|
149
149
|
assert_equal(1, handler.calls.size)
|
150
150
|
assert_equal(:add_value, handler.calls[0][0])
|
151
|
-
assert_equal((
|
151
|
+
assert_equal((12_345.6789e7 * 10_000).to_i, (handler.calls[0][1] * 10_000).to_i)
|
152
152
|
end
|
153
153
|
|
154
154
|
def test_bignum
|
@@ -159,7 +159,7 @@ class SajTest < Minitest::Test
|
|
159
159
|
p.parse(json)
|
160
160
|
assert_equal(1, handler.calls.size)
|
161
161
|
assert_equal(:add_value, handler.calls[0][0])
|
162
|
-
assert_equal(-
|
162
|
+
assert_equal(-118_999, (handler.calls[0][1] * 10_000).to_i)
|
163
163
|
end
|
164
164
|
|
165
165
|
def test_bignum_loc
|
@@ -177,10 +177,10 @@ class SajTest < Minitest::Test
|
|
177
177
|
p.handler = handler
|
178
178
|
p.parse(json)
|
179
179
|
assert_equal(6, handler.calls.size)
|
180
|
-
assert_equal(1_923_380, (handler.calls[1][1] *
|
180
|
+
assert_equal(1_923_380, (handler.calls[1][1] * 10_000).to_i)
|
181
181
|
handler.calls[1][1] = 1_923_380
|
182
182
|
assert_equal([[:hash_start, nil, 1, 1],
|
183
|
-
[:add_value,
|
183
|
+
[:add_value, 1_923_380, 'width', 2, 30],
|
184
184
|
[:hash_start, 'xaxis', 3, 12],
|
185
185
|
[:add_value, 'y', 'anchor', 4, 17],
|
186
186
|
[:hash_end, 'xaxis', 5, 3],
|
@@ -262,13 +262,13 @@ class SajTest < Minitest::Test
|
|
262
262
|
p.handler = handler
|
263
263
|
p.parse(json)
|
264
264
|
assert_equal([
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
265
|
+
[:array_start, nil],
|
266
|
+
[:add_value, true, nil],
|
267
|
+
[:array_end, nil],
|
268
|
+
[:array_start, nil],
|
269
|
+
[:add_value, false, nil],
|
270
|
+
[:array_end, nil],
|
271
|
+
], handler.calls)
|
272
272
|
end
|
273
273
|
|
274
274
|
def test_io
|
@@ -278,11 +278,11 @@ class SajTest < Minitest::Test
|
|
278
278
|
p.handler = handler
|
279
279
|
p.load(StringIO.new(json))
|
280
280
|
assert_equal([
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
281
|
+
[:array_start, nil],
|
282
|
+
[:add_value, true, nil],
|
283
|
+
[:add_value, false, nil],
|
284
|
+
[:array_end, nil],
|
285
|
+
], handler.calls)
|
286
286
|
end
|
287
287
|
|
288
288
|
def test_file
|
@@ -291,11 +291,11 @@ class SajTest < Minitest::Test
|
|
291
291
|
p.handler = handler
|
292
292
|
p.file('saj_test.json')
|
293
293
|
assert_equal([
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
294
|
+
[:array_start, nil],
|
295
|
+
[:add_value, true, nil],
|
296
|
+
[:add_value, false, nil],
|
297
|
+
[:array_end, nil],
|
298
|
+
], handler.calls)
|
299
299
|
end
|
300
300
|
|
301
301
|
def test_default
|
@@ -304,10 +304,10 @@ class SajTest < Minitest::Test
|
|
304
304
|
Oj::Parser.saj.handler = handler
|
305
305
|
Oj::Parser.saj.parse(json)
|
306
306
|
assert_equal([
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
307
|
+
[:array_start, nil],
|
308
|
+
[:add_value, true, nil],
|
309
|
+
[:array_end, nil],
|
310
|
+
], handler.calls)
|
311
311
|
end
|
312
312
|
|
313
313
|
def test_loc
|
data/test/test_parser_usual.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
#
|
2
|
+
# frozen_string_literal: true
|
3
3
|
|
4
|
-
|
4
|
+
$LOAD_PATH << __dir__
|
5
5
|
|
6
6
|
require 'helper'
|
7
7
|
|
@@ -67,7 +67,7 @@ class UsualTest < Minitest::Test
|
|
67
67
|
|
68
68
|
def test_symbol_keys
|
69
69
|
p = Oj::Parser.new(:usual)
|
70
|
-
|
70
|
+
refute(p.symbol_keys)
|
71
71
|
p.symbol_keys = true
|
72
72
|
doc = p.parse('{"a": true, "b": false}')
|
73
73
|
assert_equal({a: true, b: false}, doc)
|