-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGPXcalculatorTest.java
128 lines (106 loc) · 4.21 KB
/
GPXcalculatorTest.java
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
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Date;
import org.junit.Test;
import edu.upenn.cis350.gpx.*;
public class GPXcalculatorTest {
final double DELTA_DEFAULT = 1e-12;
//GPXTrk is null
@Test public void testNullTrk()
{
assertEquals( -1, GPXcalculator.calculateDistanceTraveled(null), DELTA_DEFAULT );
}
//List of segments is null or list of segments contains no segments
@Test public void testNoSegs()
{
GPXtrk trk = new GPXtrk("a track", null);
assertEquals( -1, GPXcalculator.calculateDistanceTraveled(trk), DELTA_DEFAULT );
ArrayList<GPXtrkseg >segs = new ArrayList<GPXtrkseg>();
trk = new GPXtrk("a track", segs);
assertEquals( -1, GPXcalculator.calculateDistanceTraveled(trk), DELTA_DEFAULT );
}
//The track contains at least one null segment.
@Test public void testNullSegs()
{
ArrayList<GPXtrkseg >segs = new ArrayList<GPXtrkseg>();
segs.add(null);
GPXtrk trk = new GPXtrk("a track", segs);
assertEquals( 0, GPXcalculator.calculateDistanceTraveled(trk), DELTA_DEFAULT );
ArrayList<GPXtrkpt> pts = new ArrayList<GPXtrkpt>();
pts.add( new GPXtrkpt(0,0,new Date(0) ) );
pts.add( new GPXtrkpt(0,0,new Date(0) ) );
segs.add( new GPXtrkseg( pts ) );
trk = new GPXtrk("a track", segs);
assertEquals( 0, GPXcalculator.calculateDistanceTraveled(trk), DELTA_DEFAULT );
}
//Segments have no points.
@Test public void testSegNoPts()
{
ArrayList<GPXtrkseg> segs = new ArrayList<GPXtrkseg>();
segs.add( new GPXtrkseg( null ) );
GPXtrk trk = new GPXtrk("a track", segs);
assertEquals( 0, GPXcalculator.calculateDistanceTraveled(trk), DELTA_DEFAULT );
ArrayList<GPXtrkpt> pts = new ArrayList<GPXtrkpt>();
segs = new ArrayList<GPXtrkseg>();
segs.add( new GPXtrkseg( pts ) );
trk = new GPXtrk("a track", segs);
assertEquals( 0, GPXcalculator.calculateDistanceTraveled(trk), DELTA_DEFAULT );
}
//A segment only has one point.
@Test public void testOnePt()
{
ArrayList<GPXtrkseg >segs = new ArrayList<GPXtrkseg>();
ArrayList<GPXtrkpt> pts = new ArrayList<GPXtrkpt>();
pts.add( new GPXtrkpt( 10,0,new Date(0) ) );
segs.add( new GPXtrkseg( pts ) );
GPXtrk trk = new GPXtrk("a track", segs);
assertEquals( 0, GPXcalculator.calculateDistanceTraveled(trk), DELTA_DEFAULT );
}
//A segment contains a null point
@Test public void testNullPt()
{
ArrayList<GPXtrkseg >segs = new ArrayList<GPXtrkseg>();
ArrayList<GPXtrkpt> pts = new ArrayList<GPXtrkpt>();
pts.add( new GPXtrkpt( 10,0,new Date(0) ) );
pts.add( null );
segs.add( new GPXtrkseg( pts ) );
GPXtrk trk = new GPXtrk("a track", segs);
assertEquals( 0, GPXcalculator.calculateDistanceTraveled(trk), DELTA_DEFAULT );
}
//Latitude>90 or <-90, longitude>180 or <-180
@Test public void testCoordinateBounds()
{
ArrayList<GPXtrkseg> segs = new ArrayList<GPXtrkseg>();
ArrayList<GPXtrkpt> pts = new ArrayList<GPXtrkpt>();
pts.add( new GPXtrkpt( 10,0,new Date(0) ) );
pts.add( new GPXtrkpt( 91,0,new Date(1) ) );
segs.add( new GPXtrkseg( pts ) );
GPXtrk trk = new GPXtrk("a track", segs);
assertEquals( 0, GPXcalculator.calculateDistanceTraveled(trk), DELTA_DEFAULT );
segs = new ArrayList<GPXtrkseg>();
pts = new ArrayList<GPXtrkpt>();
pts.add( new GPXtrkpt( 10,-185,new Date(0) ) );
pts.add( new GPXtrkpt( 0,0,new Date(1) ) );
segs.add( new GPXtrkseg( pts ) );
trk = new GPXtrk("a track", segs);
assertEquals( 0, GPXcalculator.calculateDistanceTraveled(trk), DELTA_DEFAULT );
}
//Normal operation
@Test public void testDistance()
{
ArrayList<GPXtrkpt> pts0 = new ArrayList<GPXtrkpt>();
ArrayList<GPXtrkseg >segs = new ArrayList<GPXtrkseg>();
pts0.add( new GPXtrkpt(0,0,new Date(0) ) );
pts0.add( new GPXtrkpt(10,10,new Date(1) ) );
segs.add( new GPXtrkseg( pts0 ) );
GPXtrk trk = new GPXtrk("a track", segs);
assertEquals( 14.142, GPXcalculator.calculateDistanceTraveled(trk), 0.01 );
ArrayList<GPXtrkpt> pts1 = new ArrayList<GPXtrkpt>();
pts1.add( new GPXtrkpt(5,0,new Date(0) ) );
pts1.add( new GPXtrkpt(-20,-10,new Date(1) ) );
pts1.add( new GPXtrkpt(-30,-10,new Date(1) ) );
segs.add( new GPXtrkseg( pts1 ) );
trk = new GPXtrk("a track", segs);
assertEquals( 51.068, GPXcalculator.calculateDistanceTraveled(trk), 0.01 );
}
}