From f865148e1926f838cac8b4449abfc5d402d0d015 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Barri=C3=A9?= Date: Wed, 5 Feb 2025 12:40:07 +0100 Subject: Fix JSON::Coder to call as_json proc for NaN and Infinity Co-authored-by: Jean Boussier --- test/json/json_coder_test.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'test/json/json_coder_test.rb') diff --git a/test/json/json_coder_test.rb b/test/json/json_coder_test.rb index 37331c4eb8..9861181910 100755 --- a/test/json/json_coder_test.rb +++ b/test/json/json_coder_test.rb @@ -35,4 +35,19 @@ class JSONCoderTest < Test::Unit::TestCase coder = JSON::Coder.new(symbolize_names: true) assert_equal({a: 1}, coder.load('{"a":1}')) end + + def test_json_coder_dump_NaN_or_Infinity + coder = JSON::Coder.new(&:inspect) + assert_equal "NaN", coder.load(coder.dump(Float::NAN)) + assert_equal "Infinity", coder.load(coder.dump(Float::INFINITY)) + assert_equal "-Infinity", coder.load(coder.dump(-Float::INFINITY)) + end + + def test_json_coder_dump_NaN_or_Infinity_loop + coder = JSON::Coder.new(&:itself) + error = assert_raise JSON::GeneratorError do + coder.dump(Float::NAN) + end + assert_include error.message, "NaN not allowed in JSON" + end end -- cgit v1.2.3