This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update CPAN-Meta-YAML to CPAN version 0.010
[perl5.git] / cpan / CPAN-Meta-YAML / t / 02_basic.t
1 # Testing of basic document structures
2
3 use strict;
4 use warnings;
5
6 BEGIN {
7     $|  = 1;
8     $^W = 1;
9 }
10
11 use File::Spec::Functions ':ALL';
12 use t::lib::Test;
13 use Test::More tests(30);
14 use CPAN::Meta::YAML;
15
16
17
18
19
20 #####################################################################
21 # Sample Testing
22
23 # Test a completely empty document
24 yaml_ok(
25     '',
26     [  ],
27     'empty',
28 );
29
30 # Just a newline
31 ### YAML.pm has a bug where it dies on a single newline
32 yaml_ok(
33     "\n\n",
34     [ ],
35     'only_newlines',
36 );
37
38 # Just a comment
39 yaml_ok(
40     "# comment\n",
41     [ ],
42     'only_comment',
43 );
44
45 # Empty documents
46 yaml_ok(
47     "---\n",
48     [ undef ],
49     'only_header',
50     noyamlperl => 1,
51 );
52 yaml_ok(
53     "---\n---\n",
54     [ undef, undef ],
55     'two_header',
56     noyamlperl => 1,
57 );
58 yaml_ok(
59     "--- ~\n",
60     [ undef ],
61     'one_undef',
62     noyamlperl => 1,
63 );
64 yaml_ok(
65     "---  ~\n",
66     [ undef ],
67     'one_undef2',
68     noyamlperl => 1,
69 );
70 yaml_ok(
71     "--- ~\n---\n",
72     [ undef, undef ],
73     'two_undef',
74     noyamlperl => 1,
75 );
76
77 # Just a scalar
78 yaml_ok(
79     "--- foo\n",
80     [ 'foo' ],
81     'one_scalar',
82 );
83 yaml_ok(
84     "---  foo\n",
85     [ 'foo' ],
86     'one_scalar2',
87 );
88 yaml_ok(
89     "--- foo\n--- bar\n",
90     [ 'foo', 'bar' ],
91     'two_scalar',
92     noyamlperl => 1,
93 );
94
95 # Simple lists
96 yaml_ok(
97     "---\n- foo\n",
98     [ [ 'foo' ] ],
99     'one_list1',
100 );
101 yaml_ok(
102     "---\n- foo\n- bar\n",
103     [ [ 'foo', 'bar' ] ],
104     'one_list2',
105 );
106 yaml_ok(
107     "---\n- ~\n- bar\n",
108     [ [ undef, 'bar' ] ],
109     'one_listundef',
110     noyamlperl => 1,
111 );
112
113 # Simple hashs
114 yaml_ok(
115     "---\nfoo: bar\n",
116     [ { foo => 'bar' } ],
117     'one_hash1',
118 );
119
120 yaml_ok(
121     "---\nfoo: bar\nthis: ~\n",
122     [ { this => undef, foo => 'bar' } ],
123      'one_hash2',
124     noyamlperl => 1,
125 );
126
127 # Simple array inside a hash with an undef
128 yaml_ok(
129     <<'END_YAML',
130 ---
131 foo:
132   - bar
133   - ~
134   - baz
135 END_YAML
136     [ { foo => [ 'bar', undef, 'baz' ] } ],
137     'array_in_hash',
138     noyamlperl => 1,
139 );
140
141 # Simple hash inside a hash with an undef
142 yaml_ok(
143     <<'END_YAML',
144 ---
145 foo: ~
146 bar:
147   foo: bar
148 END_YAML
149     [ { foo => undef, bar => { foo => 'bar' } } ],
150     'hash_in_hash',
151     noyamlperl => 1,
152 );
153
154 # Mixed hash and scalars inside an array
155 yaml_ok(
156     <<'END_YAML',
157 ---
158 -
159   foo: ~
160   this: that
161 - foo
162 - ~
163 -
164   foo: bar
165   this: that
166 END_YAML
167     [ [
168         { foo => undef, this => 'that' },
169         'foo',
170         undef,
171         { foo => 'bar', this => 'that' },
172     ] ],
173     'hash_in_array',
174     noyamlperl => 1,
175 );
176
177 # Simple single quote
178 yaml_ok(
179     "---\n- 'foo'\n",
180     [ [ 'foo' ] ],
181     'single_quote1',
182 );
183 yaml_ok(
184     "---\n- '  '\n",
185     [ [ '  ' ] ],
186     'single_spaces',
187 );
188 yaml_ok(
189     "---\n- ''\n",
190     [ [ '' ] ],
191     'single_null',
192 );
193
194 # Double quotes
195 yaml_ok(
196     "--- \"  \"\n",
197     [ '  ' ],
198     "only_spaces",
199     noyamlpm   => 1,
200     noyamlperl => 1,
201 );
202
203 yaml_ok(
204     "--- \"  foo\"\n--- \"bar  \"\n",
205     [ "  foo", "bar  " ],
206     "leading_trailing_spaces",
207     noyamlpm   => 1,
208     noyamlperl => 1,
209 );
210
211 # Implicit document start
212 yaml_ok(
213     "foo: bar\n",
214     [ { foo => 'bar' } ],
215     'implicit_hash',
216 );
217 yaml_ok(
218     "- foo\n",
219     [ [ 'foo' ] ],
220     'implicit_array',
221 );
222
223 # Inline nested hash
224 yaml_ok(
225     <<'END_YAML',
226 ---
227 - ~
228 - foo: bar
229   this: that
230 - baz
231 END_YAML
232     [ [ undef, { foo => 'bar', this => 'that' }, 'baz' ] ],
233     'inline_nested_hash',
234     noyamlperl => 1,
235 );
236
237 # Empty comments
238 yaml_ok(
239     "---\n- foo\n#\n- bar\n",
240     [ [ 'foo', 'bar' ] ],
241     'empty_comment_in_list',
242 );
243
244 yaml_ok(
245     "---\nfoo: bar\n# foo\none: two\n",
246     [ { foo => 'bar', one => 'two' } ],
247     'empty_comment_in_hash',
248 );
249
250 # Complex keys
251 yaml_ok(
252     "---\na b: c d\n",
253     [ { 'a b' => 'c d' } ],
254     'key_with_whitespace',
255 );