-
Notifications
You must be signed in to change notification settings - Fork 129
Expand file tree
/
Copy pathTollCalculatorTest.java
More file actions
74 lines (61 loc) · 3.59 KB
/
TollCalculatorTest.java
File metadata and controls
74 lines (61 loc) · 3.59 KB
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
import org.junit.Test;
import java.util.Calendar;
import java.util.GregorianCalendar;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class TollCalculatorTest {
TollCalculator tollCalculator = new TollCalculator();
@Test
public void testMinAndMaxTollFee() {
Calendar mondayAfterMayday = new GregorianCalendar(2021, Calendar.MAY, 3, 15, 1);
assertTrue("Toll fee is less than the minimum", tollCalculator.getTollFee(new Car(), mondayAfterMayday.getTime()) >= 8);
assertTrue("Toll fee is more than the maximum", tollCalculator.getTollFee(new Car(), mondayAfterMayday.getTime()) <= 18);
}
@Test
public void testRushHourTollFee() {
Calendar mondayAfterMayday = new GregorianCalendar(2021, Calendar.MAY, 3, 16, 1);
assertEquals(18, tollCalculator.getTollFee(new Car(), mondayAfterMayday.getTime()));
}
@Test
public void testMaximumFeePerDay() {
Calendar h1 = new GregorianCalendar(2021, Calendar.MAY, 3, 6, 1); // 8
Calendar h2 = new GregorianCalendar(2021, Calendar.MAY, 3, 7, 2); // 18 - should take this as max
Calendar h3 = new GregorianCalendar(2021, Calendar.MAY, 3, 8, 3); // 13 - should take this as max of hour 7:30 to 8:01
Calendar h4 = new GregorianCalendar(2021, Calendar.MAY, 3, 10, 4); // 13
Calendar h5 = new GregorianCalendar(2021, Calendar.MAY, 3, 17, 5); // 13 -- adds up to 65
assertEquals(60, tollCalculator.getTollFee(new Car(), h1.getTime(), h2.getTime(), h3.getTime(), h4.getTime(), h5.getTime()));
}
@Test
public void testTollFeeWithinSameHour() {
Calendar sameHour1 = new GregorianCalendar(2021, Calendar.MAY, 3, 6, 29); // 8
Calendar sameHour2 = new GregorianCalendar(2021, Calendar.MAY, 3, 7, 1); // 18 - should take this as max
Calendar secondHour1 = new GregorianCalendar(2021, Calendar.MAY, 3, 7, 30); // 18 - should take this as max of hour 7:30 to 8:01
Calendar secondHour2 = new GregorianCalendar(2021, Calendar.MAY, 3, 8, 1); // 13
assertEquals(36, tollCalculator.getTollFee(new Car(), sameHour1.getTime(), sameHour2.getTime(), secondHour1.getTime(), secondHour2.getTime()));
}
@Test
public void testTollFreeVehicleType() {
Calendar mondayAfterMayday = new GregorianCalendar(2021, Calendar.MAY, 3, 6, 1);
assertEquals(0, tollCalculator.getTollFee(new Motorbike(), mondayAfterMayday.getTime()));
}
@Test
public void testTollFreeDayHoliday() {
Calendar mayDay = new GregorianCalendar(2021, Calendar.MAY, 1, 6, 1);
assertEquals(0, tollCalculator.getTollFee(new Car(), mayDay.getTime()));
}
@Test
public void testTollFreeDayWeekend() {
Calendar mayDay = new GregorianCalendar(2022, Calendar.MARCH, 20, 6, 1);
assertEquals(0, tollCalculator.getTollFee(new Car(), mayDay.getTime()));
}
@Test
public void testIntermittentRange() {
Calendar h1 = new GregorianCalendar(2021, Calendar.MAY, 3, 6, 1); // 8
Calendar h2 = new GregorianCalendar(2021, Calendar.MAY, 3, 8, 2); // 13
Calendar h3 = new GregorianCalendar(2021, Calendar.MAY, 3, 11, 16); // 8
Calendar h4 = new GregorianCalendar(2021, Calendar.MAY, 3, 15, 4); // 13
Calendar h5 = new GregorianCalendar(2021, Calendar.MAY, 3, 15, 32); // 18 -- take 18, as both are in same hour
Calendar h6 = new GregorianCalendar(2021, Calendar.MAY, 3, 18, 29); // 8 - adds to 55
assertEquals(55, tollCalculator.getTollFee(new Car(), h1.getTime(), h2.getTime(), h3.getTime(), h4.getTime(), h5.getTime(), h6.getTime()));
}
}