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