The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl

use Test::More;
use Test::Deep;
use Data::Dumper;
use autodie;

use Pg::Explain;

my @tests = @ARGV;
if (0 == scalar @tests) {
    opendir( my $dir, 't/17-as_text' );

    my %uniq = ();
    @tests = sort { $a <=> $b }
        grep { !$uniq{ $_ }++ }
        map { s/-.*//; $_ }
        grep { /^\d+-plan$/ } readdir $dir;

    closedir $dir;
}

plan 'tests' => 5 * scalar @tests;

for my $test ( @tests ) {

    print STDERR 'Working on test ' . $test . "\n" if  $ENV{'DEBUG_TESTS'};

    my $plan_file = 't/17-as_text/' . $test . '-plan';

    my $explain = Pg::Explain->new( 'source_file' => $plan_file );
    isa_ok( $explain, 'Pg::Explain' );
    isa_ok( $explain->top_node, 'Pg::Explain::Node' );

    my $textual = $explain->as_text();

    my $reparsed = Pg::Explain->new( 'source' => $textual );
    isa_ok( $reparsed, 'Pg::Explain' );
    isa_ok( $reparsed->top_node, 'Pg::Explain::Node' );

    my $expected = $explain->top_node->get_struct();
    my $got = $reparsed->top_node->get_struct();

    print STDERR Dumper($got) if  $ENV{'DEBUG_TESTS'};

    cmp_deeply( $got, $expected, 'Plan no. ' . $test . ' passed as file.', );
}

exit;