json 2.5.1-java → 2.6.2-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 +4 -4
 - data/lib/json/ext/generator.jar +0 -0
 - data/lib/json/ext/parser.jar +0 -0
 - data/lib/json/pure/parser.rb +1 -1
 - data/lib/json/version.rb +1 -1
 - data/lib/json.rb +1 -1
 - metadata +6 -85
 - data/tests/fixtures/fail10.json +0 -1
 - data/tests/fixtures/fail11.json +0 -1
 - data/tests/fixtures/fail12.json +0 -1
 - data/tests/fixtures/fail13.json +0 -1
 - data/tests/fixtures/fail14.json +0 -1
 - data/tests/fixtures/fail18.json +0 -1
 - data/tests/fixtures/fail19.json +0 -1
 - data/tests/fixtures/fail2.json +0 -1
 - data/tests/fixtures/fail20.json +0 -1
 - data/tests/fixtures/fail21.json +0 -1
 - data/tests/fixtures/fail22.json +0 -1
 - data/tests/fixtures/fail23.json +0 -1
 - data/tests/fixtures/fail24.json +0 -1
 - data/tests/fixtures/fail25.json +0 -1
 - data/tests/fixtures/fail27.json +0 -2
 - data/tests/fixtures/fail28.json +0 -2
 - data/tests/fixtures/fail29.json +0 -1
 - data/tests/fixtures/fail3.json +0 -1
 - data/tests/fixtures/fail30.json +0 -1
 - data/tests/fixtures/fail31.json +0 -1
 - data/tests/fixtures/fail32.json +0 -1
 - data/tests/fixtures/fail4.json +0 -1
 - data/tests/fixtures/fail5.json +0 -1
 - data/tests/fixtures/fail6.json +0 -1
 - data/tests/fixtures/fail7.json +0 -1
 - data/tests/fixtures/fail8.json +0 -1
 - data/tests/fixtures/fail9.json +0 -1
 - data/tests/fixtures/obsolete_fail1.json +0 -1
 - data/tests/fixtures/pass1.json +0 -56
 - data/tests/fixtures/pass15.json +0 -1
 - data/tests/fixtures/pass16.json +0 -1
 - data/tests/fixtures/pass17.json +0 -1
 - data/tests/fixtures/pass2.json +0 -1
 - data/tests/fixtures/pass26.json +0 -1
 - data/tests/fixtures/pass3.json +0 -6
 - data/tests/json_addition_test.rb +0 -199
 - data/tests/json_common_interface_test.rb +0 -169
 - data/tests/json_encoding_test.rb +0 -107
 - data/tests/json_ext_parser_test.rb +0 -15
 - data/tests/json_fixtures_test.rb +0 -40
 - data/tests/json_generator_test.rb +0 -399
 - data/tests/json_generic_object_test.rb +0 -82
 - data/tests/json_parser_test.rb +0 -497
 - data/tests/json_string_matching_test.rb +0 -38
 - data/tests/lib/core_assertions.rb +0 -763
 - data/tests/lib/envutil.rb +0 -365
 - data/tests/lib/find_executable.rb +0 -22
 - data/tests/lib/helper.rb +0 -4
 - data/tests/ractor_test.rb +0 -30
 - data/tests/test_helper.rb +0 -17
 
| 
         @@ -1,169 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #frozen_string_literal: false
         
     | 
| 
       2 
     | 
    
         
            -
            require 'test_helper'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'stringio'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'tempfile'
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            class JSONCommonInterfaceTest < Test::Unit::TestCase
         
     | 
| 
       7 
     | 
    
         
            -
              include JSON
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              def setup
         
     | 
