x12-types 0.9.0

Bindings for the ASC X12 EDI definitions
Documentation
use crate::v005030::*;

#[test]
fn parse_1() {
    let str = r#"ISA*00*XXXXX     *00*          *ZZ*XXXXXXX        *ZZ*XXXXXX         *230614*1235*^*00503*000099667*0*P*>~
GS*SR*XXXXXXX*XXXXXX*20230614*1235*99667*X*005030~
ST*404*99163~
BX*04*R*CC*3PHLTXXXXX*XXXX*K*B~
BNX*N**S~
M3*R*20230614*0735~
N9*PO*3PHLTXXXXX~
N9*BN*3PHLTXXXXX~
N9*BM*XXXX23BOG0099999~
N9*ED*NOEE130.37(E)~
N9*CMH*CARRIER~
CM*323N*L*CARTAGENA CO*20230605*****XXXXXX KENTUCKY~
CM*323N*D*NEW YORK NY US*20230615*****XXXXXX KENTUCKY~
N7*HASU*516225*19250*N*3720*****S*CN*XXXX***4000*A**3~
M7*H91944A~
F9**ELIZABETH MARINE TE*NJ~
D9**BRAMPTON INTER TERM*ON~
N1*SF*XXXXXXX XXXXXXXX LIMITED~
N3*85-85 VIA 40  RIOMAR~
N4*BARRANQUILLA*AT*080001*CO~
PER*DC****TE*57 53616200~
N1*PF*XXXXXXX XXX NORTH AMERICA, INC~
N3*180 PARK AVE~
N4*FLORHAM PARK*AT*07932*US~
PER*DC**FX*215 829 9507*TE*1 9735145338~
N1*SH*XXXXXXX XXX NORTH AMERICA,~
N3*2000 MARKET ST F 9 STE 900~
N4*PHILADELPHIA*AT*19103*US~
PER*DC**FX*215 829 9507*TE*001 2159999999~
N1*N1*XXXXXXX XXX LINES~
N3*2700 MATHESON BLVD EAST SUITE~
N4*MISSISSAUGA*ON*L4W 4V9*CA~
PER*DC**FX*215 829 9507*TE*19056999999~
N1*CN*XXXXXXX XXX NORTH AMERICA,~
N3*2000 MARKET ST F 9 STE 900~
N4*PHILADELPHIA*AT*19103*US~
PER*DC**FX*215 829 9507*TE*001 2159999999~
N1*UC*UPL NA, INC~
N3*789 DONNYBROOK DR~
N4*DORCHESTER*AT*N0L 1G5*CA~
PER*DC****TE*001 6104912800~
N1*CB*XXXXXXX XXX LINES~
N3*2700 MATHESON BLVD EAST SUITE~
N4*MISSISSAUGA*ON*L4W 4V9*CA~
PER*DC**FX*215 829 9507*TE*19056999999~
N1*XQ*XXXXXXX XXX LINES~
N3*2700 MATHESON BLVD EAST SUITE~
N4*MISSISSAUGA*ON*L4W 4V9*CA~
PER*DC**FX*215 829 9507*TE*19056999999~
R2*XXXX*S*BUFF**85*X~
R2*CN*1***85*X~
H3*IP~
LX*1~
L5*1*IN 26 PALLETS. MANZATE PROSTICK (75DF) 20KG  (FUNG*4969999*T~
L0*1***19999*N***910*BAG~
LS*LH1~
LH1*BG*910*UN3077**4969999*KG*19999***III~
LH2*9*P~
LH3*ENVIRONMENTALLY HAZARDOUS*I*NOS~
LH3*SUBSTANCE, SOLID, N.O.S.*I*NOS~
LFH*TEC*(MANCOZEB)~
LFH*ADI*F-A~
LFH*MPI*(MANCOZEB)~
LFH*ADI*PLASTICS FILM BAGS~
PER*HM*CCN: CISPROQUIM*TE*+57  99-9999-999999~
N1*SH*XXXXXXX XXXXXXXX LIMITED~
N3*85-85 VIA 40  RIOMAR~
N4*BARRANQUILLA*ZZ*080001*CO~
N1*CN*UPL NA, INC~
N3*789 DONNYBROOK DR~
N4*DORCHESTER*ON*N0L 1G5*CA~
LE*LH1~
LH6*PAPERWORK ON FILE-ORIGINAL SHIPPER~
SE*72*99163~
GE*1*99667~
IEA*1*000099667~
"#;
    let (rest, obj) = Transmission::<_404>::parse(str).unwrap();
    println!("{obj:?}");
    assert!(rest.is_empty());
    let s = format!("{obj}");
    assert_eq!(s, str);
}

#[test]
fn parse_2() {
    let str = r#"ISA*00*XXXXX     *00*          *ZZ*XXXXXXX        *ZZ*XXXXXX         *230519*1304*^*00503*000097314*0*P*>~
GS*SR*XXXXXXX*XXXXXX*20230519*1304*97314*X*005030~
ST*404*96814~
BX*04*R*11*3PHLT99999*CSXT*K*B~
BNX*N**S~
M3*R*20230519*0804~
N9*PO*3PHLT99999~
N9*BN*3PHL999999~
N9*BM*3PHL999999~
N9*CT*AGRT05012~
N9*CMH*CARRIER~
CM*320S*L*LONG BEACH CA US*20230605*****XXX XXXXXXXXXXX~
CM*320S*D*MELBOURNE AU*20230702*****XXX XXXXXXXXXXX~
N7*MRKU*550775*2000*N*3810*****S*CN*XXXX***4000*A**3~
F9**CINCINNATI*OH~
D9**LOS ANGELES*CA~
N1*SF*XXXXXXX XXXXXXX~
N3*845 A AVE E~
N4*XXXXXXX**47274*US~
PER*DC****TE*1 9999999999~
N1*PF*XXXXXXX XXX NORTH AMERICA, INC~
N3*180 PARK AVE~
N4*FLORHAM PARK**07932*US~
PER*DC**FX*215 829 9507*TE*1 9999999999~
N1*SH*XXXXXXX XXX NORTH AMERICA,~
N3*2000 MARKET ST F 9 STE 900~
N4*PHILADELPHIA**19103*US~
PER*DC**FX*215 829 9507*TE*001 9999999999~
N1*N1*XXXXXXX XXX NORTH AMERICA,~
N3*2000 MARKET ST F 9 STE 900~
N4*PHILADELPHIA*PA*19103*US~
PER*DC**FX*215 829 9507*TE*001 9999999999~
N1*CN*XXXXXXX XXX NORTH AMERICA,~
N3*2000 MARKET ST F 9 STE 900~
N4*PHILADELPHIA**19103*US~
PER*DC**FX*215 829 9507*TE*001 9999999999~
R2*CSXT*R*CHGO**85*X~
R2*BNSF*1***85*X~
H3*XP~
LX*1~
L5*1*MACHINERY:PARTS*4611110*T~
L0*1***2000*N***1*CNT~
PI*PI*AGRT05012*TP**CSXT*AGRT~
PI*CT*80*TP**BNSF*MA~
SE*43*96814~
GE*1*97314~
IEA*1*000097314~
"#;
    let (rest, obj) = Transmission::<_404>::parse(str).unwrap();
    println!("{obj:?}");
    assert!(rest.is_empty());
    let s = format!("{obj}");
    assert_eq!(s, str);
}