From 7c8f9603b1dcacb7f04b559dadac905e167a5cc1 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 31 Jan 2024 10:50:06 +0900 Subject: [flori/json] Make OpenStruct support as optional https://github.com/flori/json/commit/202ffe2335 --- test/json/json_addition_test.rb | 2 +- test/json/json_generic_object_test.rb | 2 +- test/json/json_parser_test.rb | 71 +++++++++++++++++++---------------- 3 files changed, 40 insertions(+), 35 deletions(-) (limited to 'test') diff --git a/test/json/json_addition_test.rb b/test/json/json_addition_test.rb index 2877bef7d8..3a7a58176a 100644 --- a/test/json/json_addition_test.rb +++ b/test/json/json_addition_test.rb @@ -190,7 +190,7 @@ class JSONAdditionTest < Test::Unit::TestCase # XXX this won't work; o.foo = { :bar => true } o.foo = { 'bar' => true } assert_equal o, parse(JSON(o), :create_additions => true) - end + end if defined?(::OpenStruct) def test_set s = Set.new([:a, :b, :c, :a]) diff --git a/test/json/json_generic_object_test.rb b/test/json/json_generic_object_test.rb index c4d391208c..d6d7e30816 100644 --- a/test/json/json_generic_object_test.rb +++ b/test/json/json_generic_object_test.rb @@ -79,4 +79,4 @@ class JSONGenericObjectTest < Test::Unit::TestCase ensure JSON::GenericObject.json_creatable = false end -end +end if defined?(JSON::GenericObject) diff --git a/test/json/json_parser_test.rb b/test/json/json_parser_test.rb index cc9a74a95b..49c7c8565d 100644 --- a/test/json/json_parser_test.rb +++ b/test/json/json_parser_test.rb @@ -3,7 +3,10 @@ require_relative 'test_helper' require 'stringio' require 'tempfile' -require 'ostruct' +begin + require 'ostruct' +rescue LoadError +end begin require 'bigdecimal' rescue LoadError @@ -412,21 +415,6 @@ EOT end end - class SubOpenStruct < OpenStruct - def [](k) - __send__(k) - end - - def []=(k, v) - @item_set = true - __send__("#{k}=", v) - end - - def item_set? - @item_set - end - end - def test_parse_object_custom_hash_derived_class res = parse('{"foo":"bar"}', :object_class => SubHash) assert_equal({"foo" => "bar"}, res) @@ -434,24 +422,41 @@ EOT assert res.item_set? end - def test_parse_object_custom_non_hash_derived_class - res = parse('{"foo":"bar"}', :object_class => SubOpenStruct) - assert_equal "bar", res.foo - assert_equal(SubOpenStruct, res.class) - assert res.item_set? - end + if defined?(::OpenStruct) + class SubOpenStruct < OpenStruct + def [](k) + __send__(k) + end - def test_parse_generic_object - res = parse( - '{"foo":"bar", "baz":{}}', - :object_class => JSON::GenericObject - ) - assert_equal(JSON::GenericObject, res.class) - assert_equal "bar", res.foo - assert_equal "bar", res["foo"] - assert_equal "bar", res[:foo] - assert_equal "bar", res.to_hash[:foo] - assert_equal(JSON::GenericObject, res.baz.class) + def []=(k, v) + @item_set = true + __send__("#{k}=", v) + end + + def item_set? + @item_set + end + end + + def test_parse_object_custom_non_hash_derived_class + res = parse('{"foo":"bar"}', :object_class => SubOpenStruct) + assert_equal "bar", res.foo + assert_equal(SubOpenStruct, res.class) + assert res.item_set? + end + + def test_parse_generic_object + res = parse( + '{"foo":"bar", "baz":{}}', + :object_class => JSON::GenericObject + ) + assert_equal(JSON::GenericObject, res.class) + assert_equal "bar", res.foo + assert_equal "bar", res["foo"] + assert_equal "bar", res[:foo] + assert_equal "bar", res.to_hash[:foo] + assert_equal(JSON::GenericObject, res.baz.class) + end end def test_generate_core_subclasses_with_new_to_json -- cgit v1.2.3