Use Trailingcomma option when available (RT#114609)
[p5sagit/Data-Dumper-Concise.git] / t / sugar.t
1 use strict;
2 use warnings;
3 use Data::Dumper::Concise::Sugar;
4
5 use Data::Dumper::Concise ();
6
7 use Test::More qw(no_plan);
8
9 my $warned_string;
10
11 BEGIN {
12    $SIG{'__WARN__'} = sub {
13       $warned_string = $_[0]
14    }
15 }
16
17 DWARNL: {
18    my @foo = DwarnL 'warn', 'friend';
19    is $warned_string,qq{"warn"\n"friend"\n}, 'DwarnL warns';
20
21    ok eq_array(\@foo, ['warn','friend']), 'DwarnL passes through correctly';
22 }
23
24 DWARNS: {
25    my $bar = DwarnS 'robot',2,3;
26    is $warned_string,qq{"robot"\n}, 'DwarnS warns';
27    is $bar, 'robot', 'DwarnS passes through correctly';
28 }
29
30 DWARN: {
31    my @foo = Dwarn 'warn', 'friend';
32    is $warned_string,qq{"warn"\n"friend"\n}, 'Dwarn warns lists';
33
34    ok eq_array(\@foo, ['warn','friend']), 'Dwarn passes lists through correctly';
35
36    my $bar = Dwarn 'robot',2,3;
37    is $warned_string,qq{"robot"\n2\n3\n}, 'Dwarn warns scalars correctly';
38    is $bar, 'robot', 'Dwarn passes scalars through correctly';
39 }
40
41 DWARN_CODEREF: {
42    my $foo = ['warn', 'friend']->$Dwarn;
43    like $warned_string,qr{^\[\n  "warn",\n  "friend",?\n\]\n\z}, 'Dwarn warns lists';
44
45    ok eq_array($foo, ['warn','friend']), 'Dwarn passes lists through correctly';
46 }
47
48 DWARNF: {
49    my @foo = DwarnF { "arr: $_[0] str: $_[1]" } [qw(wut HALP)], "gnarl";
50
51    like($warned_string, qr{^arr: \[\n  "wut",\n  "HALP",?\n\]\n str: "gnarl"\n\z}, 'DumperF works!');
52    ok eq_array($foo[0], ['wut','HALP']) && $foo[1] eq 'gnarl', 'DwarnF passes lists through correctly';
53 }
54
55 DWARNN: {
56    my $loaded = eval { require Devel::ArgNames; 1 };
57    if ($loaded) {
58       my $x = [1];
59       my $foo = DwarnN $x;
60       like $warned_string, qr{^\$x => \[\n  1,?\n\]\n\z}, 'DwarnN warns';
61
62       ok eq_array($foo, [1]), 'DwarnN passes through correctly';
63
64       DwarnN [1];
65       like $warned_string, qr{^\(anon\) => \[\n  1,?\n\]\n\z}, 'DwarnN warns';
66    }
67 }
68
69 DDIE: {
70    eval {
71       DdieS [ 'k', 'bar' ];
72    };
73    like $@, qr{^\[\n  "k",\n  "bar",?\n\]\n\z}, 'DwarnD dies output correctly';
74 }
75