| 
       10 
     | 
    
         
            -
                @hash = {
         
     | 
| 
       11 
     | 
    
         
            -
                  'a' => 2,
         
     | 
| 
       12 
     | 
    
         
            -
                  'b' => 3.141,
         
     | 
| 
       13 
     | 
    
         
            -
                  'c' => 'c',
         
     | 
| 
       14 
     | 
    
         
            -
                  'd' => [ 1, "b", 3.14 ],
         
     | 
| 
       15 
     | 
    
         
            -
                  'e' => { 'foo' => 'bar' },
         
     | 
| 
       16 
     | 
    
         
            -
                  'g' => "\"\0\037",
         
     | 
| 
       17 
     | 
    
         
            -
                  'h' => 1000.0,
         
     | 
| 
       18 
     | 
    
         
            -
                  'i' => 0.001
         
     | 
| 
       19 
     | 
    
         
            -
                }
         
     | 
| 
       20 
     | 
    
         
            -
                @json = '{"a":2,"b":3.141,"c":"c","d":[1,"b",3.14],"e":{"foo":"bar"},'\
         
     | 
| 
       21 
     | 
    
         
            -
                  '"g":"\\"\\u0000\\u001f","h":1000.0,"i":0.001}'
         
     | 
| 
       22 
     | 
    
         
            -
              end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
              def test_index
         
     | 
| 
       25 
     | 
    
         
            -
                assert_equal @json, JSON[@hash]
         
     | 
| 
       26 
     | 
    
         
            -
                assert_equal @hash, JSON[@json]
         
     | 
| 
       27 
     | 
    
         
            -
              end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
              def test_parser
         
     | 
| 
       30 
     | 
    
         
            -
                assert_match(/::Parser\z/, JSON.parser.name)
         
     | 
| 
       31 
     | 
    
         
            -
              end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
              def test_generator
         
     | 
| 
       34 
     | 
    
         
            -
                assert_match(/::Generator\z/, JSON.generator.name)
         
     | 
| 
       35 
     | 
    
         
            -
              end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
              def test_state
         
     | 
| 
       38 
     | 
    
         
            -
                assert_match(/::Generator::State\z/, JSON.state.name)
         
     | 
| 
       39 
     | 
    
         
            -
              end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
              def test_create_id
         
     | 
| 
       42 
     | 
    
         
            -
                assert_equal 'json_class', JSON.create_id
         
     | 
| 
       43 
     | 
    
         
            -
                JSON.create_id = 'foo_bar'
         
     | 
| 
       44 
     | 
    
         
            -
                assert_equal 'foo_bar', JSON.create_id
         
     | 
| 
       45 
     | 
    
         
            -
              ensure
         
     | 
| 
       46 
     | 
    
         
            -
                JSON.create_id = 'json_class'
         
     | 
| 
       47 
     | 
    
         
            -
              end
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
              def test_deep_const_get
         
     | 
| 
       50 
     | 
    
         
            -
                assert_raise(ArgumentError) { JSON.deep_const_get('Nix::Da') }
         
     | 
| 
       51 
     | 
    
         
            -
                assert_equal File::SEPARATOR, JSON.deep_const_get('File::SEPARATOR')
         
     | 
| 
       52 
     | 
    
         
            -
              end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
              def test_parse
         
     | 
| 
       55 
     | 
    
         
            -
                assert_equal [ 1, 2, 3, ], JSON.parse('[ 1, 2, 3 ]')
         
     | 
| 
       56 
     | 
    
         
            -
              end
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
              def test_parse_bang
         
     | 
| 
       59 
     | 
    
         
            -
                assert_equal [ 1, Infinity, 3, ], JSON.parse!('[ 1, Infinity, 3 ]')
         
     | 
| 
       60 
     | 
    
         
            -
              end
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
              def test_generate
         
     | 
| 
       63 
     | 
    
         
            -
                assert_equal '[1,2,3]', JSON.generate([ 1, 2, 3 ])
         
     | 
| 
       64 
     | 
    
         
            -
              end
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
              def test_fast_generate
         
     | 
| 
       67 
     | 
    
         
            -
                assert_equal '[1,2,3]', JSON.generate([ 1, 2, 3 ])
         
     | 
| 
       68 
     | 
    
         
            -
              end
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
              def test_pretty_generate
         
     | 
