oj 3.11.5 → 3.16.5

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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1421 -0
  3. data/README.md +19 -5
  4. data/RELEASE_NOTES.md +61 -0
  5. data/ext/oj/buf.h +20 -6
  6. data/ext/oj/cache.c +329 -0
  7. data/ext/oj/cache.h +22 -0
  8. data/ext/oj/cache8.c +10 -9
  9. data/ext/oj/circarray.c +8 -6
  10. data/ext/oj/circarray.h +2 -2
  11. data/ext/oj/code.c +19 -33
  12. data/ext/oj/code.h +2 -2
  13. data/ext/oj/compat.c +27 -77
  14. data/ext/oj/custom.c +86 -179
  15. data/ext/oj/debug.c +126 -0
  16. data/ext/oj/dump.c +256 -249
  17. data/ext/oj/dump.h +26 -12
  18. data/ext/oj/dump_compat.c +565 -642
  19. data/ext/oj/dump_leaf.c +17 -63
  20. data/ext/oj/dump_object.c +65 -187
  21. data/ext/oj/dump_strict.c +27 -51
  22. data/ext/oj/encoder.c +43 -0
  23. data/ext/oj/err.c +2 -13
  24. data/ext/oj/err.h +24 -8
  25. data/ext/oj/extconf.rb +21 -6
  26. data/ext/oj/fast.c +149 -149
  27. data/ext/oj/intern.c +313 -0
  28. data/ext/oj/intern.h +22 -0
  29. data/ext/oj/mem.c +318 -0
  30. data/ext/oj/mem.h +53 -0
  31. data/ext/oj/mimic_json.c +121 -106
  32. data/ext/oj/object.c +85 -162
  33. data/ext/oj/odd.c +89 -67
  34. data/ext/oj/odd.h +15 -15
  35. data/ext/oj/oj.c +542 -411
  36. data/ext/oj/oj.h +99 -73
  37. data/ext/oj/parse.c +175 -187
  38. data/ext/oj/parse.h +26 -24
  39. data/ext/oj/parser.c +1600 -0
  40. data/ext/oj/parser.h +101 -0
  41. data/ext/oj/rails.c +112 -159
  42. data/ext/oj/rails.h +1 -1
  43. data/ext/oj/reader.c +11 -14
  44. data/ext/oj/reader.h +4 -2
  45. data/ext/oj/resolve.c +5 -24
  46. data/ext/oj/rxclass.c +7 -6
  47. data/ext/oj/rxclass.h +1 -1
  48. data/ext/oj/saj.c +22 -33
  49. data/ext/oj/saj2.c +584 -0
  50. data/ext/oj/saj2.h +23 -0
  51. data/ext/oj/scp.c +5 -28
  52. data/ext/oj/sparse.c +28 -72
  53. data/ext/oj/stream_writer.c +50 -40
  54. data/ext/oj/strict.c +56 -61
  55. data/ext/oj/string_writer.c +72 -39
  56. data/ext/oj/trace.h +31 -4
  57. data/ext/oj/usual.c +1218 -0
  58. data/ext/oj/usual.h +69 -0
  59. data/ext/oj/util.h +1 -1
  60. data/ext/oj/val_stack.c +14 -3
  61. data/ext/oj/val_stack.h +8 -7
  62. data/ext/oj/validate.c +46 -0
  63. data/ext/oj/wab.c +63 -88
  64. data/lib/oj/active_support_helper.rb +1 -3
  65. data/lib/oj/bag.rb +7 -1
  66. data/lib/oj/easy_hash.rb +4 -5
  67. data/lib/oj/error.rb +1 -2
  68. data/lib/oj/json.rb +162 -150
  69. data/lib/oj/mimic.rb +9 -7
  70. data/lib/oj/saj.rb +20 -6
  71. data/lib/oj/schandler.rb +5 -4
  72. data/lib/oj/state.rb +12 -8
  73. data/lib/oj/version.rb +1 -2
  74. data/lib/oj.rb +2 -0
  75. data/pages/Compatibility.md +1 -1
  76. data/pages/InstallOptions.md +20 -0
  77. data/pages/JsonGem.md +15 -0
  78. data/pages/Modes.md +8 -3
  79. data/pages/Options.md +43 -5
  80. data/pages/Parser.md +309 -0
  81. data/pages/Rails.md +14 -2
  82. data/test/_test_active.rb +8 -9
  83. data/test/_test_active_mimic.rb +7 -8
  84. data/test/_test_mimic_rails.rb +17 -20
  85. data/test/activerecord/result_test.rb +5 -6
  86. data/test/activesupport6/encoding_test.rb +63 -28
  87. data/test/{activesupport5 → activesupport7}/abstract_unit.rb +16 -12
  88. data/test/{activesupport5 → activesupport7}/decoding_test.rb +2 -10
  89. data/test/{activesupport5 → activesupport7}/encoding_test.rb +86 -50
  90. data/test/{activesupport5 → activesupport7}/encoding_test_cases.rb +6 -0
  91. data/test/{activesupport5 → activesupport7}/time_zone_test_helpers.rb +8 -0
  92. data/test/files.rb +15 -15
  93. data/test/foo.rb +16 -45
  94. data/test/helper.rb +11 -8
  95. data/test/isolated/shared.rb +3 -2
  96. data/test/json_gem/json_addition_test.rb +2 -2
  97. data/test/json_gem/json_common_interface_test.rb +8 -6
  98. data/test/json_gem/json_encoding_test.rb +0 -0
  99. data/test/json_gem/json_ext_parser_test.rb +1 -0
  100. data/test/json_gem/json_fixtures_test.rb +3 -2
  101. data/test/json_gem/json_generator_test.rb +56 -38
  102. data/test/json_gem/json_generic_object_test.rb +11 -11
  103. data/test/json_gem/json_parser_test.rb +54 -47
  104. data/test/json_gem/json_string_matching_test.rb +9 -9
  105. data/test/json_gem/test_helper.rb +7 -3
  106. data/test/mem.rb +34 -0
  107. data/test/perf.rb +22 -27
  108. data/test/perf_compat.rb +31 -33
  109. data/test/perf_dump.rb +50 -0
  110. data/test/perf_fast.rb +80 -82
  111. data/test/perf_file.rb +27 -29
  112. data/test/perf_object.rb +65 -69
  113. data/test/perf_once.rb +59 -0
  114. data/test/perf_parser.rb +183 -0
  115. data/test/perf_saj.rb +46 -54
  116. data/test/perf_scp.rb +58 -69
  117. data/test/perf_simple.rb +41 -39
  118. data/test/perf_strict.rb +74 -82
  119. data/test/perf_wab.rb +67 -69
  120. data/test/prec.rb +5 -5
  121. data/test/sample/change.rb +0 -1
  122. data/test/sample/dir.rb +0 -1
  123. data/test/sample/doc.rb +0 -1
  124. data/test/sample/file.rb +0 -1
  125. data/test/sample/group.rb +0 -1
  126. data/test/sample/hasprops.rb +0 -1
  127. data/test/sample/layer.rb +0 -1
  128. data/test/sample/rect.rb +0 -1
  129. data/test/sample/shape.rb +0 -1
  130. data/test/sample/text.rb +0 -1
  131. data/test/sample.rb +16 -16
  132. data/test/sample_json.rb +8 -8
  133. data/test/test_compat.rb +95 -43
  134. data/test/test_custom.rb +73 -51
  135. data/test/test_debian.rb +7 -10
  136. data/test/test_fast.rb +135 -79
  137. data/test/test_file.rb +41 -30
  138. data/test/test_gc.rb +16 -5
  139. data/test/test_generate.rb +5 -5
  140. data/test/test_hash.rb +5 -5
  141. data/test/test_integer_range.rb +9 -9
  142. data/test/test_null.rb +20 -20
  143. data/test/test_object.rb +99 -96
  144. data/test/test_parser.rb +11 -0
  145. data/test/test_parser_debug.rb +27 -0
  146. data/test/test_parser_saj.rb +337 -0
  147. data/test/test_parser_usual.rb +251 -0
  148. data/test/test_rails.rb +2 -2
  149. data/test/test_saj.rb +10 -8
  150. data/test/test_scp.rb +37 -39
  151. data/test/test_strict.rb +40 -32
  152. data/test/test_various.rb +165 -84
  153. data/test/test_wab.rb +48 -44
  154. data/test/test_writer.rb +47 -47
  155. data/test/tests.rb +13 -5
  156. data/test/tests_mimic.rb +12 -3
  157. data/test/tests_mimic_addition.rb +12 -3
  158. metadata +74 -128
  159. data/ext/oj/hash.c +0 -131
  160. data/ext/oj/hash.h +0 -19
  161. data/ext/oj/hash_test.c +0 -491
  162. data/test/activesupport4/decoding_test.rb +0 -108
  163. data/test/activesupport4/encoding_test.rb +0 -531
  164. data/test/activesupport4/test_helper.rb +0 -41
  165. data/test/activesupport5/test_helper.rb +0 -72
  166. data/test/bar.rb +0 -35
  167. data/test/baz.rb +0 -16
  168. data/test/zoo.rb +0 -13
