Business-EDI
view release on metacpan or search on metacpan
t/002-Spec.t view on Meta::CPAN
#!/usr/bin/perl
#
use strict; use warnings;
use Test::More tests => 200;
BEGIN {
use_ok('Data::Dumper');
use_ok('UNIVERSAL::require');
use_ok('Business::EDI');
use_ok('Business::EDI::Spec');
use_ok('Business::EDI::Test', qw/JSONObject2Perl ordrsp_data/);
}
use vars qw/%code_hash $parser $slurp $perl/;
my $debug = $Business::EDI::debug = $Business::EDI::Spec::debug = @ARGV ? shift : 0;
my $edi = Business::EDI->new('d08a') or die "Business::EDI->new('d08a') failed";
ok($perl = ordrsp_data, "DATA handle read and decode" );
$perl or die "DATA handle not decoded successfully";
# note("ref(\$obj): " . ref($perl));
# note(" \$obj : " . $perl );
$Data::Dumper::Indent = 1;
ok($perl->{body}, "EDI interchange body");
ok($perl->{body}->[0], "EDI interchange body is a populated arrayref!");
is(scalar(@{$perl->{body}}), 3, "EDI interchange body has 3 messages");
is($edi->spec->syntax, 40100, "\$edi->spec->syntax");
my $spec;
$spec = $edi->spec->get_spec('segment');
ok($spec,"\$edi->spec->get_spec('segment')");
my @failed;
foreach (qw/
ADR AGR AJT ALC ALI APP APR ARD ARR ASI ATT AUT BAS BGM BII
BUS CAV CCD CCI CDI CDS CDV CED CIN CLA CLI CMP CNI CNT COD
COM COT CPI CPS CPT CST CTA CUX DAM DFN DGS DII DIM DLI DLM
DMS DOC DRD DSG DSI DTM EDT EFI ELM ELU ELV EMP EQA EQD EQN
ERC ERP EVE FCA FII FNS FNT FOR FSQ FTX GDS GEI GID GIN GIR
GOR GPO GRU HAN HYN ICD IDE IFD IHC IMD IND INP INV IRQ LAN
LIN LOC MEA MEM MKS MOA MSG MTD NAD NAT PAC PAI PAS PCC PCD
PCI PDI PER PGI PIA PNA POC PRC PRI PRV PSD PTY PYT QRS QTY
QUA QVR RCS REL RFF RJL RNG ROD RSL RTE SAL SCC SCD SEG SEL
SEQ SFI SGP SGU SPR SPS STA STC STG STS TAX TCC TDT TEM TMD
TMP TOD TPL TRU TSR VLI
/) {
ok($spec->{$_}, "\$edi->spec->get_spec('segment')->{$_}") or push @failed, $_;
}
my $i=0;
if ($debug) {
print "ALL segment keys:\n";
foreach (sort keys %$spec) {
print $_, (++$i % 15 == 0 ? "\n" : " ");
}
print "\n";
}
if (@failed) {
$i=0;
diag("FAILED segment codes:");
foreach (@failed) {
print $_, (++$i % 15 == 0 ? "\n" : " ");
}
diag();
}
my $msgcode = 'ORDRSP';
$spec = $edi->spec->get_spec('message');
ok($spec,"\$edi->spec->get_spec('message')");
ok($spec->{$msgcode}, "\$edi->spec->get_spec('message')->{$msgcode}");
#print "Dump of ORDRSP spec: ", Dumper($spec->{ORDRSP});
my $sg_spec = $edi->spec->get_spec('segment_group');
ok($sg_spec,"\$edi->spec->get_spec('segment_group')");
ok($sg_spec->{$msgcode}, "\$edi->spec->get_spec('segment_group')->{$msgcode}");
( run in 0.785 second using v1.01-cache-2.11-cpan-ceb78f64989 )