@@ -28,11 +28,29 @@ public function testCOARRI()
2828 $ interpreter = new Interpreter ($ mapping ->getMessage ('COARRI ' ), $ segs , $ svc );
2929 $ interpreter ->prepare ($ parser ->get ());
3030
31- $ this ->assertCount (5 , $ interpreter ->getMessages ());
31+ $ this ->assertCount (3 , $ interpreter ->getMessages ()); //2 + service
3232 $ this ->assertCount (0 , $ interpreter ->getErrors ());
3333 $ this ->assertCount (2 , $ interpreter ->getServiceSegments ());
3434 }
3535
36+ public function testServiceSegments ()
37+ {
38+ $ parser = new Parser (__DIR__ . "/../files/D95BCOARRI.edi " );
39+
40+ $ mapping = new \EDI \Mapping \MappingProvider ('D95B ' );
41+ $ analyser = new Analyser ();
42+ $ segs = $ analyser ->loadSegmentsXml ($ mapping ->getSegments ());
43+ $ svc = $ analyser ->loadSegmentsXml ($ mapping ->getServiceSegments (3 ));
44+
45+ $ interpreter = new Interpreter ($ mapping ->getMessage ('COARRI ' ), $ segs , $ svc );
46+ $ interpreter ->prepare ($ parser ->get ());
47+ $ svc = $ interpreter ->getServiceSegments ();
48+ $ svcjson = $ interpreter ->getJsonServiceSegments ();
49+ $ svcjsonpretty = $ interpreter ->getJsonServiceSegments (true );
50+ $ this ->assertEquals ($ svc , json_decode ($ svcjson , true ));
51+ $ this ->assertEquals (26 , substr_count ($ svcjsonpretty , "\n" ));
52+ }
53+
3654 public function testBAPLIE ()
3755 {
3856 $ parser = new Parser (__DIR__ . "/../files/D95BBAPLIE.edi " );
@@ -70,6 +88,9 @@ public function testDESADV()
7088 "JSON does not match expected output "
7189 );
7290
91+ $ this ->assertEquals (3152 , strlen ($ interpreter ->getJson ()));
92+ $ this ->assertEquals (8379 , strlen ($ interpreter ->getJson (true )));
93+
7394 $ this ->assertCount (2 , $ interpreter ->getMessages ());
7495 $ this ->assertCount (0 , $ interpreter ->getErrors ());
7596 $ this ->assertCount (2 , $ interpreter ->getServiceSegments ());
@@ -96,6 +117,26 @@ public function testMissingUNTUNZ()
96117 $ this ->assertEquals (['UNZ ' , 'UNT ' ], $ segments );
97118 }
98119
120+ public function testMissingUNBUNH ()
121+ {
122+ $ edi = "UNT+30+1907'UNZ+1+1865' " ;
123+ $ parser = new Parser ($ edi );
124+ $ mapping = new \EDI \Mapping \MappingProvider ('D95B ' );
125+ $ analyser = new Analyser ();
126+ $ segs = $ analyser ->loadSegmentsXml ($ mapping ->getSegments ());
127+ $ svc = $ analyser ->loadSegmentsXml ($ mapping ->getServiceSegments (3 ));
128+
129+ $ interpreter = new Interpreter ($ mapping ->getMessage ('BAPLIE ' ), $ segs , $ svc );
130+ $ interpreter ->prepare ($ parser ->get ());
131+ $ errors = $ interpreter ->getErrors ();
132+ $ segments = [];
133+ foreach ($ errors as $ err ) {
134+ $ segments [] = $ err ['segmentId ' ];
135+ }
136+ $ this ->assertContains ('UNB ' , $ segments );
137+ $ this ->assertContains ('UNH ' , $ segments );
138+ }
139+
99140 public function testTooManyElements ()
100141 {
101142 $ edi = "UNB+UNOA:2+LBCTI:01+OOCLIES:ZZ:AA:DD+160414:0307+1865'UNZ+1+1865+TEST+TEST' " ;
0 commit comments