| 
       71 
     | 
    
         
            -
                assert_equal "[\n  1,\n  2,\n  3\n]", JSON.pretty_generate([ 1, 2, 3 ])
         
     | 
| 
       72 
     | 
    
         
            -
              end
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
              def test_load
         
     | 
| 
       75 
     | 
    
         
            -
                assert_equal @hash, JSON.load(@json)
         
     | 
| 
       76 
     | 
    
         
            -
                tempfile = Tempfile.open('@json')
         
     | 
| 
       77 
     | 
    
         
            -
                tempfile.write @json
         
     | 
| 
       78 
     | 
    
         
            -
                tempfile.rewind
         
     | 
| 
       79 
     | 
    
         
            -
                assert_equal @hash, JSON.load(tempfile)
         
     | 
| 
       80 
     | 
    
         
            -
                stringio = StringIO.new(@json)
         
     | 
| 
       81 
     | 
    
         
            -
                stringio.rewind
         
     | 
| 
       82 
     | 
    
         
            -
                assert_equal @hash, JSON.load(stringio)
         
     | 
| 
       83 
     | 
    
         
            -
                assert_equal nil, JSON.load(nil)
         
     | 
| 
       84 
     | 
    
         
            -
                assert_equal nil, JSON.load('')
         
     | 
| 
       85 
     | 
    
         
            -
              ensure
         
     | 
| 
       86 
     | 
    
         
            -
                tempfile.close!
         
     | 
| 
       87 
     | 
    
         
            -
              end
         
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
              def test_load_with_options
         
     | 
| 
       90 
     | 
    
         
            -
                json  = '{ "foo": NaN }'
         
     | 
| 
       91 
     | 
    
         
            -
                assert JSON.load(json, nil, :allow_nan => true)['foo'].nan?
         
     | 
| 
       92 
     | 
    
         
            -
              end
         
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
              def test_load_null
         
     | 
| 
       95 
     | 
    
         
            -
                assert_equal nil, JSON.load(nil, nil, :allow_blank => true)
         
     | 
| 
       96 
     | 
    
         
            -
                assert_raise(TypeError) { JSON.load(nil, nil, :allow_blank => false) }
         
     | 
| 
       97 
     | 
    
         
            -
                assert_raise(JSON::ParserError) { JSON.load('', nil, :allow_blank => false) }
         
     | 
| 
       98 
     | 
    
         
            -
              end
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
              def test_dump
         
     | 
| 
       101 
     | 
    
         
            -
                too_deep = '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]'
         
     | 
| 
       102 
     | 
    
         
            -
                assert_equal too_deep, dump(eval(too_deep))
         
     | 
| 
       103 
     | 
    
         
            -
                assert_kind_of String, Marshal.dump(eval(too_deep))
         
     | 
| 
       104 
     | 
    
         
            -
                assert_raise(ArgumentError) { dump(eval(too_deep), 100) }
         
     | 
| 
       105 
     | 
    
         
            -
                assert_raise(ArgumentError) { Marshal.dump(eval(too_deep), 100) }
         
     | 
| 
       106 
     | 
    
         
            -
                assert_equal too_deep, dump(eval(too_deep), 101)
         
     | 
| 
       107 
     | 
    
         
            -
                assert_kind_of String, Marshal.dump(eval(too_deep), 101)
         
     | 
| 
       108 
     | 
    
         
            -
                output = StringIO.new
         
     | 
| 
       109 
     | 
    
         
            -
                dump(eval(too_deep), output)
         
     | 
| 
       110 
     | 
    
         
            -
                assert_equal too_deep, output.string
         
     | 
| 
       111 
     | 
    
         
            -
                output = StringIO.new
         
     | 
| 
       112 
     | 
    
         
            -
                dump(eval(too_deep), output, 101)
         
     | 
| 
       113 
     | 
    
         
            -
                assert_equal too_deep, output.string
         
     | 
| 
       114 
     | 
    
         
            -
              end
         
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
       116 
     | 
    
         
            -
              def test_dump_should_modify_defaults
         
     | 
