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

http://github.com/atz/Business-EDI · Perl · 96 lines · 73 code · 20 blank · 3 comment · 1 complexity · dc5917e65852fb5e7f9927388ecc5638 MD5 · raw file

  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