PageRenderTime 40ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/t/002a-Spec-for-Segment_group.t

http://github.com/atz/Business-EDI
Perl | 96 lines | 73 code | 20 blank | 3 comment | 2 complexity | dc5917e65852fb5e7f9927388ecc5638 MD5 | raw file
Possible License(s): AGPL-1.0
  1. #!/usr/bin/perl
  2. #
  3. use strict; use warnings;
  4. use Test::More tests => 21;
  5. BEGIN {
  6. use_ok('Data::Dumper');
  7. use_ok('UNIVERSAL::require');
  8. use_ok('Business::EDI');
  9. use_ok('Business::EDI::Spec');
  10. use_ok('Business::EDI::Test', qw/ordrsp_data/);
  11. }
  12. use vars qw/$perl/;
  13. my $debug = $Business::EDI::debug = $Business::EDI::Spec::debug = @ARGV ? shift : 0;
  14. my $edi = Business::EDI->new('d08a') or die "Business::EDI->new('d08a') failed";
  15. ok($perl = ordrsp_data, "DATA handle read and decode" );
  16. $perl or die "DATA handle not decoded successfully";
  17. $Data::Dumper::Indent = 1;
  18. is(scalar(@{$perl->{body}}), 3, "EDI interchange body has 3 messages");
  19. my $msgcode = 'ORDRSP';
  20. my $spec = $edi->spec->get_spec('message');
  21. ok($spec,"\$edi->spec->get_spec('message')");
  22. ok($spec->{$msgcode}, "\$edi->spec->get_spec('message')->{$msgcode}");
  23. #print "Dump of ORDRSP spec: ", Dumper($spec->{ORDRSP});
  24. my $sg_spec = $edi->spec->get_spec('segment_group');
  25. ok($sg_spec,"\$edi->spec->get_spec('segment_group')");
  26. ok($sg_spec->{$msgcode}, "\$edi->spec->get_spec('segment_group')->{$msgcode}");
  27. is_deeply($sg_spec->{$msgcode}->{SG26}, $spec->{"$msgcode/SG26"}, "SG_SPECS->{$msgcode}->{SG26} === MSG_SPECS->{'$msgcode/SG26'}");
  28. my $i=0;
  29. foreach my $part (@{$perl->{body}}) {
  30. $i++;
  31. next unless ok((ref $part and scalar keys %$part), "EDI interchange message $i has structure.");
  32. foreach my $key (keys %$part) {
  33. next unless ok($key eq 'ORDRSP', "EDI interchange message $i type == ORDRSP");
  34. my $ordrsp;
  35. ok($ordrsp = $edi->detect_version($part->{$key}), "EDI $key object via \$edi->detect_version(...)");
  36. }
  37. }
  38. note("done");
  39. __END__
  40. ORDRSP SG26 (different versions)
  41. Notice that the content changes completely at d94b and d06a, because the SG26 designation is just the relative position of the
  42. segment group, not a name for it. This makes parsing rather difficult.
  43. 1911 PRI;M;1;API;C;1;RNG;C;1;DTM;C;5
  44. 1921 PAT;M;1;DTM;C;5;PCD;C;1;MOA;C;1
  45. d93a PAT;M;1;DTM;C;5;PCD;C;1;MOA;C;1
  46. s93a PAT;M;1;DTM;C;5;PCD;C;1;MOA;C;1
  47. d94a PAT;M;1;DTM;C;5;PCD;C;1;MOA;C;1
  48. d94b PAT;M;1;DTM;C;5;PCD;C;1;MOA;C;1
  49. d95a LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;5;QTY;C;10;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;5;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;5;PAI;C;1;FTX;C;5;SG27;C;10;SG28;C;1;SG29;C;25;SG30;C;10;SG31;C;10;SG34;C;9999;SG35;C;5;SG36;C;10;SG40;C;15;SG46;C;10;SG48;C;5;SG49;C;10;SG50;C;100;SG52;C;100;SG53;C;10
  50. d95b LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;5;QTY;C;10;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;5;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;5;PAI;C;1;FTX;C;5;SG27;C;10;SG28;C;1;SG29;C;25;SG30;C;10;SG31;C;10;SG34;C;9999;SG35;C;5;SG36;C;10;SG40;C;15;SG46;C;10;SG48;C;5;SG49;C;10;SG50;C;100;SG52;C;100;SG53;C;10
  51. d96a LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;5;QTY;C;10;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;5;PAI;C;1;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;999;SG32;C;10;SG35;C;9999;SG36;C;10;SG37;C;99;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;100;SG54;C;10
  52. d96b LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;10;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;5;PAI;C;1;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;999;SG32;C;10;SG35;C;9999;SG36;C;10;SG37;C;99;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;100;SG54;C;10
  53. d97a LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;10;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;5;PAI;C;1;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;999;SG32;C;10;SG35;C;9999;SG36;C;10;SG37;C;99;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;100;SG54;C;10
  54. d97b LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;10;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  55. d98a LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  56. d98b LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GIS;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  57. d99a LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GIS;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  58. d99b LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GIS;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  59. d00a LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GIS;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  60. d00b LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GIS;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;MTD;C;99;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  61. d01a LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GIS;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;MTD;C;99;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  62. d01b LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GIS;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;MTD;C;99;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  63. d01c LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GIS;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;MTD;C;99;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  64. d02a LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GIS;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;MTD;C;99;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  65. d02b LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GEI;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;MTD;C;99;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  66. d03a LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GEI;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;MTD;C;99;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  67. d03b LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GEI;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;MTD;C;99;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  68. d04a LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GEI;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;MTD;C;99;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  69. d04b LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GEI;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;MTD;C;99;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  70. d05a LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GEI;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;MTD;C;99;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  71. d05b LIN;M;1;PIA;C;25;IMD;C;99;MEA;C;99;QTY;C;99;PCD;C;5;ALI;C;5;DTM;C;35;MOA;C;10;GEI;C;99;GIN;C;1000;GIR;C;1000;QVR;C;1;DOC;C;99;PAI;C;1;MTD;C;99;FTX;C;99;SG27;C;999;SG28;C;10;SG29;C;1;SG30;C;25;SG31;C;9999;SG32;C;99;SG35;C;9999;SG36;C;10;SG37;C;999;SG41;C;99;SG47;C;10;SG49;C;5;SG50;C;10;SG51;C;100;SG53;C;999;SG54;C;10
  72. d06a EFI;M;1;CED;C;99;COM;C;9;RFF;C;9;DTM;C;9;QTY;C;9
  73. d06b EFI;M;1;CED;C;99;COM;C;9;RFF;C;9;DTM;C;9;QTY;C;9
  74. d07a EFI;M;1;CED;C;99;COM;C;9;RFF;C;9;DTM;C;9;QTY;C;9
  75. d07b EFI;M;1;CED;C;99;COM;C;9;RFF;C;9;DTM;C;9;QTY;C;9
  76. d08a EFI;M;1;CED;C;99;COM;C;9;RFF;C;9;DTM;C;9;QTY;C;9