| 
       117 
     | 
    
         
            -
                max_nesting = JSON.dump_default_options[:max_nesting]
         
     | 
| 
       118 
     | 
    
         
            -
                dump([], StringIO.new, 10)
         
     | 
| 
       119 
     | 
    
         
            -
                assert_equal max_nesting, JSON.dump_default_options[:max_nesting]
         
     | 
| 
       120 
     | 
    
         
            -
              end
         
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
       122 
     | 
    
         
            -
              def test_JSON
         
     | 
| 
       123 
     | 
    
         
            -
                assert_equal @json, JSON(@hash)
         
     | 
| 
       124 
     | 
    
         
            -
                assert_equal @hash, JSON(@json)
         
     | 
| 
       125 
     | 
    
         
            -
              end
         
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
       127 
     | 
    
         
            -
              def test_load_file
         
     | 
| 
       128 
     | 
    
         
            -
                test_load_shared(:load_file)
         
     | 
| 
       129 
     | 
    
         
            -
              end
         
     | 
| 
       130 
     | 
    
         
            -
             
     | 
| 
       131 
     | 
    
         
            -
              def test_load_file!
         
     | 
| 
       132 
     | 
    
         
            -
                test_load_shared(:load_file!)
         
     | 
| 
       133 
     | 
    
         
            -
              end
         
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
       135 
     | 
    
         
            -
              def test_load_file_with_option
         
     | 
| 
       136 
     | 
    
         
            -
                test_load_file_with_option_shared(:load_file)
         
     | 
| 
       137 
     | 
    
         
            -
              end
         
     | 
| 
       138 
     | 
    
         
            -
             
     | 
| 
       139 
     | 
    
         
            -
              def test_load_file_with_option!
         
     | 
| 
       140 
     | 
    
         
            -
                test_load_file_with_option_shared(:load_file!)
         
     | 
| 
       141 
     | 
    
         
            -
              end
         
     | 
| 
       142 
     | 
    
         
            -
             
     | 
| 
       143 
     | 
    
         
            -
              private
         
     | 
| 
       144 
     | 
    
         
            -
             
     | 
| 
       145 
     | 
    
         
            -
              def test_load_shared(method_name)
         
     | 
| 
       146 
     | 
    
         
            -
                temp_file_containing(@json) do |filespec|
         
     | 
| 
       147 
     | 
    
         
            -
                  assert_equal JSON.public_send(method_name, filespec), @hash
         
     | 
| 
       148 
     | 
    
         
            -
                end
         
     | 
| 
       149 
     | 
    
         
            -
              end
         
     | 
| 
       150 
     | 
    
         
            -
             
     | 
| 
       151 
     | 
    
         
            -
              def test_load_file_with_option_shared(method_name)
         
     | 
| 
       152 
     | 
    
         
            -
                temp_file_containing(@json) do |filespec|
         
     | 
| 
       153 
     | 
    
         
            -
                  parsed_object = JSON.public_send(method_name, filespec, symbolize_names: true)
         
     | 
| 
       154 
     | 
    
         
            -
                  key_classes = parsed_object.keys.map(&:class)
         
     | 
| 
       155 
     | 
    
         
            -
                  assert_include(key_classes, Symbol)
         
     | 
| 
       156 
     | 
    
         
            -
                  assert_not_include(key_classes, String)
         
     | 
| 
       157 
     | 
    
         
            -
                end
         
     | 
| 
       158 
     | 
    
         
            -
              end
         
     | 
| 
       159 
     | 
    
         
            -
             
     | 
| 
       160 
     | 
    
         
            -
              def temp_file_containing(text, file_prefix = '')
         
     | 
| 
       161 
     | 
    
         
            -
                raise "This method must be called with a code block." unless block_given?
         
     | 
| 
       162 
     | 
    
         
            -
             
     | 
| 
       163 
     | 
    
         
            -
                Tempfile.create(file_prefix) do |file|
         
     | 
