From a9d77a20008efe82862cc1adbfa7a6d4f09f8ff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Menou?= Date: Thu, 8 Dec 2016 10:19:15 +0200 Subject: Release code as open source --- specification/test/Edifact.hs | 127 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 specification/test/Edifact.hs (limited to 'specification/test/Edifact.hs') diff --git a/specification/test/Edifact.hs b/specification/test/Edifact.hs new file mode 100644 index 0000000..6e9acf2 --- /dev/null +++ b/specification/test/Edifact.hs @@ -0,0 +1,127 @@ +{-# LANGUAGE OverloadedStrings #-} + +module Edifact + ( suite + ) where + +import Text.Edifact.Common.Segments +import Text.Edifact.D96A +import Text.Edifact.Parsing + +import Data.Text (Text, unpack) +import Text.Parsec (eof) + +import Test.Framework +import Test.Framework.Providers.HUnit (testCase) +import Test.HUnit ((@?=)) + +suite :: Test +suite = + testGroup "examples" + [ canParse simple1153 "AAV" + , canParse simple1154 "" + , canParse simple1156 "C" + , canParse compositeC506 "AAV" + , canParse compositeC506 "AAV::C" + , canParse segmentRFF "RFF+AAV'" + , canParse segmentRFF "RFF+AAV::C'" + + , canParse segmentUNB "UNB+UNOA:1+US::US+50138::THEM+140531:0305+001934++ORDERS'" + , canParse segmentUNH "UNH+1+ORDERS:91:2:UN'" + , canParse segmentRFF "RFF+CT:EUA01349'" + , canParse segmentRFF "RFF+AAV::C'" + , canParse segmentNAD "NAD+BY++OUR NAME PLC::::+++++EW4 34J'" + , canParse segmentCTA "CTA+PD'" + , canParse segmentCTA "CTA+OC+:A.SURNAME'" + , canParse segmentCOM "COM+2407:EX'" + , canParse segmentCTA "CTA+TI+:B.BROWN'" + , canParse segmentCOM "COM+0:EX'" + , canParse segmentCTA "CTA+SU'" + , canParse segmentUNT "UNT+15+1'" + , canParse segmentUNZ "UNZ+1+001934'" + + , canParse segmentUNA "UNA:+.? '" + , canParse segmentUNB "UNB+IATB:1+6XPPC+LHPPC+940101:0950+1'" + , canParse segmentUNH "UNH+1+PAORES:93:1:IA'" + , canParse segmentUNT "UNT+13+1'" + , canParse segmentUNZ "UNZ+1+1'" + + -- Examples from: + -- https://www.adient.com/-/media/adient/shared/suppliers/supplier-expectations/supply-chain-management-emea-docs/adient_edi-implementation-guide---desadv-un-d96a---updated-logo.pdf + , canParse segmentUNB "UNB+UNOA:3+SENDER+O0013007096JCIEUAG::0711+060206:1708+183'" + , canParse segmentUNH "UNH+LF001+DESADV:D:96A:UN'" + , canParse segmentBGM "BGM+351+DES58765+9'" + , canParse segmentDTM "DTM+137:200506011400:203'" + , canParse segmentDTM "DTM+11:200506011200:203'" + , canParse segmentMEA "MEA+AAX+AAD+KGM:47'" + , canParse segmentNAD "NAD+CZ+32169::92++CONSIGNOR NAME'" + , canParse segmentNAD "NAD+SE+876543210::92++SELLER NAME'" + , canParse segmentNAD "NAD+CN+1801::92++CONSIGNEE NAME'" + , canParse segmentNAD "NAD+CA+18010::92++CARRIER NAME'" + , canParse segmentLOC "LOC+11+ABC123'" + , canParse segmentRFF "RFF+ADE:12332'" + , canParse segmentTOD "TOD+5++EXW'" + , canParse segmentTDT "TDT+12++30'" + , canParse segmentEQD "EQD+TE+XYZ123456'" + , canParse segmentQTY "QTY+52:400:PCE'" + , canParse segmentPCI "PCI+17'" + , canParse segmentRFF "RFF+AAT:00123477'" + , canParse segmentPIA "PIA+1+CR153:SA'" + , canParse segmentQTY "QTY+3:1200:PCE'" + , canParse segmentQTY "QTY+12:400:PCE'" + , canParse segmentRFF "RFF+ON:51523'" + , canParse segmentUNT "UNT+45+LF001'" + + , canParse segmentUNB "UNB+UNOA:4+FMFOOBA:ZZZ+FLFOOBA:OG+190515:0557+000000008'" + , canParse segmentUNH "UNH+0002+IFCSUM:D:96A:UN'" + , canParse segmentBGM "BGM+787::86+01234567+9'" + , canParse segmentMOA "MOA+7::EUR'" + , canParse segmentCNT "CNT+7:359.741:KGM'" + , canParse segmentRFF "RFF+AFC:01234567'" + , canParse segmentTDT "TDT+20+++31+0012321001:172::SOME COMPANY+SB'" + , canParse segmentNAD "NAD+CZ+FR01++SHIPPER NAME+ RUE SOMEWHERE+CITY+FRA+01000'" + , canParse segmentCTA "CTA+IC+Some Contact:Some Name'" + , canParse segmentCOM "COM+some.email@example.com:EM'" + , canParse segmentEQD "EQD+TE++E34T'" + , canParse segmentCNI "CNI+++1'" + , canParse segmentDTM "DTM+37:201904040000:203'" + , canParse segmentDTM "DTM+38:201904082358:203'" + , canParse segmentCNT "CNT+10:1'" + , canParse segmentCNT "CNT+7:359.74:KGM'" + , canParse segmentCNT "CNT+15:3.38:KGM'" + , canParse segmentCNT "CNT+9:163:SV'" + , canParse segmentNAD "NAD+SF+FR01++SHIPPER NAME+ RUE SOMEWHERE+CITY+FRA+01000'" + , canParse segmentGID "GID+1+163::::SV'" + , canParse segmentPIA "PIA+1+0212455321:TG'" + , canParse segmentFTX "FTX+AAA+++Default'" + , canParse segmentMEA "MEA+WT+G+KGM:359.741'" + , canParse segmentMEA "MEA+VOL+ACP+MTQ:3.384'" + , canParse segmentRFF "RFF+ACD:0123432105'" + , canParse segmentTCC "TCC+Some Info:ZZZ'" + , canParse segmentQTY "QTY+107:2.000000'" + , canParse segmentCNI "CNI+++2'" + , canParse segmentDTM "DTM+64:201904080001:203'" + , canParse segmentDTM "DTM+63:201904082359:203'" + , canParse segmentCNT "CNT+10:1'" + , canParse segmentCNT "CNT+7:359.74:KGM'" + , canParse segmentCNT "CNT+15:3.38:KGM'" + , canParse segmentCNT "CNT+9:163:SV'" + , canParse segmentNAD "NAD+ST+2000000000++SOME ADDRESS+ ZI SOMEWHERE+CITY+FRA+01000'" + , canParse segmentGID "GID+1+163::::SV'" + , canParse segmentPIA "PIA+1+0212455321:TG'" + , canParse segmentFTX "FTX+AAA+++Default'" + , canParse segmentMEA "MEA+WT+G+KGM:359.741'" + , canParse segmentMEA "MEA+VOL+ACP+MTQ:3.384'" + , canParse segmentRFF "RFF+ACD:012343210'" + , canParse segmentTCC "TCC+Some Info:ZZZ'" + , canParse segmentQTY "QTY+107:2.000000'" + , canParse segmentUNT "UNT+43+0002'" + , canParse segmentUNZ "UNZ+1+000000008'" + + , canParse messageIFCSUM "UNH+0002+IFCSUM:D:96A:UN'BGM+787::86+01234567+9'MOA+7::EUR'CNT+7:359.741:KGM'RFF+AFC:01234567'TDT+20+++31+0012332100:172::SOME COMPANY+SB'NAD+CZ+FR01++SHIPPER NAME+ RUE SOMEWHERE+CITY+FRA+01000'CTA+IC+Some Contact:Some Name'COM+some.email@example.com:EM'EQD+TE++E34T'CNI+++1'DTM+37:201904040000:203'DTM+38:201904082358:203'CNT+10:1'CNT+7:359.74:KGM'CNT+15:3.38:KGM'CNT+9:163:SV'NAD+SF+FR01++SHIPPER NAME+ RUE SOMEWHERE+CITY+FRA+01000'GID+1+163::::SV'PIA+1+0212455321:TG'FTX+AAA+++Default'MEA+WT+G+KGM:359.741'MEA+VOL+ACP+MTQ:3.384'RFF+ACD:0123432105'TCC+Some Info:ZZZ'QTY+107:2.000000'CNI+++2'DTM+64:201904080001:203'DTM+63:201904082359:203'CNT+10:1'CNT+7:359.74:KGM'CNT+15:3.38:KGM'CNT+9:163:SV'NAD+ST+2000000000++SOME ADDRESS+ ZI SOMEWHERE+CITY+FRA+01000'GID+1+163::::SV'PIA+1+0212455321:TG'FTX+AAA+++Default'MEA+WT+G+KGM:359.741'MEA+VOL+ACP+MTQ:3.384'RFF+ACD:012343210'TCC+Some Info:ZZZ'QTY+107:2.000000'UNT+43+0002'" + ] + +canParse :: Parser a -> Text -> Test +canParse p t = + let title = "\"" <> unpack t <> "\"" + in testCase title (() <$ parse (p <* eof) t @?= Right ()) -- cgit v1.2.3