MarpaX-Languages-PowerBuilder
view release on metacpan or search on metacpan
t/lib/TestFunctions.pm view on Meta::CPAN
package TestFunctions;
###############################################################################
#
# TestFunctions - Helper functions for test cases.
#
# (comes from excel-reader-xlsx) reverse('(c)'), January 2012, John McNamara, jmcnamara@cpan.org
#
use 5.008002;
use Exporter;
use strict;
use warnings;
use Test::More;
our @ISA = qw(Exporter);
our @EXPORT = qw(_is_deep_diff);
our %EXPORT_TAGS = ();
our @EXPORT_OK = qw(
_is_deep_diff
_read_json
);
our $VERSION = '0.00';
###############################################################################
#
# Use Test::Differences::eq_or_diff() where available or else fall back to
# using Test::More::is_deeply().
#
sub _is_deep_diff {
my ( $got, $expected, $caption, $context ) = @_;
$context //= { context => 20 };
eval {
require Test::Differences;
Test::Differences->import();
};
if ( !$@ ) {
eq_or_diff( $got, $expected, $caption, $context );
}
else {
is_deeply( $got, $expected, $caption );
}
}
###############################################################################
#
# _read_json()
#
# Read test data from a JSON file.
#
sub _read_json {
my $filename = shift;
# Read in the JSON test data
local $/;
open my $fh, '<:encoding(UTF-8)', $filename
or die "Couldn't open $filename\n";
my $json_text = <$fh>;
my $href;
# Check if the JSON.pm module is avilable to parse the test data.
eval { require JSON };
if ( !$@ ) {
# We have JSON.pm.
my $json = JSON::XS->new();
$href = $json->decode( $json_text );
}
else {
# If JSON.pm isn't available we do a poor man's translation.
$json_text =~ s/ : / => /g;
$href = eval $json_text;
}
return $href;
}
1;
__END__
( run in 3.115 seconds using v1.01-cache-2.11-cpan-75ffa21a3d4 )