1
+ package com .graphhopper .routing .util .parsers ;
2
+
3
+ import static com .graphhopper .routing .util .EncodingManager .Access .WAY ;
4
+ import static org .junit .Assert .assertEquals ;
5
+
6
+ import org .junit .Before ;
7
+ import org .junit .Test ;
8
+
9
+ import com .graphhopper .reader .ReaderWay ;
10
+ import com .graphhopper .routing .profiles .EnumEncodedValue ;
11
+ import com .graphhopper .routing .profiles .HazmatTunnel ;
12
+ import com .graphhopper .routing .util .EncodingManager ;
13
+ import com .graphhopper .storage .IntsRef ;
14
+
15
+ public class OSMHazmatTunnelParserTest {
16
+
17
+ private EncodingManager em ;
18
+ private EnumEncodedValue <HazmatTunnel > hazTunnelEnc ;
19
+ private OSMHazmatTunnelParser parser ;
20
+
21
+ @ Before
22
+ public void setUp () {
23
+ parser = new OSMHazmatTunnelParser ();
24
+ em = new EncodingManager .Builder ().add (parser ).build ();
25
+ hazTunnelEnc = em .getEnumEncodedValue (HazmatTunnel .KEY , HazmatTunnel .class );
26
+ }
27
+
28
+ @ Test
29
+ public void testADRTunnelCat () {
30
+ IntsRef intsRef = em .createEdgeFlags ();
31
+ ReaderWay readerWay = new ReaderWay (1 );
32
+ readerWay .setTag ("hazmat:adr_tunnel_cat" , "A" );
33
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
34
+ assertEquals (HazmatTunnel .A , hazTunnelEnc .getEnum (false , intsRef ));
35
+
36
+ intsRef = em .createEdgeFlags ();
37
+ readerWay = new ReaderWay (1 );
38
+ readerWay .setTag ("hazmat:adr_tunnel_cat" , "B" );
39
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
40
+ assertEquals (HazmatTunnel .B , hazTunnelEnc .getEnum (false , intsRef ));
41
+
42
+ intsRef = em .createEdgeFlags ();
43
+ readerWay = new ReaderWay (1 );
44
+ readerWay .setTag ("hazmat:adr_tunnel_cat" , "C" );
45
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
46
+ assertEquals (HazmatTunnel .C , hazTunnelEnc .getEnum (false , intsRef ));
47
+
48
+ intsRef = em .createEdgeFlags ();
49
+ readerWay = new ReaderWay (1 );
50
+ readerWay .setTag ("hazmat:adr_tunnel_cat" , "D" );
51
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
52
+ assertEquals (HazmatTunnel .D , hazTunnelEnc .getEnum (false , intsRef ));
53
+
54
+ intsRef = em .createEdgeFlags ();
55
+ readerWay = new ReaderWay (1 );
56
+ readerWay .setTag ("hazmat:adr_tunnel_cat" , "E" );
57
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
58
+ assertEquals (HazmatTunnel .E , hazTunnelEnc .getEnum (false , intsRef ));
59
+ }
60
+
61
+ @ Test
62
+ public void testTunnelCat () {
63
+ IntsRef intsRef = em .createEdgeFlags ();
64
+ ReaderWay readerWay = new ReaderWay (1 );
65
+ readerWay .setTag ("hazmat:tunnel_cat" , "A" );
66
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
67
+ assertEquals (HazmatTunnel .A , hazTunnelEnc .getEnum (false , intsRef ));
68
+
69
+ intsRef = em .createEdgeFlags ();
70
+ readerWay = new ReaderWay (1 );
71
+ readerWay .setTag ("hazmat:tunnel_cat" , "B" );
72
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
73
+ assertEquals (HazmatTunnel .B , hazTunnelEnc .getEnum (false , intsRef ));
74
+
75
+ intsRef = em .createEdgeFlags ();
76
+ readerWay = new ReaderWay (1 );
77
+ readerWay .setTag ("hazmat:tunnel_cat" , "C" );
78
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
79
+ assertEquals (HazmatTunnel .C , hazTunnelEnc .getEnum (false , intsRef ));
80
+
81
+ intsRef = em .createEdgeFlags ();
82
+ readerWay = new ReaderWay (1 );
83
+ readerWay .setTag ("hazmat:tunnel_cat" , "D" );
84
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
85
+ assertEquals (HazmatTunnel .D , hazTunnelEnc .getEnum (false , intsRef ));
86
+
87
+ intsRef = em .createEdgeFlags ();
88
+ readerWay = new ReaderWay (1 );
89
+ readerWay .setTag ("hazmat:tunnel_cat" , "E" );
90
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
91
+ assertEquals (HazmatTunnel .E , hazTunnelEnc .getEnum (false , intsRef ));
92
+ }
93
+
94
+ @ Test
95
+ public void testHazmatSubtags () {
96
+ IntsRef intsRef = em .createEdgeFlags ();
97
+ ReaderWay readerWay = new ReaderWay (1 );
98
+ readerWay .setTag ("tunnel" , "yes" );
99
+ readerWay .setTag ("hazmat:A" , "no" );
100
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
101
+ assertEquals (HazmatTunnel .A , hazTunnelEnc .getEnum (false , intsRef ));
102
+
103
+ intsRef = em .createEdgeFlags ();
104
+ readerWay = new ReaderWay (1 );
105
+ readerWay .setTag ("tunnel" , "yes" );
106
+ readerWay .setTag ("hazmat:B" , "no" );
107
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
108
+ assertEquals (HazmatTunnel .B , hazTunnelEnc .getEnum (false , intsRef ));
109
+
110
+ intsRef = em .createEdgeFlags ();
111
+ readerWay = new ReaderWay (1 );
112
+ readerWay .setTag ("tunnel" , "yes" );
113
+ readerWay .setTag ("hazmat:C" , "no" );
114
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
115
+ assertEquals (HazmatTunnel .C , hazTunnelEnc .getEnum (false , intsRef ));
116
+
117
+ intsRef = em .createEdgeFlags ();
118
+ readerWay = new ReaderWay (1 );
119
+ readerWay .setTag ("tunnel" , "yes" );
120
+ readerWay .setTag ("hazmat:D" , "no" );
121
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
122
+ assertEquals (HazmatTunnel .D , hazTunnelEnc .getEnum (false , intsRef ));
123
+
124
+ intsRef = em .createEdgeFlags ();
125
+ readerWay = new ReaderWay (1 );
126
+ readerWay .setTag ("tunnel" , "yes" );
127
+ readerWay .setTag ("hazmat:E" , "no" );
128
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
129
+ assertEquals (HazmatTunnel .E , hazTunnelEnc .getEnum (false , intsRef ));
130
+ }
131
+
132
+ @ Test
133
+ public void testOrder () {
134
+ IntsRef intsRef = em .createEdgeFlags ();
135
+ ReaderWay readerWay = new ReaderWay (1 );
136
+ readerWay .setTag ("tunnel" , "yes" );
137
+ readerWay .setTag ("hazmat:A" , "no" );
138
+ readerWay .setTag ("hazmat:B" , "no" );
139
+ readerWay .setTag ("hazmat:C" , "no" );
140
+ readerWay .setTag ("hazmat:D" , "no" );
141
+ readerWay .setTag ("hazmat:E" , "no" );
142
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
143
+ assertEquals (HazmatTunnel .E , hazTunnelEnc .getEnum (false , intsRef ));
144
+
145
+ intsRef = em .createEdgeFlags ();
146
+ readerWay = new ReaderWay (1 );
147
+ readerWay .setTag ("tunnel" , "yes" );
148
+ readerWay .setTag ("hazmat:A" , "no" );
149
+ readerWay .setTag ("hazmat:B" , "no" );
150
+ readerWay .setTag ("hazmat:C" , "no" );
151
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
152
+ assertEquals (HazmatTunnel .C , hazTunnelEnc .getEnum (false , intsRef ));
153
+
154
+ intsRef = em .createEdgeFlags ();
155
+ readerWay = new ReaderWay (1 );
156
+ readerWay .setTag ("tunnel" , "yes" );
157
+ readerWay .setTag ("hazmat:B" , "no" );
158
+ readerWay .setTag ("hazmat:E" , "no" );
159
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
160
+ assertEquals (HazmatTunnel .E , hazTunnelEnc .getEnum (false , intsRef ));
161
+ }
162
+
163
+ @ Test
164
+ public void testIgnoreNonTunnelSubtags () {
165
+ IntsRef intsRef = em .createEdgeFlags ();
166
+ ReaderWay readerWay = new ReaderWay (1 );
167
+ readerWay .setTag ("hazmat:B" , "no" );
168
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
169
+ assertEquals (HazmatTunnel .A , hazTunnelEnc .getEnum (false , intsRef ));
170
+ }
171
+
172
+ @ Test
173
+ public void testNoNPE () {
174
+ ReaderWay readerWay = new ReaderWay (1 );
175
+ IntsRef intsRef = em .createEdgeFlags ();
176
+ parser .handleWayTags (intsRef , readerWay , WAY , 0 );
177
+ assertEquals (HazmatTunnel .A , hazTunnelEnc .getEnum (false , intsRef ));
178
+ }
179
+ }
0 commit comments