blob: 014b172178532e6ed68cf220abb03c689afe7e92 (
plain) (
tree)
|
|
package org.uic.barcode.ticket.api.test;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
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.logger.LoggerFactory;
import org.uic.barcode.ticket.EncodingFormatException;
import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData;
import org.uic.barcode.ticket.api.spec.IReservation;
import org.uic.barcode.ticket.api.spec.IUicRailTicket;
import org.uic.barcode.ticket.api.test.testtickets.ReservationTestTicketV3;
import org.uic.barcode.ticket.api.utils.Api2AsnEncoder;
import org.uic.barcode.ticket.api.utils.Api2OpenAsnEncoderV3;
import org.uic.barcode.ticket.api.utils.Asn2ApiDecoder;
import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoderV3;
/**
* The Class FipTimeZoneTestV3.
*
*
*
*/
public class ReservationTimeZoneTestV3 {
/** The low level encoded test ticket test case 1 . */
private byte[] encoded1 = null;
/** The low level encoded test ticket test case 2 . */
private byte[] encoded2 = null;
/** The low level encoded test ticket test case 3 . */
private byte[] encoded3 = null;
/** The decoder. */
Asn2ApiDecoder decoder = new OpenAsn2ApiDecoderV3();
/** The encoder. */
Api2AsnEncoder encoder = new Api2OpenAsnEncoderV3();
/** The API ticket low level encoded for case 1. */
IUicRailTicket iTicketDecodedFromAsn1Case1 = null;
/** The API ticket low level encoded for case 2. */
IUicRailTicket iTicketDecodedFromAsn1Case2 = null;
/** The API ticket low level encoded for case 3. */
IUicRailTicket iTicketDecodedFromAsn1Case3 = null;
/** The ticket decoded 1. */
IUicRailTicket iTicketDecodedCase1 = null;
/** The i ticket decoded 2. */
IUicRailTicket iTicketDecodedCase2 = null;
/** The i ticket decoded 3. */
IUicRailTicket iTicketDecodedCase3 = null;
byte[] encodedInTimeZone1 = null;
byte[] encodedInTimeZone2 = null;
byte[] encodedInTimeZone3 = null;
String issuingDate1 = null;
String issuingDate2 = null;
String issuingDate3 = null;
String departureDate1 = null;
String departureDate2 = null;
String departureDate3 = null;
String arrivalDate1 = null;
String arrivalDate2 = null;
String arrivalDate3 = null;
TimeZone defaulttimeZone = null;
/**
* Prepare tickets.
*/
@Before public void prepare() {
LoggerFactory.setActivateConsoleLog(true);
defaulttimeZone = TimeZone.getDefault();
UicRailTicketData ticket1 = ReservationTestTicketV3.getUicTestTicket();
UicRailTicketData ticket2 = ReservationTestTicketV3.getUicTestTicket();
UicRailTicketData ticket3 = ReservationTestTicketV3.getUicTestTicket();
//encode in UTC time zone
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
encoded1 = UperEncoder.encode(ticket1);
encoded2 = UperEncoder.encode(ticket2);
encoded3 = UperEncoder.encode(ticket3);
}
/**
* 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 testCETCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException {
//get tickets
decodeTestTicketUTC();
//set the dates in the time zone CET
TimeZone.setDefault(TimeZone.getTimeZone("CET"));
iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" ));
iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" ));
iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" ));
setdepartureDateTo("2021.03.14-00:00");
setarrivalDateTo("2021.03.24-23:59");
encode("CET");
decode("CET");
decodedDateToStrings();
assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" ));
assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" ));
assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" ));
assert(departureDate1.equals("Sun Mar 14 00:00:00 CET 2021" ));
assert(departureDate2.equals("Sun Mar 14 00:00:00 CET 2021" ));
assert(departureDate3.equals("Sun Mar 14 00:00:00 CET 2021" ));
assert(arrivalDate1.equals("Wed Mar 24 23:59:00 CET 2021" ));
assert(arrivalDate2.equals("Wed Mar 24 23:59:00 CET 2021" ));
assert(arrivalDate3.equals("Wed Mar 24 23:59:00 CET 2021" ));
}
/**
* 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 testGMTCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException {
//get tickets
decodeTestTicketUTC();
//set the dates in the time zone GMT
TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" ));
iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" ));
iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" ));
setdepartureDateTo("2021.03.14-00:00");
setarrivalDateTo("2021.03.24-23:59");
encode("GMT");
decode("CET");
decodedDateToStrings();
assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" ));
assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" ));
assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" ));
assert(departureDate1.equals("Sun Mar 14 00:00:00 CET 2021" ));
assert(departureDate2.equals("Sun Mar 14 00:00:00 CET 2021" ));
assert(departureDate3.equals("Sun Mar 14 00:00:00 CET 2021" ));
assert(arrivalDate1.equals("Wed Mar 24 23:59:00 CET 2021" ));
assert(arrivalDate2.equals("Wed Mar 24 23:59:00 CET 2021" ));
assert(arrivalDate3.equals("Wed Mar 24 23:59:00 CET 2021" ));
}
/**
* 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 testCETGMTencoding() throws IllegalArgumentException, IllegalAccessException, ParseException {
//get tickets
decodeTestTicketUTC();
//set the dates in the time zone GMT
TimeZone.setDefault(TimeZone.getTimeZone("CET"));
iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" ));
iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" ));
iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" ));
setdepartureDateTo("2021.03.14-00:00");
setarrivalDateTo("2021.03.24-23:59");
encode("CET");
decode("GMT");
decodedDateToStrings();
assert(issuingDate1.equals("Thu Mar 04 12:30:00 GMT 2021" ));
assert(issuingDate2.equals("Thu Mar 04 00:30:00 GMT 2021" ));
assert(issuingDate3.equals("Wed Mar 03 23:30:00 GMT 2021" ));
assert(departureDate1.equals("Sun Mar 14 00:00:00 GMT 2021" ));
assert(departureDate2.equals("Sun Mar 14 00:00:00 GMT 2021" ));
assert(departureDate3.equals("Sun Mar 14 00:00:00 GMT 2021" ));
assert(arrivalDate1.equals("Wed Mar 24 23:59:00 GMT 2021" ));
assert(arrivalDate2.equals("Wed Mar 24 23:59:00 GMT 2021" ));
assert(arrivalDate3.equals("Wed Mar 24 23:59:00 GMT 2021" ));
}
private void decodedDateToStrings() {
issuingDate1 = iTicketDecodedCase1.getIssuerDetails().getIssuingDate().toString();
issuingDate2 = iTicketDecodedCase2.getIssuerDetails().getIssuingDate().toString();
issuingDate3 = iTicketDecodedCase3.getIssuerDetails().getIssuingDate().toString();
departureDate1 = ((IReservation) iTicketDecodedCase1.getDocumentData().iterator().next()).getDepartureDate().toString();
departureDate2 = ((IReservation) iTicketDecodedCase2.getDocumentData().iterator().next()).getDepartureDate().toString();
departureDate3 = ((IReservation) iTicketDecodedCase3.getDocumentData().iterator().next()).getDepartureDate().toString();
arrivalDate1 = ((IReservation) iTicketDecodedCase1.getDocumentData().iterator().next()).getArrivalDate().toString();
arrivalDate2 = ((IReservation) iTicketDecodedCase2.getDocumentData().iterator().next()).getArrivalDate().toString();
arrivalDate3 = ((IReservation) iTicketDecodedCase3.getDocumentData().iterator().next()).getArrivalDate().toString();
}
private void setdepartureDateTo(String dateString) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" );
Date date = dateFormat.parse(dateString);
((IReservation) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setDepartureDate(date);
((IReservation) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setDepartureDate(date);
((IReservation) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setDepartureDate(date);
}
private void setarrivalDateTo(String dateString) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" );
Date date = dateFormat.parse(dateString);
((IReservation) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setArrivalDate(date);
((IReservation) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setArrivalDate(date);
((IReservation) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setArrivalDate(date);
}
/**
* Encode in Time Zone
*/
private void encode(String timeZone) {
TimeZone.setDefault(TimeZone.getTimeZone(timeZone));
try {
encodedInTimeZone1 = encoder.encode(iTicketDecodedFromAsn1Case1);
encodedInTimeZone2 = encoder.encode(iTicketDecodedFromAsn1Case2);
encodedInTimeZone3 = encoder.encode(iTicketDecodedFromAsn1Case3);
} catch (EncodingFormatException e) {
e.printStackTrace();
}
}
/**
* Decode in Time Zone
*/
private void decode(String timeZone) {
TimeZone.setDefault(TimeZone.getTimeZone(timeZone));
try {
iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1);
iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2);
iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Encode decode.
*/
private void decodeTestTicketUTC() {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
try {
iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1);
iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2);
iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3);
} catch (Exception e) {
e.printStackTrace();
}
}
}
|