summaryrefslogtreecommitdiffstats
path: root/src/test/java/org/uic/barcode/ticketTestDB/DecodeSparpreisTicketDBTest.java
blob: 90e33c1972d15c02c02bb5648788c73991bcce70 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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 DecodeSparpreisTicketDBTest {
	
    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("Thu Nov 05 11:58:00 CET 2020"));
        Assert.assertNull(layout);
        Assert.assertNotNull(decoder);
    }
    
	public static String getEncodingV2Hex() {
		
		 return "2355543032313038303030303032782e" + 
				"2fe184a1d85e89e9338b298ec61aeba2" + 
				"48ce722056ca940a967c8a1d39126e2c" + 
				"628c4fcea91ba35216a0a350f894de5e" + 
				"bd7b8909920fde947feede0e20c43031" + 
			    "3939789c01bc0043ff555f464c455831" + 
				"333031383862b20086e10dc125ea2815" + 
				"110881051c844464d985668e23a00a80" + 
				"000e96c2e4e6e8cadc08aed2d8d90104" + 
				"44d7be0100221ce610ea559b64364c38" + 
				"a82361d1cb5e1e5d32a3d0979bd099c8" + 
				"426b0b7373432b4b6852932baba3634b" + 
				"733b2b715ab34b09d101e18981c181f1" + 
				"424221521291521292a17a3a920a1152" + 
				"5a095282314952b20a49529952826278" + 
				"083001a4c38ae5bb303ace7003800700" + 
				"14b00240400f53757065722053706172" + 
				"7072656973c41e4a03";
		 }

}