data/test/test_scp.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
- # encoding: UTF-8
2
+ # frozen_string_literal: true
3
3
 
4
- $: << File.dirname(__FILE__)
4
+ $LOAD_PATH << __dir__
5
5
 
6
6
  require 'helper'
7
7
  require 'socket'
@@ -23,23 +23,22 @@ $json = %{{
23
23
  }}
24
24
 
25
25
  class NoHandler < Oj::ScHandler
26
- def initialize()
27
- end
28
26
  end
29
27
 
30
28
  class AllHandler < Oj::ScHandler
31
29
  attr_accessor :calls
32
30
 
33
- def initialize()
31
+ def initialize
32
+ super
34
33
  @calls = []
35
34
  end
36
35
 
37
- def hash_start()
36
+ def hash_start
38
37
  @calls << [:hash_start]
39
38
  {}
40
39
  end
41
40
 
42
- def hash_end()
41
+ def hash_end
43
42
  @calls << [:hash_end]
44
43
  end
45
44
 
@@ -47,15 +46,16 @@ class AllHandler < Oj::ScHandler
47
46
  @calls << [:hash_key, key]
48
47
  return 'too' if 'two' == key
49
48
  return :symbol if 'symbol' == key
49
+
50
50
  key
51
51
  end
52
52
 