| 
       164 
     | 
    
         
            -
                  file << text
         
     | 
| 
       165 
     | 
    
         
            -
                  file.close
         
     | 
| 
       166 
     | 
    
         
            -
                  yield file.path
         
     | 
| 
       167 
     | 
    
         
            -
                end
         
     | 
| 
       168 
     | 
    
         
            -
              end
         
     | 
| 
       169 
     | 
    
         
            -
            end
         
     | 
    
        data/tests/json_encoding_test.rb
    DELETED
    
    | 
         @@ -1,107 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
            #frozen_string_literal: false
         
     | 
| 
       3 
     | 
    
         
            -
            require 'test_helper'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            class JSONEncodingTest < Test::Unit::TestCase
         
     | 
| 
       6 
     | 
    
         
            -
              include JSON
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
              def setup
         
     | 
| 
       9 
     | 
    
         
            -
                @utf_8      = '"© ≠ €!"'
         
     | 
| 
       10 
     | 
    
         
            -
                @ascii_8bit = @utf_8.dup.force_encoding('ascii-8bit')
         
     | 
| 
       11 
     | 
    
         
            -
                @parsed     = "© ≠ €!"
         
     | 
| 
       12 
     | 
    
         
            -
                @generated  = '"\u00a9 \u2260 \u20ac!"'
         
     | 
| 
       13 
     | 
    
         
            -
                if String.method_defined?(:encode)
         
     | 
| 
       14 
     | 
    
         
            -
                  @utf_16_data = @parsed.encode('utf-16be', 'utf-8')
         
     | 
| 
       15 
     | 
    
         
            -
                  @utf_16be = @utf_8.encode('utf-16be', 'utf-8')
         
     | 
| 
       16 
     | 
    
         
            -
                  @utf_16le = @utf_8.encode('utf-16le', 'utf-8')
         
     | 
| 
       17 
     | 
    
         
            -
                  @utf_32be = @utf_8.encode('utf-32be', 'utf-8')
         
     | 
| 
       18 
     | 
    
         
            -
                  @utf_32le = @utf_8.encode('utf-32le', 'utf-8')
         
     | 
| 
       19 
     | 
    
         
            -
                else
         
     | 
| 
       20 
     | 
    
         
            -
                  require 'iconv'
         
     | 
| 
       21 
     | 
    
         
            -
                  @utf_16_data, = Iconv.iconv('utf-16be', 'utf-8', @parsed)
         
     | 
| 
       22 
     | 
    
         
            -
                  @utf_16be, = Iconv.iconv('utf-16be', 'utf-8', @utf_8)
         
     | 
| 
       23 
     | 
    
         
            -
                  @utf_16le, = Iconv.iconv('utf-16le', 'utf-8', @utf_8)
         
     | 
| 
       24 
     | 
    
         
            -
                  @utf_32be, = Iconv.iconv('utf-32be', 'utf-8', @utf_8)
         
     | 
| 
       25 
     | 
    
         
            -
                  @utf_32le, = Iconv.iconv('utf-32le', 'utf-8', @utf_8)
         
     | 
| 
       26 
     | 
    
         
            -
                end
         
     | 
| 
       27 
     | 
    
         
            -
              end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
              def test_parse
         
     | 
| 
       30 
     | 
    
         
            -
                assert_equal @parsed, JSON.parse(@ascii_8bit)
         
     | 
| 
       31 
     | 
    
         
            -
                assert_equal @parsed, JSON.parse(@utf_8)
         
     | 
| 
       32 
     | 
    
         
            -
                assert_equal @parsed, JSON.parse(@utf_16be)
         
     | 
| 
       33 
     | 
    
         
            -
                assert_equal @parsed, JSON.parse(@utf_16le)
         
     | 
| 
       34 
     | 
    
         
            -
                assert_equal @parsed, JSON.parse(@utf_32be)
         
     | 
| 
       35 
     | 
    
         
            -
                assert_equal @parsed, JSON.parse(@utf_32le)
         
     | 
