summaryrefslogtreecommitdiff
path: root/t/dump-tests.t
diff options
context:
space:
mode:
Diffstat (limited to 't/dump-tests.t')
-rw-r--r--t/dump-tests.t402
1 files changed, 402 insertions, 0 deletions
diff --git a/t/dump-tests.t b/t/dump-tests.t
new file mode 100644
index 0000000..a27346e
--- /dev/null
+++ b/t/dump-tests.t
@@ -0,0 +1,402 @@
+use strict;
+use lib -e 't' ? 't' : 'test';
+use TestYAML tests => 57;
+
+no_diff();
+run_roundtrip_nyn('dumper');
+
+__DATA__
+
+===
++++ perl
+[ "foo\nbar", "I like pie\nYou like pie\nWe all like pie" ]
++++ yaml
+---
+- "foo\nbar"
+- |-
+ I like pie
+ You like pie
+ We all like pie
+
+===
++++ perl
+{name => 'Ingy dot Net',
+ rank => 'JAPH',
+ 'serial number' => '8675309',
+};
++++ yaml
+---
+name: Ingy dot Net
+rank: JAPH
+serial number: 8675309
+
+===
++++ perl
+ {fruits => [qw(apples oranges pears)],
+ meats => [qw(beef pork chicken)],
+ vegetables => [qw(carrots peas corn)],
+ }
++++ yaml
+---
+fruits:
+ - apples
+ - oranges
+ - pears
+meats:
+ - beef
+ - pork
+ - chicken
+vegetables:
+ - carrots
+ - peas
+ - corn
+
+===
++++ perl
+['42', '43', '-44', '45']
++++ yaml
+---
+- 42
+- 43
+- -44
+- 45
+
+===
++++ perl
+[
+ 'foo bar',
+ 'http://www.yaml.org',
+ '12:34'
+]
++++ yaml
+---
+- foo bar
+- http://www.yaml.org
+- 12:34
+
+===
++++ perl
+('1', " foo ", "bar\n", [], {})
++++ yaml
+--- 1
+--- ' foo '
+--- "bar\n"
+--- []
+--- {}
+
+===
++++ perl
+'8\'-0" x 24" Lightweight'
++++ yaml
+--- 8'-0" x 24" Lightweight
+
+===
++++ perl
+bless {}, 'Foo::Bar'
++++ yaml
+--- !!perl/hash:Foo::Bar {}
+
+===
++++ perl
+bless {qw(foo 42 bar 43)}, 'Foo::Bar'
++++ yaml
+--- !!perl/hash:Foo::Bar
+bar: 43
+foo: 42
+
+===
++++ perl
+bless [], 'Foo::Bar'
++++ yaml
+--- !!perl/array:Foo::Bar []
+
+===
++++ perl
+bless [map "$_",42..45], 'Foo::Bar'
++++ yaml
+--- !!perl/array:Foo::Bar
+- 42
+- 43
+- 44
+- 45
+
+===
++++ perl
+my $yn = YAML::Node->new({}, 'foo.com/bar');
+$yn->{foo} = 'bar';
+$yn->{bar} = 'baz';
+$yn->{baz} = 'foo';
+$yn
++++ yaml
+--- !foo.com/bar
+foo: bar
+bar: baz
+baz: foo
+
+===
++++ perl
+use YAML::Node;
++++ no_round_trip
++++ perl
+my $a = '';
+bless \$a, 'Foo::Bark';
++++ yaml
+--- !!perl/scalar:Foo::Bark ''
+
+=== Strings with nulls
++++ perl
+"foo\0bar"
++++ yaml
+--- "foo\0bar"
+
+===
++++ no_round_trip
+XXX: probably a YAML.pm bug
++++ perl
+&YAML::VALUE
++++ yaml
+--- =
+
+===
++++ perl
+my $ref = {foo => 'bar'};
+[$ref, $ref]
++++ yaml
+---
+- &1
+ foo: bar
+- *1
+
+===
++++ perl
+no strict;
+package main;
+$joe_random_global = 42;
+@joe_random_global = (43, 44);
+*joe_random_global
++++ yaml
+--- !!perl/glob:
+PACKAGE: main
+NAME: joe_random_global
+SCALAR: 42
+ARRAY:
+ - 43
+ - 44
+
+===
++++ perl
+no strict;
+package main;
+\*joe_random_global
++++ yaml
+--- !!perl/ref
+=: !!perl/glob:
+ PACKAGE: main
+ NAME: joe_random_global
+ SCALAR: 42
+ ARRAY:
+ - 43
+ - 44
+
+===
++++ no_round_trip
++++ perl
+my $foo = {qw(apple 1 banana 2 carrot 3 date 4)};
+YAML::Bless($foo)->keys([qw(banana apple date)]);
+$foo
++++ yaml
+---
+banana: 2
+apple: 1
+date: 4
+
+===
++++ no_round_trip
++++ perl
+use YAML::Node;
+my $foo = {qw(apple 1 banana 2 carrot 3 date 4)};
+my $yn = YAML::Node->new($foo);
+YAML::Bless($foo, $yn)->keys([qw(apple)]); # red herring
+ynode($yn)->keys([qw(banana date)]);
+$foo
++++ yaml
+---
+banana: 2
+date: 4
+
+===
++++ no_round_trip
+XXX: probably a test driver bug
++++ perl
+my $joe_random_global = {qw(apple 1 banana 2 carrot 3 date 4)};
+YAML::Bless($joe_random_global, 'TestBless');
+return [$joe_random_global, $joe_random_global];
+package TestBless;
+use YAML::Node;
+sub yaml_dump {
+ my $yn = YAML::Node->new($_[0]);
+ ynode($yn)->keys([qw(apple pear carrot)]);
+ $yn->{pear} = $yn;
+ return $yn;
+}
++++ yaml
+---
+- &1
+ apple: 1
+ pear: *1
+ carrot: 3
+- *1
+
+===
++++ no_round_trip
++++ perl
+use YAML::Node;
+my $joe_random_global = {qw(apple 1 banana 2 carrot 3 date 4)};
+YAML::Bless($joe_random_global);
+my $yn = YAML::Blessed($joe_random_global);
+delete $yn->{banana};
+$joe_random_global
++++ yaml
+---
+apple: 1
+carrot: 3
+date: 4
+
+===
++++ perl
+my $joe_random_global = \\\\\\\'42';
+[
+ $joe_random_global,
+ $$$$joe_random_global,
+ $joe_random_global,
+ $$$$$$$joe_random_global,
+ $$$$$$$$joe_random_global
+]
++++ yaml
+---
+- &1 !!perl/ref
+ =: !!perl/ref
+ =: !!perl/ref
+ =: &2 !!perl/ref
+ =: !!perl/ref
+ =: !!perl/ref
+ =: &3 !!perl/ref
+ =: 42
+- *2
+- *1
+- *3
+- 42
+
+===
++++ perl
+local $YAML::Indent = 1;
+[{qw(foo 42 bar 44)}]
++++ yaml
+---
+- bar: 44
+ foo: 42
+
+===
++++ perl
+local $YAML::Indent = 4;
+[{qw(foo 42 bar 44)}]
++++ yaml
+---
+- bar: 44
+ foo: 42
+
+===
++++ perl
+[undef, undef]
++++ yaml
+---
+- ~
+- ~
+
+===
++++ perl
+my $joe_random_global = [];
+push @$joe_random_global, $joe_random_global;
+bless $joe_random_global, 'XYZ';
+$joe_random_global
++++ yaml
+--- &1 !!perl/array:XYZ
+- *1
+
+===
++++ perl
+[
+ '23',
+ '3.45',
+ '123456789012345',
+]
++++ yaml
+---
+- 23
+- 3.45
+- 123456789012345
+
+===
++++ perl
+{'foo: bar' => 'baz # boo', 'foo ' => ' monkey', }
++++ yaml
+---
+'foo ': ' monkey'
+'foo: bar': 'baz # boo'
+
+===
++++ no_round_trip
++++ perl
+$a = \\\\\\\\"foo"; $b = $$$$$a;
+([$a, $b], [$b, $a])
++++ yaml
+---
+- !!perl/ref
+ =: !!perl/ref
+ =: !!perl/ref
+ =: !!perl/ref
+ =: &1 !!perl/ref
+ =: !!perl/ref
+ =: !!perl/ref
+ =: !!perl/ref
+ =: foo
+- *1
+---
+- &1 !!perl/ref
+ =: !!perl/ref
+ =: !!perl/ref
+ =: !!perl/ref
+ =: foo
+- !!perl/ref
+ =: !!perl/ref
+ =: !!perl/ref
+ =: !!perl/ref
+ =: *1
+
+===
++++ no_round_trip
+XXX an AutoBless feature could make this rt
++++ perl
+$a = YAML::Node->new({qw(a 1 b 2 c 3 d 4)}, 'ingy.com/foo');
+YAML::Node::ynode($a)->keys([qw(d b a)]);
+$a;
++++ yaml
+--- !ingy.com/foo
+d: 4
+b: 2
+a: 1
+
+===
++++ no_round_trip
++++ perl
+$a = 'bitter buffalo';
+bless \$a, 'Heart';
++++ yaml
+--- !!perl/scalar:Heart bitter buffalo
+
+===
++++ perl
+{ 'foo[bar]' => 'baz' }
++++ yaml
+---
+'foo[bar]': baz