53
- def array_start()
53
+ def array_start
54
54
  @calls << [:array_start]
55
55
  []
56
56
  end
57
57
 
58
- def array_end()
58
+ def array_end
59
59
  @calls << [:array_end]
60
60
  end
61
61
 
@@ -63,11 +63,11 @@ class AllHandler < Oj::ScHandler
63
63
  @calls << [:add_value, value]
64
64
  end
65
65
 
66
- def hash_set(h, key, value)
66
+ def hash_set(_h, key, value)
67
67
  @calls << [:hash_set, key, value]
68
68
  end
69
69
 
70
- def array_append(a, value)
70
+ def array_append(_a, value)
71
71
  @calls << [:array_append, value]
72
72
  end
73
73
 
@@ -75,18 +75,19 @@ end # AllHandler
75
75
 
76
76
  class Closer < AllHandler
77
77
  attr_accessor :io
78
+
78
79
  def initialize(io)
79
80
  super()
80
81
  @io = io
81
82
  end
82
83
 
83
- def hash_start()
84
+ def hash_start
84
85
  @calls << [:hash_start]
85
86
  @io.close
86
87
  {}
87
88
  end
88
89
 
89
- def hash_set(h, key, value)
90
+ def hash_set(_h, key, value)
90
91
  @calls << [:hash_set, key, value]
91
92
  @io.close
92
93
  end
@@ -135,14 +136,14 @@ class ScpTest < Minitest::Test
135
136
  handler = AllHandler.new()
136
137
  json = %{12345}
137
138
  Oj.sc_parse(handler, json)
138
- assert_equal([[:add_value, 12345]], handler.calls)
139
+ assert_equal([[:add_value, 12_345]], handler.calls)
139
140
  end
140
141
 
141
142
  def test_float
142
143
  handler = AllHandler.new()
143
144
  json = %{12345.6789}
144
145
  Oj.sc_parse(handler, json)
145
- assert_equal([[:add_value, 12345.6789]], handler.calls)
146
+ assert_equal([[:add_value, 12_345.6789]], handler.calls)
146
147
  end
147
148
 
148
149
  def test_float_exp
@@ -151,7 +152,7 @@ class ScpTest < Minitest::Test
151
152
  Oj.sc_parse(handler, json)
152
153
  assert_equal(1, handler.calls.size)
153
154
  assert_equal(:add_value, handler.calls[0][0])
