blob: cc69aa05bde73382b43977bfdf20c6b93d5ed333 (
plain) (
tree)
|
|
package org.uic.barcode.ticketTestDB;
import java.util.TimeZone;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.uic.barcode.Decoder;
import org.uic.barcode.asn1.uper.UperEncoder;
import org.uic.barcode.logger.LoggerFactory;
import org.uic.barcode.staticFrame.ticketLayoutBarcode.TicketLayout;
import org.uic.barcode.ticket.api.spec.IOpenTicket;
import org.uic.barcode.ticket.api.spec.IPassengerType;
import org.uic.barcode.ticket.api.spec.ITariff;
import org.uic.barcode.ticket.api.spec.ITrainLink;
import org.uic.barcode.ticket.api.spec.ITraveler;
import org.uic.barcode.ticket.api.spec.IUicRailTicket;
public class DecodeDB9EuroTicketTest {
TimeZone defaulttimeZone = null;
/**
* Prepare tickets.
*/
@Before public void prepare() {
LoggerFactory.setActivateConsoleLog(true);
defaulttimeZone = TimeZone.getDefault();
//decode in local CET time zone
TimeZone.setDefault(TimeZone.getTimeZone("CET"));
}
/**
* clean up
*/
@After public void resetTimeZone() {
TimeZone.setDefault(defaulttimeZone);
}
@Test
public void testDecoder() throws Exception {
byte[] content = UperEncoder.bytesFromHexString(getEncodingV2Hex());
// try to decode
Decoder decoder = new Decoder(content);
TicketLayout layout = decoder.getLayout();
IUicRailTicket ticket = decoder.getUicTicket();
Assert.assertNotNull(ticket);
Assert.assertNotNull(ticket.getDocumentData());
Assert.assertNotNull(ticket.getIssuerDetails());
Assert.assertNotNull(ticket.getTravelerDetails());
assert(ticket.getIssuerDetails().getIssuer().equals("1080"));
assert(ticket.getIssuerDetails().getIssuerPNR().equals("D260V48G"));
String issuingDate = ticket.getIssuerDetails().getIssuingDate().toString();
assert(issuingDate.equals("Fri Oct 30 11:50:00 CET 2020"));
assert(ticket.getIssuerDetails().getSecurityProvider().equals("1080"));
assert(ticket.getIssuerDetails().isSecurePaperTicket() == false);
assert(ticket.getIssuerDetails().isActivated() == true);
assert(ticket.getIssuerDetails().isSpecimen() == false);
assert(ticket.getTravelerDetails().getTravelers().size() == 1);
ITraveler traveler = ticket.getTravelerDetails().getTravelers().iterator().next();
assert(traveler.getFirstName().equals("Karsten"));
assert(traveler.getLastName().equals("Will"));
assert(traveler.isTicketHolder() == true);
assert(ticket.getDocumentData().size() == 1);
IOpenTicket openTicket = (IOpenTicket) ticket.getDocumentData().iterator().next();
Assert.assertNotNull(openTicket.getValidRegionList());
assert(openTicket.getReference().equals("CN0CTUMY"));
String fromDate = openTicket.getValidFrom().toString();
assert(fromDate.equals("Thu Nov 05 00:00:00 CET 2020"));
assert(openTicket.getValidFromUTCoffset() == -4L);
String toDate = openTicket.getValidUntil().toString();
assert(toDate.equals("Fri Nov 06 10:00:00 CET 2020"));
assert(openTicket.getValidUntilUTCoffset() == -4L);
Assert.assertNotNull(openTicket.getTariffs());
assert(openTicket.getTariffs().size() == 1);
ITariff tariff = openTicket.getTariffs().iterator().next();
assert(tariff.getNumberOfPassengers() == 1);
assert(tariff.getPassengerType().equals(IPassengerType.adult));
assert(tariff.getTariffDescription().equals("Super Sparpreis"));
ITrainLink tl = (ITrainLink) openTicket.getValidRegionList().iterator().next();
Assert.assertNotNull(tl);
assert(tl.getTrain().equals("ICE973"));
String departureDate = tl.getDepartureDateTime().toString();
assert(departureDate.equals("Fri Nov 06 11:58:00 CET 2020"));
Assert.assertNull(layout);
Assert.assertNotNull(decoder);
}
public static String getEncodingV2Hex() {
return "2355543032323038303030303033000000005C57C2"+
"8521C3A1C3BCC29D5DC3960E2CC2897C18C390534"+
"EC2AFC387C388703AC2B367C39FC3BD55C2B70000"+
"0000422E1BC29F1CC3B9265E43C2B7493B2B51C39"+
"2C291007CC2B5C2870D3A2EC3B3C38249C38FC2B3"+
"3032343778C29C0BC28DC3B770757431303430303"+
"53534343656400379C2A539394049132303232343"+
"430353C283C3943CC2905068C2BCC29BC28F6B045"+
"0C29BC291C28141C28101430AC3974C76C3BFC39C"+
"C2BCC38CC292C38C420D2626090E064715C3AEC29"+
"6060FC3A66E29C28D74C2BFC288C29277C391C2BB"+
"C397C39DC289C2AC642E4A2D3978C39AC3ACC38D5"+
"CC383C2A4C2AB0BC3B27CC396C38DC2B04CC2BB3B"+
"79C2994EC3B4265EC3A7C28CC3845C1D05C2A7C38"+
"4C28CC2BCC28CC3BC340108C38F2D27C3BFC3B0C3"+
"BCC28CC384C2B4C394C2BC603D15C296C38606763"+
"1C293C380C292C2B069C38FC297C2851D4B136B57"+
"776209572F13336B370B7B16C2AEC2A032C3A508C"+
"283C282C388C3846561C2B9C2B337255DC38D33C2"+
"8BC29459C29B395B78C3AAC28EC399C39BC28E6D5"+
"D17C2937BC38732C3A73CC2B73A6FC38BC29D1D45"+
"4FC29BC2AEC3B1C38CC2B1C2883AC39B6CC38E7B6"+
"D7B16030046115A6F";
}
}
|