package org.uic.barcode.ticket.api.test; import java.text.ParseException; import java.util.TimeZone; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; import org.uic.barcode.ticket.api.asn.omv3.HemisphereLongitudeType; import org.uic.barcode.ticket.api.asn.omv3.IncludedOpenTicketType; import org.uic.barcode.ticket.api.asn.omv3.LineType; import org.uic.barcode.ticket.api.asn.omv3.BerthTypeType; import org.uic.barcode.ticket.api.asn.omv3.BoardingOrArrivalType; import org.uic.barcode.ticket.api.asn.omv3.CodeTableType; import org.uic.barcode.ticket.api.asn.omv3.CompartmentGenderType; import org.uic.barcode.ticket.api.asn.omv3.CompartmentPositionType; import org.uic.barcode.ticket.api.asn.omv3.ConfirmationTypeType; import org.uic.barcode.ticket.api.asn.omv3.CustomerCardData; import org.uic.barcode.ticket.api.asn.omv3.DelayConfirmation; import org.uic.barcode.ticket.api.asn.omv3.DocumentData; import org.uic.barcode.ticket.api.asn.omv3.FIPTicketData; import org.uic.barcode.ticket.api.asn.omv3.GenderType; import org.uic.barcode.ticket.api.asn.omv3.GeoCoordinateSystemType; import org.uic.barcode.ticket.api.asn.omv3.GeoUnitType; import org.uic.barcode.ticket.api.asn.omv3.HemisphereLatitudeType; import org.uic.barcode.ticket.api.asn.omv3.LinkMode; import org.uic.barcode.ticket.api.asn.omv3.OpenTicketData; import org.uic.barcode.ticket.api.asn.omv3.ParkingGroundData; import org.uic.barcode.ticket.api.asn.omv3.PassData; import org.uic.barcode.ticket.api.asn.omv3.PassengerType; import org.uic.barcode.ticket.api.asn.omv3.PolygoneType; import org.uic.barcode.ticket.api.asn.omv3.PriceTypeType; import org.uic.barcode.ticket.api.asn.omv3.ReservationData; import org.uic.barcode.ticket.api.asn.omv3.ServiceType; import org.uic.barcode.ticket.api.asn.omv3.StationPassageData; import org.uic.barcode.ticket.api.asn.omv3.TicketType; import org.uic.barcode.ticket.api.asn.omv3.TrainLinkType; import org.uic.barcode.ticket.api.asn.omv3.TravelClassType; import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; import org.uic.barcode.ticket.api.asn.omv3.ViaStationType; import org.uic.barcode.ticket.api.asn.omv3.VoucherData; import org.uic.barcode.ticket.api.asn.omv3.ZoneType; import org.uic.barcode.ticket.api.test.testtickets.AllElementsTestTicketV3; /** * * * */ public class AsnLevelAllElementsTestV3 { /** The ticket decoded 1. */ UicRailTicketData ticket = null; byte[] encodedInTimeZone1 = null; TimeZone defaulttimeZone = null; /** * Prepare tickets. */ @Before public void prepare() { defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone TimeZone.setDefault(TimeZone.getTimeZone("UTC")); } /** * clean up */ @After public void resetTimeZone() { TimeZone.setDefault(defaulttimeZone); } /** * Test encode test tickets in UTC and decode in CET. * * @throws IllegalArgumentException the illegal argument exception * @throws IllegalAccessException the illegal access exception * @throws ParseException */ @Test public void decoding() { //get ticket String expectedHex = AllElementsTestTicketV3.getEncodingHex(); byte[] content = UperEncoder.bytesFromHexString(expectedHex); ticket = UperEncoder.decode(content, UicRailTicketData.class); assert(ticket != null); byte[] encoded = UperEncoder.encode(ticket); String encodedHex = UperEncoder.hexStringFromBytes(encoded); int i = getIndexOfDifference(expectedHex,encodedHex); assert (i == 0); assert(expectedHex.equals(encodedHex)); } @Test public void encoding() throws IllegalArgumentException, IllegalAccessException, ParseException { //get ticket String expectedHex = AllElementsTestTicketV3.getEncodingHex(); byte[] content = UperEncoder.bytesFromHexString(expectedHex); ticket = UperEncoder.decode(content, UicRailTicketData.class); assert(ticket != null); byte[] encoded = UperEncoder.encode(ticket); assert(encoded != null); assert(encoded.length > 20); String encodedHex = UperEncoder.hexStringFromBytes(encoded); int i = getIndexOfDifference(expectedHex,encodedHex); assert (i == 0); assert(expectedHex.equals(encodedHex)); validateTicketContent(ticket); } private void validateTicketContent(UicRailTicketData t) { assert (t != null); assert(t.getControlDetail() != null); assert(t.getControlDetail().getAgeCheckRequired() == false); assert(t.getControlDetail().getIdentificationByPassportId() == false); assert(t.getControlDetail().getIdentificationByIdCard() == false); assert(t.getControlDetail().getOnlineValidationRequired() == false); assert(t.getControlDetail().getIdentificationItem() == 12); assert(t.getControlDetail().getPassportValidationRequired() == false); assert(t.getControlDetail().getRandomDetailedValidationRequired() == 50); assert(t.getControlDetail().getExtension() != null); assert(t.getControlDetail().getReductionCardCheckRequired() == false); assert(t.getControlDetail().getInfoText().equals("control")); assert(t.getControlDetail().getIdentificationByCardReference() != null); assert(t.getControlDetail().getIdentificationByCardReference().size() == 1); assert(t.getControlDetail().getIdentificationByCardReference().get(0).getCardIdIA5().equals("5678")); assert(t.getControlDetail().getIdentificationByCardReference().get(0).getCardIdNum().intValue() == 5678); assert(t.getControlDetail().getIdentificationByCardReference().get(0).getCardIssuerIA5().equals("1234")); assert(t.getControlDetail().getIdentificationByCardReference().get(0).getCardIssuerNum().intValue() == 1234); assert(t.getControlDetail().getIdentificationByCardReference().get(0).getCardName().equals("testcard")); assert(t.getControlDetail().getIdentificationByCardReference().get(0).getCardType().intValue() == 123); assert(t.getControlDetail().getIdentificationByCardReference().get(0).getLeadingCardIdIA5().equals("3456")); assert(t.getControlDetail().getIdentificationByCardReference().get(0).getLeadingCardIdNum().intValue() == 3456); assert(t.getControlDetail().getIdentificationByCardReference().get(0).getTrailingCardIdIA5().equals("100")); assert(t.getControlDetail().getIdentificationByCardReference().get(0).getTrailingCardIdNum() == 100); assert(t.getControlDetail().getIncludedTickets() != null); assert(t.getControlDetail().getIncludedTickets().size() == 1); assert(t.getControlDetail().getIncludedTickets().get(0).getIssuerName().equals("XYZ")); assert(t.getControlDetail().getIncludedTickets().get(0).getIssuerPNR().equals("LDWDUR45")); assert(t.getControlDetail().getIncludedTickets().get(0).getProductOwnerIA5().equals("IEFHU")); assert(t.getControlDetail().getIncludedTickets().get(0).getProductOwnerNum() == 1080); assert(t.getControlDetail().getIncludedTickets().get(0).getLinkMode().equals(LinkMode.issuedTogether)); assert(t.getControlDetail().getIncludedTickets().get(0).getReferenceIA5().equals("KDJET")); assert(t.getControlDetail().getIncludedTickets().get(0).getReferenceNum().longValue() == 801234567890L); assert(t.getControlDetail().getIncludedTickets().get(0).getTicketType().equals(TicketType.openTicket)); assert(t.getExtension() != null); assert(t.getExtension().size() == 2); assert(t.getExtension().get(0).getExtensionId().equals("1")); assert(UperEncoder.hexStringFromBytes(t.getExtension().get(0).getExtensionData()).equals("82DA")); assert(t.getExtension().get(1).getExtensionId().equals("2")); assert(UperEncoder.hexStringFromBytes(t.getExtension().get(1).getExtensionData()).equals("83DA")); assert(t.getIssuingDetail() != null); assert(t.getIssuingDetail().getActivated() == true); assert(t.getIssuingDetail().getCurrency().equals("SRF")); assert(t.getIssuingDetail().getCurrencyFract() == 3); assert(t.getIssuingDetail().getExtension() != null); assert(t.getIssuingDetail().getIssuedOnLine() == 12); assert(t.getIssuingDetail().getIssuedOnTrainIA5().equals("123")); assert(t.getIssuingDetail().getIssuedOnTrainNum() == 123); assert(t.getIssuingDetail().getIssuerName().equals("name")); assert(t.getIssuingDetail().getIssuerIA5().equals("1")); assert(t.getIssuingDetail().getIssuerNum() == 32000); assert(t.getIssuingDetail().getIssuerPNR().equals("issuerTestPNR")); assert(t.getIssuingDetail().getIssuingDay() == 1); assert(t.getIssuingDetail().getIssuingTime() == 600); assert(t.getIssuingDetail().getIssuingYear() == 2018); assert(t.getIssuingDetail().getSecurePaperTicket() == false); assert(t.getIssuingDetail().getSecurityProviderIA5().equals("1")); assert(t.getIssuingDetail().getSecurityProviderNum() == 1); assert(t.getIssuingDetail().getSpecimen() == true); assert(t.getIssuingDetail().getPointOfSale() != null); assert(t.getIssuingDetail().getPointOfSale().getGeoUnit().equals(GeoUnitType.microDegree)); assert(t.getIssuingDetail().getPointOfSale().getCoordinateSystem().equals(GeoCoordinateSystemType.wgs84)); assert(t.getIssuingDetail().getPointOfSale().getAccuracy().equals(GeoUnitType.microDegree)); assert(t.getIssuingDetail().getPointOfSale().getHemisphereLatitude().equals(HemisphereLatitudeType.east)); assert(t.getIssuingDetail().getPointOfSale().getHemisphereLongitude().equals(HemisphereLongitudeType.north)); assert(t.getIssuingDetail().getPointOfSale().getLatitude() == 56789); assert(t.getIssuingDetail().getPointOfSale().getLongitude() == 12345); assert(t.getTransportDocument() != null); assert(!t.getTransportDocument().isEmpty()); DocumentData d1 = t.getTransportDocument().get(0); assert(d1 != null); assert(d1.getTicket().getReservation() != null); validateReservation(d1.getTicket().getReservation()); DocumentData d2 = t.getTransportDocument().get(1); assert(d2 != null); assert(d2.getTicket().getCarCarriageReservation() != null); assert(d2.getToken() != null); assert(UperEncoder.hexStringFromBytes(d2.getToken().getToken()).equals("82DA")); assert(d2.getToken().getTokenProviderIA5().equals("VDV")); assert(d2.getToken().tokenProviderNum == 123); assert(d2.getToken().getTokenSpecification().equals("TEST")); DocumentData d3b = t.getTransportDocument().get(2); assert(d3b != null); assert(d3b.getTicket().getOpenTicket() != null); validateOpenTicket(d3b.getTicket().getOpenTicket()); DocumentData d3 = t.getTransportDocument().get(3); assert(d3 != null); assert(d3.getTicket().getPass() != null); validatePass(d3.getTicket().getPass()); DocumentData d4 = t.getTransportDocument().get(4); assert(d4 != null); assert(d4.getTicket().getVoucher() != null); validateVoucher(d4.getTicket().getVoucher()); DocumentData d5 = t.getTransportDocument().get(5); assert(d5 != null); assert(d5.getTicket().getCustomerCard() != null); validateCustomerCard(d5.getTicket().getCustomerCard()); DocumentData d7 = t.getTransportDocument().get(6); assert(d7 != null); assert(d7.getTicket().getCounterMark() != null); DocumentData d8 = t.getTransportDocument().get(7); assert(d8 != null); assert(d8.getTicket().getParkingGround() != null); validateParking(d8.getTicket().getParkingGround()); DocumentData d9 = t.getTransportDocument().get(8); assert(d9 != null); assert(d9.getTicket().getFipTicket() != null); validateFip(d9.getTicket().getFipTicket()); DocumentData d10 = t.getTransportDocument().get(9); assert(d10 != null); assert(d10.getTicket().getStationPassage() != null); validateStationPassage(d10.getTicket().getStationPassage()); DocumentData d11 = t.getTransportDocument().get(10); assert(d11 != null); assert(d11.getTicket().getExtension() != null); DocumentData d12 = t.getTransportDocument().get(11); assert(d12 != null); assert(d12.getTicket().getDelayConfirmation() != null); validateDelay(d12.getTicket().getDelayConfirmation()); assert(t.getTravelerDetail() != null); assert(t.getTravelerDetail().getGroupName().equals("myGroup")); assert(t.getTravelerDetail().getPreferedLanguage().equals("EN")); assert(t.getTravelerDetail().getTraveler() != null); assert(t.getTravelerDetail().getTraveler().size() == 1); assert(t.getTravelerDetail().getTraveler().get(0).getCountryOfIdCard() == 103); assert(t.getTravelerDetail().getTraveler().get(0).getCountryOfPassport() == 102); assert(t.getTravelerDetail().getTraveler().get(0).getCountryOfResidence() == 101); assert(t.getTravelerDetail().getTraveler().get(0).getCustomerIdIA5().equals("DZE5gT")); assert(t.getTravelerDetail().getTraveler().get(0).getCustomerIdNum() == 12345); assert(t.getTravelerDetail().getTraveler().get(0).getYearOfBirth() == 1901); assert(t.getTravelerDetail().getTraveler().get(0).getDayOfBirth() == 31); assert(t.getTravelerDetail().getTraveler().get(0).getFirstName().equals("John")); assert(t.getTravelerDetail().getTraveler().get(0).getGender().equals(GenderType.male)); assert(t.getTravelerDetail().getTraveler().get(0).getIdCard().equals("12345")); assert(t.getTravelerDetail().getTraveler().get(0).getLastName().equals("Dow")); assert(t.getTravelerDetail().getTraveler().get(0).getMonthOfBirth() == 12); assert(t.getTravelerDetail().getTraveler().get(0).getPassengerType().equals(PassengerType.senior)); assert(t.getTravelerDetail().getTraveler().get(0).getPassengerWithReducedMobility() == false); assert(t.getTravelerDetail().getTraveler().get(0).getPassportId().equals("JDTS")); assert(t.getTravelerDetail().getTraveler().get(0).getSecondName().equals("Little")); assert(t.getTravelerDetail().getTraveler().get(0).getTitle().equals("PhD")); assert(t.getTravelerDetail().getTraveler().get(0).getTicketHolder() == true); assert(t.getTravelerDetail().getTraveler().get(0).getStatus() != null); assert(t.getTravelerDetail().getTraveler().get(0).getStatus().size() == 1); assert(t.getTravelerDetail().getTraveler().get(0).getStatus().get(0).getCustomerStatus() == 1); assert(t.getTravelerDetail().getTraveler().get(0).getStatus().get(0).getCustomerStatusDescr().equals("senior")); } private void validateDelay(DelayConfirmation t) { assert(t != null); assert(t.getTrainNum() == 100); assert(t.getTrainIA5().equals("100")); assert(t.getPlannedArrivalYear() == 2022); assert(t.getPlannedArrivalDay() == 12); assert(t.getPlannedArrivalTime() == 1000); assert(t.getDepartureUTCOffset() == 30); assert(t.getReferenceIA5().equals("ABDJ12345")); assert(t.getReferenceNum().intValue() == 12345); assert(t.getStationNum() == 8000001); assert(t.getStationIA5().equals("DJE")); assert(t.getDelay() == 31); assert(t.getTrainCancelled() == false); assert(t.getConfirmationType().equals(ConfirmationTypeType.travelerDelayConfirmation)); assert(t.getAffectedTickets() != null); assert(t.getAffectedTickets().size() == 1); assert(t.getAffectedTickets().get(0).getReferenceIA5().equals("KDJET")); assert(t.getAffectedTickets().get(0).getReferenceNum() == 801234567890L); assert(t.getAffectedTickets().get(0).getIssuerName().equals( "XYZ")); assert(t.getAffectedTickets().get(0).getIssuerPNR().equals( "LDWDUR45")); assert(t.getAffectedTickets().get(0).getProductOwnerNum() == 1080); assert(t.getAffectedTickets().get(0).getProductOwnerIA5().equals( "IEFHU")); assert(t.getAffectedTickets().get(0).getTicketType().equals(TicketType.openTicket)); assert(t.getAffectedTickets().get(0).getLinkMode().equals( LinkMode.issuedTogether)); assert(t.getInfoText().equals( "delay confirmation")); assert(t.getExtension() != null); } private void validateCustomerCard(CustomerCardData c) { assert(c != null); assert (c.getExtension() != null); assert (c.getCustomer() != null); assert (c.getCustomer() != null); assert (c.getCardIdIA5().equals("2345")); assert (c.getCardIdNum().intValue() == 123456); assert (c.getValidFromYear() == 2269); assert (c.getValidFromDay() == 2); assert (c.getValidUntilYear() == 1); assert (c.getValidUntilDay() == 5); assert (c.getClassCode().equals(TravelClassType.second)); assert (c.getCardType() == 15); assert (c.getCardTypeDescr().equals( "RAILPLUS")); assert (c.getCustomerStatus() == 1); assert (c.getCustomerStatusDescr().equals( "gold")); assert (c.getIncludedServices() != null); assert (c.getIncludedServices().size() == 2); assert (c.getIncludedServices().get(0) == 1); assert (c.getIncludedServices().get(1) == 2); } private void validateVoucher(VoucherData v) { assert(v != null); assert (v.getExtension() != null); assert(v.getReferenceIA5().equals("810123456789")); assert(v.getReferenceNum().longValue() == 810123456789L); assert(v.getProductOwnerNum() == 23456); assert(v.getProductOwnerIA5().equals("COFFEEMACHINE")); assert(v.getProductIdNum() == 65535); assert(v.getProductIdIA5().equals("123456")); assert(v.getValidFromYear() == 2022); assert(v.getValidFromDay() == 1); assert(v.getValidUntilYear() == 2022); assert(v.getValidUntilDay() == 1); assert(v.getValue() == 500); assert(v.getType() == 123); assert(v.getInfoText().equals("coffee voucher")); } private void validateStationPassage(StationPassageData t) { assert(t != null); assert(t.getExtension() != null); assert(t.getReferenceIA5().equals("810123456789")); assert(t.getReferenceNum().longValue() == 810123456789L); assert(t.getProductOwnerNum() == 23456); assert(t.getProductOwnerIA5().equals("23456")); assert(t.getProductIdNum() == 65535); assert(t.getProductIdIA5().equals("123456")); assert(t.getProductName().equals("passage")); assert(t.getStationCodeTable().equals(CodeTableType.stationUIC)); assert(t.getStationNum() != null); assert(t.getStationNum().size() == 1); assert(t.getStationNum().get(0) == 8200001); assert(t.getStationIA5() != null); assert(t.getStationIA5().size() == 1); assert(t.getStationIA5().get(0).equals("AMS")); assert(t.getStationNameUTF8() != null); assert(t.getStationNameUTF8().size() == 1); assert(t.getStationNameUTF8().get(0).equals("Amsterdam")); assert(t.getAreaCodeNum() != null); assert(t.getAreaCodeNum().size() == 1); assert(t.getAreaCodeNum().get(0) == 8200001); assert(t.getAreaCodeIA5() != null); assert(t.getAreaCodeIA5().size() == 1); assert(t.getAreaCodeIA5().get(0).equals("AMS")); assert(t.getAreaNameUTF8() != null); assert(t.getAreaNameUTF8().size() == 1); assert(t.getAreaNameUTF8().get(0).equals("Amsterdam")); assert(t.getValidFromDay() == 5); assert(t.getValidFromTime() == 0); assert(t.getValidFromUTCOffset() == 1); assert(t.getValidUntilDay() == 5); assert(t.getValidUntilTime() == 1000); assert(t.getValidUntilUTCOffset() == 1); assert(t.getNumberOfDaysValid() == 5); } private void validateParking(ParkingGroundData t) { assert(t != null); assert(t.getExtension() != null); assert(t.getReferenceIA5().equals("810123456789")); assert(t.getReferenceNum().longValue() == 810123456789L); assert(t.getProductOwnerNum() == 23456); assert(t.getProductOwnerIA5().equals("23456")); assert(t.getProductIdNum() == 65535); assert(t.getProductIdIA5().equals("123456")); assert(t.getParkingGroundId().equals( "IA5")); assert(t.getFromParkingDate() == 370); assert(t.getToParkingDate() == 370); assert(t.getAccessCode().equals( "4ga")); assert(t.getLocation().equals( "Parking Frankfurt Main West")); assert(t.getStationCodeTable().equals(CodeTableType.stationUIC)); assert(t.getStationNum() == 8000001); assert(t.getStationIA5().equals( "8000001")); assert(t.getSpecialInformation().equals( "outdoor parking")); assert(t.getEntryTrack().equals( "left")); assert(t.getNumberPlate().equals( "AA-DE-12345")); assert(t.getPrice() == 500); assert(t.getVatDetails() != null); assert(t.getVatDetails().size() == 1); } private void validateFip(FIPTicketData t) { assert(t != null); assert(t.getExtension() != null); assert(t.getReferenceIA5().equals("810123456789")); assert(t.getReferenceNum().longValue() == 810123456789L); assert(t.getProductOwnerNum() == 23456); assert(t.getProductOwnerIA5().equals("23456")); assert(t.getProductIdNum() == 65535); assert(t.getProductIdIA5().equals("123456")); assert(t.getValidFromDay() == -367); assert(t.getValidUntilDay() == -1); assert(t.getActivatedDay() != null); assert(t.getActivatedDay().size() == 4); assert(t.getActivatedDay().get(0) == 1); assert(t.getActivatedDay().get(1) == 13); assert(t.getActivatedDay().get(2) == 14); assert(t.getActivatedDay().get(3) == 15); assert(t.getCarrierNum()!= null); assert(t.getCarrierNum().size() == 2); assert(t.getCarrierNum().get(0) == 1080); assert(t.getCarrierNum().get(1) == 1181); assert(t.getCarrierIA5() != null); assert(t.getCarrierIA5().size() == 2); assert(t.getCarrierIA5().contains("1080")); assert(t.getCarrierIA5().contains("1181")); assert(t.getNumberOfTravelDays() == 8); assert(t.getIncludesSupplements() == true); assert(t.getClassCode().equals(TravelClassType.first)); } private void validateOpenTicket(OpenTicketData t) { assert (t != null); assert(t.getReferenceNum().longValue() == 810123456789L); assert(t.getReferenceIA5().equals("810123456789")); assert(t.getProductOwnerNum() == 23456); assert(t.getProductOwnerIA5().equals( "23456")); assert(t.getProductIdNum() == 65535); assert(t.getProductIdIA5().equals( "123456")); assert(t.getExtIssuerId() == 12); assert(t.getIssuerAutorizationId() == 13); assert(t.getReturnIncluded() == false); assert(t.getStationCodeTable().equals(CodeTableType.stationERA)); assert(t.getFromStationNum() == 8100001); assert(t.getFromStationIA5().equals("8100001")); assert(t.getToStationNum() == 8000002); assert(t.getToStationIA5().equals( "8100002")); assert(t.getFromStationNameUTF8().equals( "A-STATION")); assert(t.getToStationNameUTF8().equals( "B-STATION")); assert(t.getValidRegionDesc().equals("From A to B via C")); assert (t.getValidRegion() != null); assert(t.getValidRegion().size() == 5); assert(t.getValidRegion().get(0).getViaStations() != null); validateRegion(t.getValidRegion().get(0).getViaStations()); validateRegion(t.getValidRegion().get(1).getZones()); validateRegion(t.getValidRegion().get(2).getLines()); validateRegion(t.getValidRegion().get(3).getTrainLink()); validateRegion(t.getValidRegion().get(4).getPolygone()); assert(t.getReturnDescription() != null); assert(t.getReturnDescription().getFromStationNum() == 8100001); assert(t.getReturnDescription().getFromStationIA5().equals("8100001")); assert(t.getReturnDescription().getToStationNum() == 8000002); assert(t.getReturnDescription().getToStationIA5().equals( "8100002")); assert(t.getReturnDescription().getFromStationNameUTF8().equals( "A-STATION")); assert(t.getReturnDescription().getToStationNameUTF8().equals( "B-STATION")); assert(t.getReturnDescription().getValidReturnRegionDesc().equals( "return")); assert(t.getReturnDescription().getValidReturnRegion() != null); assert(t.getReturnDescription().getValidReturnRegion().size() == 1); assert(t.getValidFromDay() == 700); assert(t.getValidFromTime() == 0); assert(t.getValidFromUTCOffset() == 60); assert(t.getValidUntilDay() == 370); assert(t.getValidUntilTime() == 1439); assert(t.getValidUntilUTCOffset() == 10); assert(t.getActivatedDay() != null); assert(t.getActivatedDay().size() == 2); assert(t.getActivatedDay().get(0) == 1); assert(t.getActivatedDay().get(1) == 2); assert(t.getClassCode().equals(TravelClassType.first)); assert(t.getServiceLevel().equals("A")); assert(t.getCarriersNum() != null); assert(t.getCarriersNum().size() == 2); assert(t.getCarriersNum().get(0) == 1080); assert(t.getCarriersNum().get(1) == 1181); assert(t.getCarriersIA5() != null); assert(t.getCarriersIA5().size() == 2); assert(t.getCarriersIA5().get(0).equals("1080")); assert(t.getCarriersIA5().get(1).equals("1181")); assert(t.getIncludedServiceBrands() != null); assert(t.getIncludedServiceBrands().size() == 2); assert(t.getIncludedServiceBrands().get(0) == 108); assert(t.getIncludedServiceBrands().get(1) == 118); assert(t.getExcludedServiceBrands() != null); assert(t.getExcludedServiceBrands().size() == 2); assert(t.getExcludedServiceBrands().get(0) == 108); assert(t.getExcludedServiceBrands().get(1) == 118); assert(t.getTariffs() != null); assert(t.getTariffs().size() == 1); assert (t.getPrice() == 12345); assert (t.getVatDetails() != null); assert (t.getVatDetails().size() == 1); assert (t.getInfoText().equals("openTicketInfo")); assert (t.getIncludedAddOns() != null); assert (t.getIncludedAddOns().size() == 1); validate(t.getIncludedAddOns().get(0)); assert(t.getLuggage() != null); assert(t.getIncludedTransportTypes() != null); assert(t.getIncludedTransportTypes().size() == 2); assert(t.getIncludedTransportTypes().get(0) == 10); assert(t.getIncludedTransportTypes().get(1) == 11); assert(t.getExcludedTransportTypes() != null); assert(t.getExcludedTransportTypes().size() == 2); assert(t.getExcludedTransportTypes().get(0) == 10); assert(t.getExcludedTransportTypes().get(1) == 18); assert(t.getExtension() != null); } private void validateRegion(TrainLinkType t) { assert (t != null); assert(t.getTrainNum() == 12345); assert(t.getTrainIA5().equals("12345")); assert(t.getTravelDate() == 2); assert(t.getDepartureTime() == 1439); assert(t.departureUTCOffset == -60); assert(t.getFromStationNum() == 8100001); assert(t.getFromStationIA5().equals("8100001")); assert(t.getToStationNum() == 8000002); assert(t.getToStationIA5().equals( "8100002")); assert(t.getFromStationName().equals( "A-STATION")); assert(t.getToStationName().equals( "B-STATION")); } private void validateRegion(PolygoneType p) { assert(p != null); assert(p.getFirstEdge() != null); assert(p.getFirstEdge().getLongitude() == 12345); assert(p.getFirstEdge().getLatitude() == 56789); assert(p.getEdges() != null); assert(p.getEdges().size() == 2); assert(p.getEdges().get(0).getLongitude().intValue() == 12345); assert(p.getEdges().get(0).getLatitude().intValue() == 56789); assert(p.getEdges().get(1).getLongitude().intValue() == 12345); assert(p.getEdges().get(1).getLatitude().intValue() == 56789); } private void validateRegion(ZoneType z) { assert(z != null); assert(z.getCarrierNum() == 1080); assert(z.getCarrierIA5().equals("1080")); assert(z.getStationCodeTable().equals(CodeTableType.stationERA)); assert(z.getEntryStationNum() == 1234); assert(z.getEntryStationIA5().equals( "1234")); assert(z.getTerminatingStationNum() == 2345); assert(z.getTerminatingStationIA5().equals( "2345")); assert(z.getCity().intValue() == 123456); assert(z.getZoneId() != null); assert(z.getZoneId().size() == 2); assert(z.getZoneId().get(0) == 100); assert(z.getZoneId().get(1) == 200); assert(UperEncoder.hexStringFromBytes(z.getBinaryZoneId()).equals("82DA")); assert(z.getNutsCode().equals("DE4711")); } private void validateRegion(LineType z) { assert(z.getCarrierNum() == 1080); assert(z.getCarrierIA5().equals("1080")); assert(z.getStationCodeTable().equals(CodeTableType.stationERA)); assert(z.getEntryStationNum() == 1234); assert(z.getEntryStationIA5().equals( "1234")); assert(z.getTerminatingStationNum() == 2345); assert(z.getTerminatingStationIA5().equals( "2345")); assert(z.getCity().intValue() == 123456); assert(z.getLineId() != null); assert(z.getLineId().size() == 2); assert(z.getLineId().get(0) == 100); assert(z.getLineId().get(1) == 200); } private void validateRegion(ViaStationType t) { assert( t != null); assert(t.getRoute() != null); assert(t.getRoute().size() == 4); assert(t.getRoute().get(0).getStationNum() == 123455); assert(t.getRoute().get(0).getStationIA5().equals("123455")); assert(t.getRoute().get(0).getBorder() == false); assert(t.getRoute().get(1).getStationNum() == 123456); assert(t.getRoute().get(1).getBorder() == false); assert(t.getRoute().get(2).getAlternativeRoutes() != null); assert(t.getRoute().get(2).getAlternativeRoutes().size() == 2); assert(t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute() != null); assert(t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().size() == 2); assert(t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().get(0).getStationNum() == 23455); assert(t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().get(1).getStationNum() == 23456); assert(t.getRoute().get(2).getAlternativeRoutes().get(1).getRoute() != null); assert(t.getRoute().get(2).getAlternativeRoutes().get(1).getRoute().size() == 2); assert(t.getRoute().get(2).getAlternativeRoutes().get(1).getRoute().get(0).getStationNum() == 3455); assert(t.getRoute().get(2).getAlternativeRoutes().get(1).getRoute().get(1).getStationNum() == 3456); assert(t.getRoute().get(3).getStationNum() == 123457); assert(t.getBorder() == false); assert(t.getSeriesId() == 999); assert(t.getRouteId() == 21); assert(t.getIncludedServiceBrands() != null); assert(t.getIncludedServiceBrands().size() == 2); assert(t.getIncludedServiceBrands().get(0) == 108); assert(t.getIncludedServiceBrands().get(1) == 118); assert(t.getExcludedServiceBrands() != null); assert(t.getExcludedServiceBrands().size() == 2); assert(t.getExcludedServiceBrands().get(0) == 108); assert(t.getExcludedServiceBrands().get(1) == 118); } private void validate(IncludedOpenTicketType t) { assert(t.getProductOwnerNum() == 23456); assert(t.getProductOwnerIA5().equals("23456")); assert(t.getProductIdNum() == 65535); assert(t.getProductIdIA5().equals( "123456")); assert(t.getExternalIssuerId() == 12); assert(t.getIssuerAutorizationId() == 13); assert(t.getStationCodeTable().equals(CodeTableType.stationERA)); assert(t.getValidRegion() != null); assert(t.getValidRegion().size() == 1); assert(t.getValidFromDay() == 0); assert(t.getValidFromTime() == 1000); assert(t.getValidUntilDay() == 1); assert(t.getValidUntilTime() == 1000); assert(t.getClassCode().equals(TravelClassType.second)); assert(t.getServiceLevel().equals("A")); assert(t.getIncludedCarriersNum() != null); assert(t.getIncludedCarriersNum().size() == 2); assert(t.getIncludedCarriersNum().get(0) == 1080); assert(t.getIncludedCarriersNum().get(1) == 1181); assert(t.getIncludedCarriersIA5() != null); assert(t.getIncludedCarriersIA5().size() == 2); assert(t.getIncludedCarriersIA5().get(0).equals("1080")); assert(t.getIncludedCarriersIA5().get(1).equals("1181")); assert(t.getIncludedServiceBrands() != null); assert(t.getIncludedServiceBrands().size() == 2); assert(t.getIncludedServiceBrands().get(0) == 108); assert(t.getIncludedServiceBrands().get(1) == 118); assert(t.getExcludedServiceBrands() != null); assert(t.getExcludedServiceBrands().size() == 2); assert(t.getExcludedServiceBrands().get(0) == 108); assert(t.getExcludedServiceBrands().get(1) == 118); assert(t.getTariffs() != null); assert(t.getTariffs().size() == 1); assert(t.getInfoText().equals("included ticket")); assert(t.getIncludedTransportTypes() != null); assert(t.getIncludedTransportTypes().size() == 2); assert(t.getIncludedTransportTypes().get(0) == 10); assert(t.getIncludedTransportTypes().get(1) == 11); assert(t.getExcludedTransportTypes() != null); assert(t.getExcludedTransportTypes().size() == 2); assert(t.getExcludedTransportTypes().get(0) == 10); assert(t.getExcludedTransportTypes().get(1) == 18); assert(t.getExtension() != null); } private void validatePass(PassData p) { assert(p.getReferenceNum().longValue() == 810123456789L); assert(p.getReferenceIA5().equals("810123456789")); assert(p.getProductOwnerNum() == 23456); assert(p.getProductOwnerIA5().equals( "23456")); assert(p.getProductIdNum() == 65535); assert(p.getProductIdIA5().equals( "123456")); assert(p.getPassType() == 2); assert(p.getPassDescription().equals( "Eurail FlexPass")); assert(p.getClassCode().equals(TravelClassType.first)); assert(p.getValidFromDay() == 0); assert(p.getValidFromTime() == 1000); assert(p.getValidFromUTCOffset() == 1); assert(p.getValidUntilDay() == 1); assert(p.getValidUntilTime() == 1000); assert(p.getValidUntilUTCOffset() == 1); assert(p.getValidityPeriodDetails() != null); assert(p.getValidityPeriodDetails() != null); assert(p.getValidityPeriodDetails().getValidityPeriod() != null); assert(p.getValidityPeriodDetails().getValidityPeriod().size() == 1); assert(p.getValidityPeriodDetails().getValidityPeriod().get(0).getValidFromDay() == 0); assert(p.getValidityPeriodDetails().getValidityPeriod().get(0).getValidFromTime() == 1000); assert(p.getValidityPeriodDetails().getValidityPeriod().get(0).getValidFromUTCOffset() == 1); assert(p.getValidityPeriodDetails().getValidityPeriod().get(0).getValidUntilDay() == 1); assert(p.getValidityPeriodDetails().getValidityPeriod().get(0).getValidUntilTime() == 1000); assert(p.getValidityPeriodDetails().getValidityPeriod().get(0).getValidUntilUTCOffset() == 1); assert(p.getValidityPeriodDetails().getExcludedTimeRange() != null); assert(p.getValidityPeriodDetails().getExcludedTimeRange().get(0).getFromTime() == 6); assert(p.getValidityPeriodDetails().getExcludedTimeRange().get(0).getUntilTime() == 9); assert(p.getNumberOfValidityDays() == 5); assert(p.getTrainValidity() != null); assert(p.getTrainValidity().getValidFromDay() == 0); assert(p.getTrainValidity().getValidFromTime() == 1000); assert(p.getTrainValidity().getValidUntilDay() == 1); assert(p.getTrainValidity().getValidUntilTime() == 1000); assert(p.getTrainValidity().getIncludedCarriersNum() != null); assert(p.getTrainValidity().getIncludedCarriersNum().size() == 2); assert(p.getTrainValidity().getIncludedCarriersNum().get(0) == 1234); assert(p.getTrainValidity().getIncludedCarriersNum().get(1) == 5678); assert(p.getTrainValidity().getBordingOrArrival().equals(BoardingOrArrivalType.boarding)); assert(p.getNumberOfPossibleTrips() == 3); assert(p.getNumberOfDaysOfTravel() == 10); assert(p.getActivatedDay() != null); assert(p.getActivatedDay().size() == 2); assert(p.getActivatedDay().get(0) == 200); assert(p.getActivatedDay().get(1) == 201); assert(p.getCountries() != null); assert(p.getCountries().size() == 2); assert(p.getCountries().get(0) == 10); assert(p.getCountries().get(1) == 20); assert(p.getIncludedCarriersNum() != null); assert(p.getIncludedCarriersNum().size() == 2); assert(p.getIncludedCarriersNum().get(0) == 1080); assert(p.getIncludedCarriersNum().get(1) == 1181); assert(p.getIncludedCarriersIA5() != null); assert(p.getIncludedCarriersIA5().size() == 2); assert(p.getIncludedCarriersIA5().get(0).equals("1080")); assert(p.getIncludedCarriersIA5().get(1).equals("1181")); assert(p.getExcludedCarriersNum() != null); assert(p.getExcludedCarriersNum().size() == 2); assert(p.getExcludedCarriersNum().get(0) == 1080); assert(p.getExcludedCarriersNum().get(1) == 1181); assert(p.getExcludedCarriersIA5() != null); assert(p.getExcludedCarriersIA5().size() == 2); assert(p.getExcludedCarriersIA5().get(0).equals("1080")); assert(p.getExcludedCarriersIA5().get(1).equals("1181")); assert(p.getIncludedServiceBrands() != null); assert(p.getIncludedServiceBrands().size() == 2); assert(p.getIncludedServiceBrands().get(0) == 108); assert(p.getIncludedServiceBrands().get(1) == 118); assert(p.getExcludedServiceBrands() != null); assert(p.getExcludedServiceBrands().size() == 2); assert(p.getExcludedServiceBrands().get(0) == 108); assert(p.getExcludedServiceBrands().get(1) == 118); assert(p.getValidRegion() != null); assert(p.getValidRegion().size() == 1); assert(p.getTariffs() != null); assert(p.getTariffs().size() == 1); assert(p.getPrice() == 10000); assert(p.getVatDetails() != null); assert(p.getVatDetails().size() == 1); assert(p.getInfoText().equals("pass info")); assert (p.getExtension() != null); } private void validateReservation(ReservationData r) { assert(r.getTrainNum() == 12345); assert(r.getTrainIA5().equals("12345")); assert(r.getDepartureDate() == 2); assert(r.getReferenceIA5().equals("810123456789")); assert(r.getReferenceNum() == 80123456789L); assert(r.getProductOwnerNum() == 23456); assert(r.getProductOwnerIA5().equals("23456")); assert(r.getProductIdNum() == 65535); assert(r.getProductIdIA5().equals("123456")); assert(r.getServiceBrand() == 12); assert(r.getServiceBrandAbrUTF8().equals("TGV")); assert(r.getServiceBrandNameUTF8().equals("Lyria")); assert(r.getService().equals(ServiceType.couchette)); assert(r.getStationCodeTable().equals(CodeTableType.stationUIC)); assert(r.getFromStationNum() == 8100001); assert(r.getFromStationIA5().equals("8100001")); assert(r.getToStationNum() == 8000002); assert(r.getToStationIA5().equals( "8100002")); assert(r.getFromStationNameUTF8().equals( "A-STATION")); assert(r.getToStationNameUTF8().equals( "B-STATION")); assert(r.getDepartureTime() == 1439); assert(r.getDepartureUTCOffset() == -60); assert(r.getArrivalDate() == 20); assert(r.getArrivalTime() == 0); assert(r.getArrivalUTCOffset() == 10); assert(r.getCarrierNum()!= null); assert(r.getCarrierNum().size() == 2); assert(r.getCarrierNum().get(0) == 1080); assert(r.getCarrierNum().get(1) == 1181); assert(r.getCarrierIA5() != null); assert(r.getCarrierIA5().size() == 2); assert(r.getCarrierIA5().contains("1080")); assert(r.getCarrierIA5().contains("1181")); assert(r.getClassCode().equals(TravelClassType.first)); assert(r.getServiceLevel().equals("A")); assert(r.getPlaces() != null); assert(r.getPlaces().getCoach().equals("31A")); assert(r.getPlaces().getPlaceString().equals("31-47")); assert(r.getPlaces().getPlaceDescription().equals("Window")); assert(r.getPlaces().getPlaceIA5() != null); assert(r.getPlaces().getPlaceIA5().size() == 2); assert(r.getPlaces().getPlaceIA5().get(0).equals("31A")); assert(r.getPlaces().getPlaceIA5().get(1).equals("31B")); assert(r.getPlaces().getPlaceNum() != null); assert(r.getPlaces().getPlaceNum().size() == 2); assert(r.getPlaces().getPlaceNum().get(0) == 31); assert(r.getPlaces().getPlaceNum().get(1) == 32); assert(r.getAdditionalPlaces() != null); assert(r.getBicyclePlaces() != null); assert(r.getCompartmentDetails() != null); assert(r.getCompartmentDetails().getCoachType() == 1); assert(r.getCompartmentDetails().getCompartmentType() == 99); assert(r.getCompartmentDetails().getSpecialAllocation() == 50); assert(r.getCompartmentDetails().getCoachTypeDescr().equals("xwz")); assert(r.getCompartmentDetails().getCompartmentTypeDescr().equals( "xwz")); assert(r.getCompartmentDetails().getSpecialAllocationDescr().equals( "xwz")); assert(r.getCompartmentDetails().getPosition().equals(CompartmentPositionType.upperLevel)); assert(r.getNumberOfOverbooked() == 200); assert(r.getBerth() != null); assert(r.getBerth().size() == 1); assert(r.getBerth().get(0).getBerthType().equals(BerthTypeType.single)); assert(r.getBerth().get(0).getGender().equals(CompartmentGenderType.female)); assert(r.getBerth().get(0).getNumberOfBerths() == 999); assert(r.getTariff() != null); assert(r.getTariff().size() == 1); assert(r.getTariff().get(0).getNumberOfPassengers() == 1); assert(r.getTariff().get(0).getPassengerType().equals(PassengerType.senior) ); assert(r.getTariff().get(0).getAgeBelow() == 64); assert(r.getTariff().get(0).getAgeAbove() == 60); assert(r.getTariff().get(0).getTraverlerid() != null); assert(r.getTariff().get(0).getTraverlerid().size() == 1); assert(r.getTariff().get(0).getTraverlerid().get(0) == 1); assert(r.getTariff().get(0).getRestrictedToCountryOfResidence() == false); assert(r.getTariff().get(0).getRestrictedToRouteSection() != null); assert(r.getTariff().get(0).getRestrictedToRouteSection().getStationCodeTable().equals(CodeTableType.stationERA)); assert(r.getTariff().get(0).getRestrictedToRouteSection().getFromStationNum() == 123); assert(r.getTariff().get(0).getRestrictedToRouteSection().getFromStationIA5().equals( "123")); assert(r.getTariff().get(0).getRestrictedToRouteSection().getToStationNum() == 234); assert(r.getTariff().get(0).getRestrictedToRouteSection().getToStationIA5().equals( "234")); assert(r.getTariff().get(0).getRestrictedToRouteSection().getFromStationNameUTF8().equals( "A")); assert(r.getTariff().get(0).getRestrictedToRouteSection().getToStationNameUTF8().equals( "B")); assert(r.getTariff().get(0).getSeriesDataDetails() != null); assert(r.getTariff().get(0).getSeriesDataDetails().getSupplyingCarrier() == 12345); assert(r.getTariff().get(0).getSeriesDataDetails().getOfferIdentification() == 99); assert(r.getTariff().get(0).getSeriesDataDetails().getSeries() == 23456); assert(r.getTariff().get(0).getTariffIdNum() == 72); assert(r.getTariff().get(0).getTariffIdIA5().equals( "72")); assert(r.getTariff().get(0).getTariffDesc().equals( "Leasure Fare")); assert(r.getTariff().get(0).getReductionCard() != null); assert(r.getTariff().get(0).getReductionCard().size() == 1); assert(r.getTariff().get(0).getReductionCard().get(0).getCardIssuerNum().intValue() == 1234); assert(r.getTariff().get(0).getReductionCard().get(0).getCardIssuerIA5().equals( "1234")); assert(r.getTariff().get(0).getReductionCard().get(0).getCardIdNum().intValue() == 5678); assert(r.getTariff().get(0).getReductionCard().get(0).getCardIdIA5().equals( "5678")); assert(r.getTariff().get(0).getReductionCard().get(0).getCardName().equals( "testcard")); assert(r.getTariff().get(0).getReductionCard().get(0).getCardType().intValue() == 123); assert(r.getTariff().get(0).getReductionCard().get(0).getLeadingCardIdNum().intValue() == 3456); assert(r.getTariff().get(0).getReductionCard().get(0).getLeadingCardIdIA5().equals("3456")); assert(r.getTariff().get(0).getReductionCard().get(0).getTrailingCardIdNum().intValue() == 100); assert(r.getTariff().get(0).getReductionCard().get(0).getTrailingCardIdIA5().equals("100")); assert(r.getPriceType().equals(PriceTypeType.travelPrice)); assert(r.getPrice() == 12345); assert(r.getVatDetails() != null); assert(r.getVatDetails().size() == 1); assert(r.getVatDetails().get(0).getCountry() == 80); assert(r.getVatDetails().get(0).getPercentage() == 70); assert(r.getVatDetails().get(0).getAmount() == 10); assert(r.getVatDetails().get(0).getVatId().equals("IUDGTE")); assert(r.getTypeOfSupplement() == 9); assert(r.getNumberOfSupplements() == 2); assert(r.getLuggage() != null); assert(r.getLuggage().getMaxHandLuggagePieces() == 2); assert(r.getLuggage().getMaxNonHandLuggagePieces() == 1); assert(r.getLuggage().getRegisteredLuggage() != null); assert(r.getLuggage().getRegisteredLuggage().size() == 2); assert(r.getLuggage().getRegisteredLuggage().get(0).getRegistrationId().equals("IODHUV")); assert(r.getLuggage().getRegisteredLuggage().get(0).getMaxWeight() == 20); assert(r.getLuggage().getRegisteredLuggage().get(0).getMaxSize() == 100); assert(r.getLuggage().getRegisteredLuggage().get(1).getRegistrationId().equals("XXDHUV")); assert(r.getLuggage().getRegisteredLuggage().get(1).getMaxWeight() == 21); assert(r.getLuggage().getRegisteredLuggage().get(1).getMaxSize() == 101); assert(r.getInfoText().equals("reservation")); assert(r.getExtension() != null); } public static int getIndexOfDifference(String s1, String s2) { if (s1 == null || s2 == null) return -1; char[] ca1 = null; char[] ca2 = null; if (s1.length() > s2.length()) { ca1 = s1.toCharArray(); ca2 = s2.toCharArray(); } else { ca1 = s2.toCharArray(); ca2 = s1.toCharArray(); } int i = 0; for (char c : ca2) { if (c != ca1[i]) return i; i++; } return 0; } }