json 2.1.0-java → 2.4.1-java
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.
- checksums.yaml +5 -5
- data/LICENSE +56 -0
- data/lib/json.rb +549 -29
- data/lib/json/add/bigdecimal.rb +2 -2
- data/lib/json/add/complex.rb +2 -3
- data/lib/json/add/ostruct.rb +1 -1
- data/lib/json/add/rational.rb +2 -3
- data/lib/json/add/regexp.rb +2 -2
- data/lib/json/add/set.rb +29 -0
- data/lib/json/common.rb +341 -115
- data/lib/json/ext/generator.jar +0 -0
- data/lib/json/ext/parser.jar +0 -0
- data/lib/json/pure/generator.rb +31 -10
- data/lib/json/pure/parser.rb +31 -5
- data/lib/json/version.rb +1 -1
- data/tests/fixtures/fail29.json +1 -0
- data/tests/fixtures/fail30.json +1 -0
- data/tests/fixtures/fail31.json +1 -0
- data/tests/fixtures/fail32.json +1 -0
- data/tests/json_addition_test.rb +6 -0
- data/tests/json_common_interface_test.rb +47 -4
- data/tests/json_fixtures_test.rb +9 -1
- data/tests/json_generator_test.rb +55 -0
- data/tests/json_parser_test.rb +40 -14
- data/tests/test_helper.rb +3 -7
- metadata +27 -15
data/tests/json_parser_test.rb
CHANGED
@@ -4,6 +4,7 @@ require 'test_helper'
|
|
4
4
|
require 'stringio'
|
5
5
|
require 'tempfile'
|
6
6
|
require 'ostruct'
|
7
|
+
require 'bigdecimal'
|
7
8
|
|
8
9
|
class JSONParserTest < Test::Unit::TestCase
|
9
10
|
include JSON
|
@@ -90,27 +91,27 @@ class JSONParserTest < Test::Unit::TestCase
|
|
90
91
|
assert_raise(JSON::ParserError) { parse('+23') }
|
91
92
|
assert_raise(JSON::ParserError) { parse('.23') }
|
92
93
|
assert_raise(JSON::ParserError) { parse('023') }
|
93
|
-
assert_equal
|
94
|
-
assert_equal
|
95
|
-
assert_equal_float
|
96
|
-
assert_equal_float
|
97
|
-
assert_equal_float
|
98
|
-
assert_equal_float
|
99
|
-
assert_equal_float
|
100
|
-
assert_equal_float
|
101
|
-
assert_equal_float
|
102
|
-
assert_equal_float
|
94
|
+
assert_equal(23, parse('23'))
|
95
|
+
assert_equal(-23, parse('-23'))
|
96
|
+
assert_equal_float(3.141, parse('3.141'))
|
97
|
+
assert_equal_float(-3.141, parse('-3.141'))
|
98
|
+
assert_equal_float(3.141, parse('3141e-3'))
|
99
|
+
assert_equal_float(3.141, parse('3141.1e-3'))
|
100
|
+
assert_equal_float(3.141, parse('3141E-3'))
|
101
|
+
assert_equal_float(3.141, parse('3141.0E-3'))
|
102
|
+
assert_equal_float(-3.141, parse('-3141.0e-3'))
|
103
|
+
assert_equal_float(-3.141, parse('-3141e-3'))
|
103
104
|
assert_raise(ParserError) { parse('NaN') }
|
104
105
|
assert parse('NaN', :allow_nan => true).nan?
|
105
106
|
assert_raise(ParserError) { parse('Infinity') }
|
106
|
-
assert_equal
|
107
|
+
assert_equal(1.0/0, parse('Infinity', :allow_nan => true))
|
107
108
|
assert_raise(ParserError) { parse('-Infinity') }
|
108
|
-
assert_equal
|
109
|
+
assert_equal(-1.0/0, parse('-Infinity', :allow_nan => true))
|
109
110
|
end
|
110
111
|
|
111
112
|
def test_parse_bigdecimals
|
112
|
-
assert_equal(BigDecimal,
|
113
|
-
assert_equal(BigDecimal
|
113
|
+
assert_equal(BigDecimal, JSON.parse('{"foo": 9.01234567890123456789}', decimal_class: BigDecimal)["foo"].class)
|
114
|
+
assert_equal(BigDecimal("0.901234567890123456789E1"),JSON.parse('{"foo": 9.01234567890123456789}', decimal_class: BigDecimal)["foo"] )
|
114
115
|
end
|
115
116
|
|
116
117
|
if Array.method_defined?(:permutation)
|
@@ -217,6 +218,17 @@ class JSONParserTest < Test::Unit::TestCase
|
|
217
218
|
end
|
218
219
|
end
|
219
220
|
|
221
|
+
def test_freeze
|
222
|
+
assert_predicate parse('{}', :freeze => true), :frozen?
|
223
|
+
assert_predicate parse('[]', :freeze => true), :frozen?
|
224
|
+
assert_predicate parse('"foo"', :freeze => true), :frozen?
|
225
|
+
|
226
|
+
if string_deduplication_available?
|
227
|
+
assert_same(-'foo', parse('"foo"', :freeze => true))
|
228
|
+
assert_same(-'foo', parse('{"foo": 1}', :freeze => true).keys.first)
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
220
232
|
def test_parse_comments
|
221
233
|
json = <<EOT
|
222
234
|
{
|
@@ -292,6 +304,10 @@ EOT
|
|
292
304
|
json = '["\\\'"]'
|
293
305
|
data = ["'"]
|
294
306
|
assert_equal data, parse(json)
|
307
|
+
|
308
|
+
json = '["\/"]'
|
309
|
+
data = [ '/' ]
|
310
|
+
assert_equal data, parse(json)
|
295
311
|
end
|
296
312
|
|
297
313
|
class SubArray < Array
|
@@ -463,6 +479,16 @@ EOT
|
|
463
479
|
|
464
480
|
private
|
465
481
|
|
482
|
+
def string_deduplication_available?
|
483
|
+
r1 = rand.to_s
|
484
|
+
r2 = r1.dup
|
485
|
+
begin
|
486
|
+
(-r1).equal?(-r2)
|
487
|
+
rescue NoMethodError
|
488
|
+
false # No String#-@
|
489
|
+
end
|
490
|
+
end
|
491
|
+
|
466
492
|
def assert_equal_float(expected, actual, delta = 1e-2)
|
467
493
|
Array === expected and expected = expected.first
|
468
494
|
Array === actual and actual = actual.first
|
data/tests/test_helper.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
case ENV['JSON']
|
2
2
|
when 'pure'
|
3
|
-
$:.unshift 'lib'
|
3
|
+
$:.unshift File.join(__dir__, '../lib')
|
4
4
|
require 'json/pure'
|
5
5
|
when 'ext'
|
6
|
-
$:.unshift 'ext', 'lib'
|
6
|
+
$:.unshift File.join(__dir__, '../ext'), File.join(__dir__, '../lib')
|
7
7
|
require 'json/ext'
|
8
8
|
else
|
9
|
-
$:.unshift 'ext', 'lib'
|
9
|
+
$:.unshift File.join(__dir__, '../ext'), File.join(__dir__, '../lib')
|
10
10
|
require 'json'
|
11
11
|
end
|
12
12
|
|
@@ -15,7 +15,3 @@ begin
|
|
15
15
|
require 'byebug'
|
16
16
|
rescue LoadError
|
17
17
|
end
|
18
|
-
if ENV['START_SIMPLECOV'].to_i == 1
|
19
|
-
require 'simplecov'
|
20
|
-
SimpleCov.start
|
21
|
-
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1
|
4
|
+
version: 2.4.1
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Daniel Luz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -17,8 +17,8 @@ dependencies:
|
|
17
17
|
- !ruby/object:Gem::Version
|
18
18
|
version: '0'
|
19
19
|
name: rake
|
20
|
-
prerelease: false
|
21
20
|
type: :development
|
21
|
+
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
@@ -27,23 +27,24 @@ dependencies:
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
29
29
|
requirements:
|
30
|
-
- - "
|
30
|
+
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '0'
|
33
33
|
name: test-unit
|
34
|
-
prerelease: false
|
35
34
|
type: :development
|
35
|
+
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
description: A JSON implementation as a JRuby extension.
|
42
42
|
email: dev+ruby@mernen.com
|
43
43
|
executables: []
|
44
44
|
extensions: []
|
45
45
|
extra_rdoc_files: []
|
46
46
|
files:
|
47
|
+
- LICENSE
|
47
48
|
- lib/json.rb
|
48
49
|
- lib/json/add/bigdecimal.rb
|
49
50
|
- lib/json/add/complex.rb
|
@@ -55,6 +56,7 @@ files:
|
|
55
56
|
- lib/json/add/range.rb
|
56
57
|
- lib/json/add/rational.rb
|
57
58
|
- lib/json/add/regexp.rb
|
59
|
+
- lib/json/add/set.rb
|
58
60
|
- lib/json/add/struct.rb
|
59
61
|
- lib/json/add/symbol.rb
|
60
62
|
- lib/json/add/time.rb
|
@@ -83,7 +85,11 @@ files:
|
|
83
85
|
- tests/fixtures/fail25.json
|
84
86
|
- tests/fixtures/fail27.json
|
85
87
|
- tests/fixtures/fail28.json
|
88
|
+
- tests/fixtures/fail29.json
|
86
89
|
- tests/fixtures/fail3.json
|
90
|
+
- tests/fixtures/fail30.json
|
91
|
+
- tests/fixtures/fail31.json
|
92
|
+
- tests/fixtures/fail32.json
|
87
93
|
- tests/fixtures/fail4.json
|
88
94
|
- tests/fixtures/fail5.json
|
89
95
|
- tests/fixtures/fail6.json
|
@@ -108,10 +114,16 @@ files:
|
|
108
114
|
- tests/json_parser_test.rb
|
109
115
|
- tests/json_string_matching_test.rb
|
110
116
|
- tests/test_helper.rb
|
111
|
-
homepage: http://
|
117
|
+
homepage: http://flori.github.com/json
|
112
118
|
licenses:
|
113
119
|
- Ruby
|
114
|
-
metadata:
|
120
|
+
metadata:
|
121
|
+
bug_tracker_uri: https://github.com/flori/json/issues
|
122
|
+
changelog_uri: https://github.com/flori/json/blob/master/CHANGES.md
|
123
|
+
documentation_uri: http://flori.github.io/json/doc/index.html
|
124
|
+
homepage_uri: http://flori.github.io/json/
|
125
|
+
source_code_uri: https://github.com/flori/json
|
126
|
+
wiki_uri: https://github.com/flori/json/wiki
|
115
127
|
post_install_message:
|
116
128
|
rdoc_options: []
|
117
129
|
require_paths:
|
@@ -120,16 +132,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
120
132
|
requirements:
|
121
133
|
- - ">="
|
122
134
|
- !ruby/object:Gem::Version
|
123
|
-
version: '0'
|
135
|
+
version: '2.0'
|
124
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
137
|
requirements:
|
126
138
|
- - ">="
|
127
139
|
- !ruby/object:Gem::Version
|
128
140
|
version: '0'
|
129
141
|
requirements: []
|
130
|
-
|
131
|
-
rubygems_version: 2.6.8
|
142
|
+
rubygems_version: 3.0.6
|
132
143
|
signing_key:
|
133
144
|
specification_version: 4
|
134
|
-
summary: JSON
|
135
|
-
test_files:
|
145
|
+
summary: JSON Implementation for Ruby
|
146
|
+
test_files:
|
147
|
+
- tests/test_helper.rb
|