my ($fh, $STDERR);
BEGIN {
    open $fh, '>', \$STDERR or die $!;
}

use Data::Dx {colour=>0, to=>$fh};
use Test::More;

plan tests => 41;
use utf8;

my %foo = (foo => 1, food => 2, fool => 3, foop => 4, foon => [5..10]);
my @bar = qw<b a r>;
my $baz = 'baz';
my $ref = \@bar;
sub sq;

Dₓ %foo;
Dₓ $/;
Dₓ @bar;
Dₓ (
    @bar,
    $baz,
);
Dₓ $baz;
Dₓ $ref;
Dₓ @bar[do{1..2;}];
Dₓ 2*3;
Dₓ 'a+b';
Dₓ 100 * sq length $baz;
Dₓ $foo{q[;{{{]};
do {
    Dₓ 'foo' =~ m/;\{\/\{/
};
Dₓ $/{Answer};

my $str = 'foo';
$str =~ m/(?<bar>\w+)/;
Dₓ $+{bar};

my @expected;
my @got      = split /\n/, $STDERR;

for my $n (0..$#expected) {
    if ($expected[$n] =~ m{\A \s* \{ }xms) {
        is_deeply(eval($got[$n]), eval($expected[$n]) => ": $expected[$n]");
    }
    else {
        is $got[$n], $expected[$n] => ": $expected[$n]";
    }
}

sub sq {
    my ($n) = @_;
    return $n * $n;
}

BEGIN {
    @expected = split /\n/, <<'END_EXPECTED';
#line 18  t/D_x.t
%foo = { foo => 1, food => 2, fool => 3, foon => [5 .. 10], foop => 4 }

#line 19  t/D_x.t
$/ = "\n"

#line 20  t/D_x.t
@bar = ["b", "a", "r"]

#line 21  t/D_x.t
( @bar, $baz, ) = ["b", "a", "r", "baz"]

#line 25  t/D_x.t
$baz = "baz"

#line 26  t/D_x.t
$ref = ["b", "a", "r"]

#line 27  t/D_x.t
@bar[do{1..2;}] = ["a", "r"]

#line 28  t/D_x.t
2*3 = 6

#line 29  t/D_x.t
'a+b' = "a+b"

#line 30  t/D_x.t
100 * sq length $baz = 900

#line 31  t/D_x.t
$foo{q[;{{{]} = undef

#line 33  t/D_x.t
'foo' =~ m/;\{\/\{/ = undef

#line 35  t/D_x.t
$/{Answer} = undef

#line 39  t/D_x.t
$+{bar} = "foo"
END_EXPECTED
}
