1# -*- coding: utf-8 -*- 2 3require 'psych/helper' 4 5module Psych 6 class TestEmitter < TestCase 7 def setup 8 super 9 @out = StringIO.new('') 10 @emitter = Psych::Emitter.new @out 11 end 12 13 def test_line_width 14 assert_equal 0, @emitter.line_width 15 assert_equal 10, @emitter.line_width = 10 16 assert_equal 10, @emitter.line_width 17 end 18 19 def test_set_canonical 20 @emitter.canonical = true 21 assert_equal true, @emitter.canonical 22 23 @emitter.canonical = false 24 assert_equal false, @emitter.canonical 25 end 26 27 def test_indentation_set 28 assert_equal 2, @emitter.indentation 29 @emitter.indentation = 5 30 assert_equal 5, @emitter.indentation 31 end 32 33 def test_emit_utf_8 34 @emitter.start_stream Psych::Nodes::Stream::UTF8 35 @emitter.start_document [], [], false 36 @emitter.scalar '日本語', nil, nil, false, true, 1 37 @emitter.end_document true 38 @emitter.end_stream 39 assert_match('日本語', @out.string) 40 end 41 42 def test_start_stream_arg_error 43 assert_raises(TypeError) do 44 @emitter.start_stream 'asdfasdf' 45 end 46 end 47 48 def test_start_doc_arg_error 49 @emitter.start_stream Psych::Nodes::Stream::UTF8 50 51 [ 52 [nil, [], false], 53 [[nil, nil], [], false], 54 [[], 'foo', false], 55 [[], ['foo'], false], 56 [[], [nil,nil], false], 57 ].each do |args| 58 assert_raises(TypeError) do 59 @emitter.start_document(*args) 60 end 61 end 62 end 63 64 def test_scalar_arg_error 65 @emitter.start_stream Psych::Nodes::Stream::UTF8 66 @emitter.start_document [], [], false 67 68 [ 69 [:foo, nil, nil, false, true, 1], 70 ['foo', Object.new, nil, false, true, 1], 71 ['foo', nil, Object.new, false, true, 1], 72 ['foo', nil, nil, false, true, :foo], 73 [nil, nil, nil, false, true, 1], 74 ].each do |args| 75 assert_raises(TypeError) do 76 @emitter.scalar(*args) 77 end 78 end 79 end 80 81 def test_start_sequence_arg_error 82 @emitter.start_stream Psych::Nodes::Stream::UTF8 83 @emitter.start_document [], [], false 84 85 assert_raises(TypeError) do 86 @emitter.start_sequence(nil, Object.new, true, 1) 87 end 88 89 assert_raises(TypeError) do 90 @emitter.start_sequence(nil, nil, true, :foo) 91 end 92 end 93 end 94end 95