| 
       36 
     | 
    
         
            -
              end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
              def test_generate
         
     | 
| 
       39 
     | 
    
         
            -
                assert_equal @generated, JSON.generate(@parsed, :ascii_only => true)
         
     | 
| 
       40 
     | 
    
         
            -
                assert_equal @generated, JSON.generate(@utf_16_data, :ascii_only => true)
         
     | 
| 
       41 
     | 
    
         
            -
              end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
              def test_unicode
         
     | 
| 
       44 
     | 
    
         
            -
                assert_equal '""', ''.to_json
         
     | 
| 
       45 
     | 
    
         
            -
                assert_equal '"\\b"', "\b".to_json
         
     | 
| 
       46 
     | 
    
         
            -
                assert_equal '"\u0001"', 0x1.chr.to_json
         
     | 
| 
       47 
     | 
    
         
            -
                assert_equal '"\u001f"', 0x1f.chr.to_json
         
     | 
| 
       48 
     | 
    
         
            -
                assert_equal '" "', ' '.to_json
         
     | 
| 
       49 
     | 
    
         
            -
                assert_equal "\"#{0x7f.chr}\"", 0x7f.chr.to_json
         
     | 
| 
       50 
     | 
    
         
            -
                utf8 = [ "© ≠ €! \01" ]
         
     | 
| 
       51 
     | 
    
         
            -
                json = '["© ≠ €! \u0001"]'
         
     | 
| 
       52 
     | 
    
         
            -
                assert_equal json, utf8.to_json(:ascii_only => false)
         
     | 
| 
       53 
     | 
    
         
            -
                assert_equal utf8, parse(json)
         
     | 
| 
       54 
     | 
    
         
            -
                json = '["\u00a9 \u2260 \u20ac! \u0001"]'
         
     | 
| 
       55 
     | 
    
         
            -
                assert_equal json, utf8.to_json(:ascii_only => true)
         
     | 
| 
       56 
     | 
    
         
            -
                assert_equal utf8, parse(json)
         
     | 
| 
       57 
     | 
    
         
            -
                utf8 = ["\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212"]
         
     | 
| 
       58 
     | 
    
         
            -
                json = "[\"\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212\"]"
         
     | 
| 
       59 
     | 
    
         
            -
                assert_equal utf8, parse(json)
         
     | 
| 
       60 
     | 
    
         
            -
                assert_equal json, utf8.to_json(:ascii_only => false)
         
     | 
| 
       61 
     | 
    
         
            -
                utf8 = ["\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212"]
         
     | 
| 
       62 
     | 
    
         
            -
                assert_equal utf8, parse(json)
         
     | 
| 
       63 
     | 
    
         
            -
                json = "[\"\\u3042\\u3044\\u3046\\u3048\\u304a\"]"
         
     | 
| 
       64 
     | 
    
         
            -
                assert_equal json, utf8.to_json(:ascii_only => true)
         
     | 
| 
       65 
     | 
    
         
            -
                assert_equal utf8, parse(json)
         
     | 
| 
       66 
     | 
    
         
            -
                utf8 = ['საქართველო']
         
     | 
| 
       67 
     | 
    
         
            -
                json = '["საქართველო"]'
         
     | 
| 
       68 
     | 
    
         
            -
                assert_equal json, utf8.to_json(:ascii_only => false)
         
     | 
| 
       69 
     | 
    
         
            -
                json = "[\"\\u10e1\\u10d0\\u10e5\\u10d0\\u10e0\\u10d7\\u10d5\\u10d4\\u10da\\u10dd\"]"
         
     | 
| 
       70 
     | 
    
         
            -
                assert_equal json, utf8.to_json(:ascii_only => true)
         
     | 
| 
       71 
     | 
    
         
            -
                assert_equal utf8, parse(json)
         
     | 
| 
       72 
     | 
    
         
            -
                assert_equal '["Ã"]', generate(["Ã"], :ascii_only => false)
         
     | 