154
- assert_equal((12345.6789e7 * 10000).to_i, (handler.calls[0][1] * 10000).to_i)
155
+ assert_equal((12_345.6789e7 * 10_000).to_i, (handler.calls[0][1] * 10_000).to_i)
155
156
  end
156
157
 
157
158
  def test_array_empty
@@ -230,9 +231,9 @@ class ScpTest < Minitest::Test
230
231
  [:array_start],
231
232
  [:hash_start],
232
233
  [:hash_key, 'num'],
233
- [:hash_set, "num", 3],
234
+ [:hash_set, 'num', 3],
234
235
  [:hash_key, 'string'],
235
- [:hash_set, "string", "message"],
236
+ [:hash_set, 'string', 'message'],
236
237
  [:hash_key, 'hash'],
237
238
  [:hash_start],
238
239
  [:hash_key, 'h2'],
@@ -243,17 +244,17 @@ class ScpTest < Minitest::Test
243
244
  [:array_append, 2],
244
245
  [:array_append, 3],
245
246
  [:array_end],
246
- [:hash_set, "a", []],
247
+ [:hash_set, 'a', []],
247
248
  [:hash_end],
248
- [:hash_set, "h2", {}],
249
+ [:hash_set, 'h2', {}],
249
250
  [:hash_end],
250
- [:hash_set, "hash", {}],
251
+ [:hash_set, 'hash', {}],
251
252
  [:hash_end],
252
253
  [:array_append, {}],
253
254
  [:array_end],
254
- [:hash_set, "array", []],
255
+ [:hash_set, 'array', []],
255
256
  [:hash_key, 'boolean'],
256
- [:hash_set, "boolean", true],
257
+ [:hash_set, 'boolean', true],
257
258
  [:hash_end],
258
259
  [:add_value, {}]], handler.calls)
259
260
  end
@@ -320,8 +321,7 @@ class ScpTest < Minitest::Test
320
321
  end
321
322
 
322
323
  def test_pipe
323
- # Windows does not support fork
324
- return if RbConfig::CONFIG['host_os'] =~ /(mingw|mswin)/
324
+ skip 'needs fork' unless Process.respond_to?(:fork)
325
325
 
326
326
  handler = AllHandler.new()
327
327
  json = %{{"one":true,"two":false}}
@@ -347,18 +347,15 @@ class ScpTest < Minitest::Test
347
347
  end
348
348
 
349
349
  def test_bad_bignum
350
- if '2.4.0' < RUBY_VERSION
351
- handler = AllHandler.new()
352
- json = %|{"big":-e123456789}|
353
- assert_raises Exception do # Can be either Oj::ParseError or ArgumentError depending on Ruby version
354
- Oj.sc_parse(handler, json)
355
- end
350
+ handler = AllHandler.new()
351
+ json = %|{"big":-e123456789}|
352
+ assert_raises Exception do # Can be either Oj::ParseError or ArgumentError depending on Ruby version
353
+ Oj.sc_parse(handler, json)
356
354
  end
357
355
  end
358
356
 
359
357
  def test_pipe_close
360
- # Windows does not support fork
361
- return if RbConfig::CONFIG['host_os'] =~ /(mingw|mswin)/
358
+ skip 'needs fork' unless Process.respond_to?(:fork)
362
359
 
363
360
  json = %{{"one":true,"two":false}}
364
361
  IO.pipe do |read_io, write_io|
@@ -372,7 +369,7 @@ class ScpTest < Minitest::Test
372
369
  rescue Exception => e
373
370
  err = e.class.to_s
374
371
  end
375
- assert_equal("IOError", err)
372
+ assert_equal('IOError', err)
376
373
  assert_equal([[:hash_start],
377
374
  [:hash_key, 'one'],
378
375
  [:hash_set, 'one', true]], handler.calls)
@@ -381,8 +378,8 @@ class ScpTest < Minitest::Test
381
378
  write_io.write json[0..11]
382
379
  sleep(0.1)
383
380
  begin
384
- write_io.write json[12..-1]
385
- rescue Exception => e
381
+ write_io.write json[12..]
382
+ rescue Exception
386
383
  # ignore, should fail to write
387
384
  end
388
385
  write_io.close
@@ -399,15 +396,16 @@ class ScpTest < Minitest::Test
399
396
  # Not able to open a socket to run the test. Might be Travis.
400
397
  return
401
398
  end
402
- Thread.start(json) do |j|
399
+ Thread.start(json) do |_j|
403
400
  c = server.accept()
