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

use strict;
use warnings;

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

BEGIN {
        use_ok( 'Config::INI::Serializer' );
}

# expected data
my $data = do "t/testdata.pl";

# from ini
my $ini_content;
my $INI;
open $INI, "<", "t/testdata.ini" and do {
        local $/;
        $ini_content = <$INI>;
        close $INI;
};

# deserialize
my $ini_data = Config::INI::Serializer->new->deserialize($ini_content);

# test
is ($ini_data->{tests_run},           8,                            "data compare - number is expected");
is ($ini_data->{tests_run},           $data->{tests_run},           "data compare - number is the same");
is ($ini_data->{start_time},          "1236463400.25151",           "data compare - string is expected");
is ($ini_data->{start_time},          $data->{start_time},          "data compare - string is the same");
is ($ini_data->{lines}{0}{as_string}, "TAP version 13",             "data compare - arrays become hashes - value is expected");
is ($ini_data->{lines}{0}{as_string}, $data->{lines}[0]{as_string}, "data compare - arrays become hashes - value is the same");

# round trip
my $ini_content_generated   = Config::INI::Serializer->new->serialize($data);
my $ini_data_from_generated = Config::INI::Serializer->new->deserialize($ini_content_generated);
cmp_deeply(
           $ini_data_from_generated,
           $ini_data,
           "deserializing its own serialized data gets same data again"
         );

done_testing;