| 
       73 
     | 
    
         
            -
                assert_equal '["\\u00c3"]', generate(["Ã"], :ascii_only => true)
         
     | 
| 
       74 
     | 
    
         
            -
                assert_equal ["€"], parse('["\u20ac"]')
         
     | 
| 
       75 
     | 
    
         
            -
                utf8 = ["\xf0\xa0\x80\x81"]
         
     | 
| 
       76 
     | 
    
         
            -
                json = "[\"\xf0\xa0\x80\x81\"]"
         
     | 
| 
       77 
     | 
    
         
            -
                assert_equal json, generate(utf8, :ascii_only => false)
         
     | 
| 
       78 
     | 
    
         
            -
                assert_equal utf8, parse(json)
         
     | 
| 
       79 
     | 
    
         
            -
                json = '["\ud840\udc01"]'
         
     | 
| 
       80 
     | 
    
         
            -
                assert_equal json, generate(utf8, :ascii_only => true)
         
     | 
| 
       81 
     | 
    
         
            -
                assert_equal utf8, parse(json)
         
     | 
| 
       82 
     | 
    
         
            -
                assert_raise(JSON::ParserError) { parse('"\u"') }
         
     | 
| 
       83 
     | 
    
         
            -
                assert_raise(JSON::ParserError) { parse('"\ud800"') }
         
     | 
| 
       84 
     | 
    
         
            -
              end
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
              def test_chars
         
     | 
| 
       87 
     | 
    
         
            -
                (0..0x7f).each do |i|
         
     | 
| 
       88 
     | 
    
         
            -
                  json = '["\u%04x"]' % i
         
     | 
| 
       89 
     | 
    
         
            -
                  if RUBY_VERSION >= "1.9."
         
     | 
| 
       90 
     | 
    
         
            -
                    i = i.chr
         
     | 
| 
       91 
     | 
    
         
            -
                  end
         
     | 
| 
       92 
     | 
    
         
            -
                  assert_equal i, parse(json).first[0]
         
     | 
| 
       93 
     | 
    
         
            -
                  if i == ?\b
         
     | 
| 
       94 
     | 
    
         
            -
                    generated = generate(["" << i])
         
     | 
| 
       95 
     | 
    
         
            -
                    assert '["\b"]' == generated || '["\10"]' == generated
         
     | 
| 
       96 
     | 
    
         
            -
                  elsif [?\n, ?\r, ?\t, ?\f].include?(i)
         
     | 
| 
       97 
     | 
    
         
            -
                    assert_equal '[' << ('' << i).dump << ']', generate(["" << i])
         
     | 
| 
       98 
     | 
    
         
            -
                  elsif i.chr < 0x20.chr
         
     | 
| 
       99 
     | 
    
         
            -
                    assert_equal json, generate(["" << i])
         
     | 
| 
       100 
     | 
    
         
            -
                  end
         
     | 
| 
       101 
     | 
    
         
            -
                end
         
     | 
| 
       102 
     | 
    
         
            -
                assert_raise(JSON::GeneratorError) do
         
     | 
| 
       103 
     | 
    
         
            -
                  generate(["\x80"], :ascii_only => true)
         
     | 
| 
       104 
     | 
    
         
            -
                end
         
     | 
| 
       105 
     | 
    
         
            -
                assert_equal "\302\200", parse('["\u0080"]').first
         
     | 
| 
       106 
     | 
    
         
            -
              end
         
     | 
| 
       107 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,15 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #frozen_string_literal: false
         
     | 
| 
       2 
     | 
    
         
            -
            require 'test_helper'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class JSONExtParserTest < Test::Unit::TestCase
         
     | 
| 
       5 
     | 
    
         
            -
              if defined?(JSON::Ext::Parser)
         
     | 
| 
       6 
     | 
    
         
            -
                def test_allocate
         
     | 
| 
       7 
     | 
    
         
            -
                  parser = JSON::Ext::Parser.new("{}")
         
     | 