404
401
  c.puts json[0..11]
405
402
  10.times {
406
403
  break if c.closed?
404
+
407
405
  sleep(0.1)
408
406
  }
409
407
  unless c.closed?
410
- c.puts json[12..-1]
408
+ c.puts json[12..]
411
409
  c.close
412
410
  end
413
411
  end
@@ -424,7 +422,7 @@ class ScpTest < Minitest::Test
424
422
  rescue Exception => e
425
423
  err = e.class.to_s
426
424
  end
427
- assert_equal("IOError", err)
425
+ assert_equal('IOError', err)
428
426
  assert_equal([[:hash_start],
429
427
  [:hash_key, 'one'],
430
428
  [:hash_set, 'one', true]], handler.calls)
data/test/test_strict.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
- # encoding: utf-8
2
+ # frozen_string_literal: true
3
3
 
4
- $: << File.dirname(__FILE__)
5
- $oj_dir = File.dirname(File.expand_path(File.dirname(__FILE__)))
4
+ $LOAD_PATH << __dir__
5
+ @oj_dir = File.dirname(File.expand_path(__dir__))
6
6
  %w(lib ext).each do |dir|
7
- $: << File.join($oj_dir, dir)
7
+ $LOAD_PATH << File.join(@oj_dir, dir)
8
8
  end
9
9
 
10
10
  require 'minitest'
@@ -52,16 +52,16 @@ class StrictJuice < Minitest::Test
52
52
 
53
53
  def test_fixnum
54
54
  dump_and_load(0, false)
55
- dump_and_load(12345, false)
56
- dump_and_load(-54321, false)
55
+ dump_and_load(12_345, false)
56
+ dump_and_load(-54_321, false)
57
57
  dump_and_load(1, false)
58
58
  end
59
59
 
60
60
  def test_float
61
61
  dump_and_load(0.0, false)
62
- dump_and_load(12345.6789, false)
62
+ dump_and_load(12_345.6789, false)
63
63
  dump_and_load(70.35, false)
64
- dump_and_load(-54321.012, false)
64
+ dump_and_load(-54_321.012, false)
65
65
  dump_and_load(1.7775, false)
66
66
  dump_and_load(2.5024, false)
67
67
  dump_and_load(2.48e16, false)
@@ -69,6 +69,16 @@ class StrictJuice < Minitest::Test
69
69
  dump_and_load(-2.48e100 * 1.0e10, false)
70
70
  end
71
71
 
72
+ def test_invalid_float
73
+ begin
74
+ Oj.load("64ecb72d29191067f91ff95b")
75
+ rescue Oj::ParseError => e
76
+ assert(e.message == "Invalid float")
77
+ return
78
+ end
79
+ assert(false, "*** expected an exception")
80
+ end
81
+
72
82
  def test_nan_dump
73
83
  assert_equal('null', Oj.dump(0/0.0, :nan => :null))
74
84
  assert_equal('3.3e14159265358979323846', Oj.dump(0/0.0, :nan => :huge))
@@ -78,7 +88,7 @@ class StrictJuice < Minitest::Test
78
88
  assert(true)
79
89
  return
80
90
  end
81
- assert(false, "*** expected an exception")
91
+ assert(false, '*** expected an exception')
82
92
  end
83
93
 
84
94
  def test_infinity_dump
@@ -90,7 +100,7 @@ class StrictJuice < Minitest::Test
90
100
  assert(true)
91
101
  return
92
102
  end
93
- assert(false, "*** expected an exception")
103
+ assert(false, '*** expected an exception')
94
104
  end
95
105
 
96
106
  def test_neg_infinity_dump
@@ -102,7 +112,7 @@ class StrictJuice < Minitest::Test
102
112
  assert(true)
103
113
  return
104
114
  end
105
- assert(false, "*** expected an exception")
115
+ assert(false, '*** expected an exception')
106
116
  end
107
117
 
108
118
  def test_string
@@ -115,15 +125,11 @@ class StrictJuice < Minitest::Test
115
125
  def test_encode
116
126
  opts = Oj.default_options
117
127
  Oj.default_options = { :ascii_only => false }
118
- unless 'jruby' == $ruby
119
- dump_and_load("ぴーたー", false)
120
- end
128
+ dump_and_load('ぴーたー', false)
121
129
  Oj.default_options = { :ascii_only => true }
