diff options
Diffstat (limited to 'jni/ruby/test/psych/json')
-rw-r--r-- | jni/ruby/test/psych/json/test_stream.rb | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/jni/ruby/test/psych/json/test_stream.rb b/jni/ruby/test/psych/json/test_stream.rb new file mode 100644 index 0000000..b0c33e6 --- /dev/null +++ b/jni/ruby/test/psych/json/test_stream.rb @@ -0,0 +1,109 @@ +require 'psych/helper' + +module Psych + module JSON + class TestStream < TestCase + def setup + @io = StringIO.new + @stream = Psych::JSON::Stream.new(@io) + @stream.start + end + + def test_explicit_documents + @io = StringIO.new + @stream = Psych::JSON::Stream.new(@io) + @stream.start + + @stream.push({ 'foo' => 'bar' }) + + assert !@stream.finished?, 'stream not finished' + @stream.finish + assert @stream.finished?, 'stream finished' + + assert_match(/^---/, @io.string) + assert_match(/\.\.\.$/, @io.string) + end + + def test_null + @stream.push(nil) + assert_match(/^--- null/, @io.string) + end + + def test_string + @stream.push "foo" + assert_match(/(["])foo\1/, @io.string) + end + + def test_symbol + @stream.push :foo + assert_match(/(["])foo\1/, @io.string) + end + + def test_int + @stream.push 10 + assert_match(/^--- 10/, @io.string) + end + + def test_float + @stream.push 1.2 + assert_match(/^--- 1.2/, @io.string) + end + + def test_hash + hash = { 'one' => 'two' } + @stream.push hash + + json = @io.string + assert_match(/}$/, json) + assert_match(/^--- \{/, json) + assert_match(/["]one['"]/, json) + assert_match(/["]two['"]/, json) + end + + def test_list_to_json + list = %w{ one two } + @stream.push list + + json = @io.string + assert_match(/\]$/, json) + assert_match(/^--- \[/, json) + assert_match(/["]one["]/, json) + assert_match(/["]two["]/, json) + end + + class Foo; end + + def test_json_dump_exclude_tag + @stream << Foo.new + json = @io.string + refute_match('Foo', json) + end + + class Bar + def encode_with coder + coder.represent_seq 'omg', %w{ a b c } + end + end + + def test_json_list_dump_exclude_tag + @stream << Bar.new + json = @io.string + refute_match('omg', json) + end + + def test_time + time = Time.utc(2010, 10, 10) + @stream.push({'a' => time }) + json = @io.string + assert_match "{\"a\": \"2010-10-10 00:00:00.000000000 Z\"}\n", json + end + + def test_datetime + time = Time.new(2010, 10, 10).to_datetime + @stream.push({'a' => time }) + json = @io.string + assert_match "{\"a\": \"#{time.strftime("%Y-%m-%d %H:%M:%S.%9N %:z")}\"}\n", json + end + end + end +end |