| 
       8 
     | 
    
         
            -
                  assert_raise(TypeError, '[ruby-core:35079]') do
         
     | 
| 
       9 
     | 
    
         
            -
                    parser.__send__(:initialize, "{}")
         
     | 
| 
       10 
     | 
    
         
            -
                  end
         
     | 
| 
       11 
     | 
    
         
            -
                  parser = JSON::Ext::Parser.allocate
         
     | 
| 
       12 
     | 
    
         
            -
                  assert_raise(TypeError, '[ruby-core:35079]') { parser.source }
         
     | 
| 
       13 
     | 
    
         
            -
                end
         
     | 
| 
       14 
     | 
    
         
            -
              end
         
     | 
| 
       15 
     | 
    
         
            -
            end
         
     | 
    
        data/tests/json_fixtures_test.rb
    DELETED
    
    | 
         @@ -1,40 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #frozen_string_literal: false
         
     | 
| 
       2 
     | 
    
         
            -
            require 'test_helper'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class JSONFixturesTest < Test::Unit::TestCase
         
     | 
| 
       5 
     | 
    
         
            -
              def setup
         
     | 
| 
       6 
     | 
    
         
            -
                fixtures = File.join(File.dirname(__FILE__), 'fixtures/{fail,pass}*.json')
         
     | 
| 
       7 
     | 
    
         
            -
                passed, failed = Dir[fixtures].partition { |f| f['pass'] }
         
     | 
| 
       8 
     | 
    
         
            -
                @passed = passed.inject([]) { |a, f| a << [ f, File.read(f) ] }.sort
         
     | 
| 
       9 
     | 
    
         
            -
                @failed = failed.inject([]) { |a, f| a << [ f, File.read(f) ] }.sort
         
     | 
| 
       10 
     | 
    
         
            -
              end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
              def test_passing
         
     | 
| 
       13 
     | 
    
         
            -
                verbose_bak, $VERBOSE = $VERBOSE, nil
         
     | 
| 
       14 
     | 
    
         
            -
                for name, source in @passed
         
     | 
| 
       15 
     | 
    
         
            -
                  begin
         
     | 
| 
       16 
     | 
    
         
            -
                    assert JSON.parse(source),
         
     | 
| 
       17 
     | 
    
         
            -
                      "Did not pass for fixture '#{name}': #{source.inspect}"
         
     | 
| 
       18 
     | 
    
         
            -
                  rescue => e
         
     | 
| 
       19 
     | 
    
         
            -
                    warn "\nCaught #{e.class}(#{e}) for fixture '#{name}': #{source.inspect}\n#{e.backtrace * "\n"}"
         
     | 
| 
       20 
     | 
    
         
            -
                    raise e
         
     | 
| 
       21 
     | 
    
         
            -
                  end
         
     | 
| 
       22 
     | 
    
         
            -
                end
         
     | 
| 
       23 
     | 
    
         
            -
              ensure
         
     | 
| 
       24 
     | 
    
         
            -
                $VERBOSE = verbose_bak
         
     | 
| 
       25 
     | 
    
         
            -
              end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
              def test_failing
         
     | 
| 
       28 
     | 
    
         
            -
                for name, source in @failed
         
     | 
| 
       29 
     | 
    
         
            -
                  assert_raise(JSON::ParserError, JSON::NestingError,
         
     | 
| 
       30 
     | 
    
         
            -
                    "Did not fail for fixture '#{name}': #{source.inspect}") do
         
     | 
| 
       31 
     | 
    
         
            -
                    JSON.parse(source)
         
     | 
| 
       32 
     | 
    
         
            -
                  end
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
              end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
              def test_sanity
         
     | 
| 
       37 
     | 
    
         
            -
                assert(@passed.size > 5)
         
     | 
| 
       38 
     | 
    
         
            -
                assert(@failed.size > 20)
         
     | 
| 
       39 
     | 
    
         
            -
              end
         
     | 
| 
       40 
     | 
    
         
            -
            end
         
     |