122
- json = Oj.dump("ぴーたー")
130
+ json = Oj.dump('ぴーたー')
123
131
  assert_equal(%{"\\u3074\\u30fc\\u305f\\u30fc"}, json)
124
- unless 'jruby' == $ruby
125
- dump_and_load("ぴーたー", false)
126
- end
132
+ dump_and_load('ぴーたー', false)
127
133
  Oj.default_options = opts
128
134
  end
129
135
 
@@ -152,15 +158,17 @@ class StrictJuice < Minitest::Test
152
158
  end
153
159
 
154
160
  def test_array_deep
155
- dump_and_load([1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,[14,[15,[16,[17,[18,[19,[20]]]]]]]]]]]]]]]]]]]], false)
161
+ dump_and_load([1, [2, [3, [4, [5, [6, [7, [8, [9, [10, [11, [12, [13, [14, [15, [16, [17, [18, [19, [20]]]]]]]]]]]]]]]]]]]], false)
156
162
  end
157
163
 
158
164
  def test_deep_nest
165
+ skip 'TruffleRuby causes SEGV' if RUBY_ENGINE == 'truffleruby'
166
+
159
167
  begin
160
- n = 10000
161
- Oj.strict_load('[' * n + ']' * n)
168
+ n = 10_000
169
+ Oj.strict_load(('[' * n) + (']' * n))
162
170
  rescue Exception => e
163
- assert(false, e.message)
171
+ refute(e.message)
164
172
  end
165
173
  end
166
174
 
@@ -207,7 +215,7 @@ class StrictJuice < Minitest::Test
207
215
  assert(true)
208
216
  return
209
217
  end
210
- assert(false, "*** expected an exception")
218
+ assert(false, '*** expected an exception')
211
219
  end
212
220
 
213
221
  def test_bignum_object
@@ -236,7 +244,7 @@ class StrictJuice < Minitest::Test
236
244
  assert(true)
237
245
  return
238
246
  end
239
- assert(false, "*** expected an exception")
247
+ assert(false, '*** expected an exception')
240
248
  end
241
249
 
242
250
  def test_range
@@ -246,7 +254,7 @@ class StrictJuice < Minitest::Test
246
254
  assert(true)
247
255
  return
248
256
  end
249
- assert(false, "*** expected an exception")
257
+ assert(false, '*** expected an exception')
250
258
  end
251
259
 
252
260
  # Stream IO
@@ -263,13 +271,13 @@ class StrictJuice < Minitest::Test
263
271
  end
264
272
 
265
273
  def test_io_file
266
- filename = File.join(File.dirname(__FILE__), 'open_file_test.json')
267
- File.open(filename, 'w') { |f| f.write(%{{
274
+ filename = File.join(__dir__, 'open_file_test.json')
275
+ File.write(filename, %{{
268
276
  "x":true,
269
277
  "y":58,
270
278
  "z": [1,2,3]
271
279
  }
272
- }) }
280
+ })
273
281
  f = File.new(filename)
274
282
  obj = Oj.strict_load(f)
275
283
  f.close()
@@ -289,7 +297,7 @@ class StrictJuice < Minitest::Test
289
297
  assert(true)
290
298
  return
291
299
  end
292
- assert(false, "*** expected an exception")
300
+ assert(false, '*** expected an exception')
293
301
  end
294
302
 
295
303
  def test_class
@@ -299,7 +307,7 @@ class StrictJuice < Minitest::Test
299
307
  assert(true)
300
308
  return
301
309
  end
302
- assert(false, "*** expected an exception")
310
+ assert(false, '*** expected an exception')
303
311
  end
304
312
 
305
313
  def test_module
@@ -309,7 +317,7 @@ class StrictJuice < Minitest::Test
309
317
  assert(true)
310
318
  return
311
319
  end
312
- assert(false, "*** expected an exception")
320
+ assert(false, '*** expected an exception')
313
321
  end
314
322
 
315
323
  # symbol_keys option
@@ -421,7 +429,7 @@ class StrictJuice < Minitest::Test
421
429
  def dump_and_load(obj, trace=false)
422
430
  json = Oj.dump(obj, :indent => 2)
423
431
  puts json if trace
424
- loaded = Oj.strict_load(json);
432
+ loaded = Oj.strict_load(json)
425
433
  if obj.nil?
426
434
  assert_nil(loaded)
427
435
  else