Skip to content

Commit 1e0faba

Browse files
committed
Fix d3.geo.stream tests for [x, y, z] coordinates.
1 parent b196e40 commit 1e0faba

1 file changed

Lines changed: 85 additions & 135 deletions

File tree

test/geo/stream-test.js

Lines changed: 85 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -37,223 +37,173 @@ suite.addBatch({
3737
var calls = 0;
3838
stream({type: "Sphere"}, {
3939
sphere: function() {
40-
++calls;
4140
assert.equal(arguments.length, 0);
41+
assert.equal(++calls, 1);
4242
}
4343
});
4444
assert.equal(calls, 1);
4545
},
4646
"Point ↦ point": function(stream) {
47-
var calls = 0;
48-
stream({type: "Point", coordinates: [1, 2]}, {
49-
point: function(x, y) {
50-
++calls;
51-
assert.equal(arguments.length, 2);
52-
assert.equal(x, 1);
53-
assert.equal(y, 2);
47+
var calls = 0, coordinates = 0;
48+
stream({type: "Point", coordinates: [1, 2, 3]}, {
49+
point: function(x, y, z) {
50+
assert.equal(arguments.length, 3);
51+
assert.equal(x, ++coordinates);
52+
assert.equal(y, ++coordinates);
53+
assert.equal(z, ++coordinates);
54+
assert.equal(++calls, 1);
5455
}
5556
});
5657
assert.equal(calls, 1);
5758
},
5859
"MultiPoint ↦ point*": function(stream) {
59-
var calls = 0;
60-
stream({type: "MultiPoint", coordinates: [[1, 2], [3, 4]]}, {
61-
point: function(x, y) {
62-
assert.equal(arguments.length, 2);
63-
if (++calls === 1) {
64-
assert.equal(x, 1);
65-
assert.equal(y, 2);
66-
} else {
67-
assert.equal(x, 3);
68-
assert.equal(y, 4);
69-
}
60+
var calls = 0, coordinates = 0;
61+
stream({type: "MultiPoint", coordinates: [[1, 2, 3], [4, 5, 6]]}, {
62+
point: function(x, y, z) {
63+
assert.equal(arguments.length, 3);
64+
assert.equal(x, ++coordinates);
65+
assert.equal(y, ++coordinates);
66+
assert.equal(z, ++coordinates);
67+
assert.isTrue(1 <= ++calls && calls <= 2);
7068
}
7169
});
7270
assert.equal(calls, 2);
7371
},
7472
"LineString ↦ lineStart, point{2,}, lineEnd": function(stream) {
75-
var calls = 0;
76-
stream({type: "LineString", coordinates: [[1, 2], [3, 4]]}, {
73+
var calls = 0, coordinates = 0;
74+
stream({type: "LineString", coordinates: [[1, 2, 3], [4, 5, 6]]}, {
7775
lineStart: function() {
78-
assert.equal(++calls, 1);
7976
assert.equal(arguments.length, 0);
77+
assert.equal(++calls, 1);
8078
},
81-
point: function(x, y) {
82-
assert.equal(arguments.length, 2);
83-
if (++calls === 2) {
84-
assert.equal(x, 1);
85-
assert.equal(y, 2);
86-
} else if (calls === 3) {
87-
assert.equal(x, 3);
88-
assert.equal(y, 4);
89-
} else {
90-
assert.fail("too many points");
91-
}
79+
point: function(x, y, z) {
80+
assert.equal(arguments.length, 3);
81+
assert.equal(x, ++coordinates);
82+
assert.equal(y, ++coordinates);
83+
assert.equal(z, ++coordinates);
84+
assert.isTrue(2 <= ++calls && calls <= 3);
9285
},
9386
lineEnd: function() {
94-
assert.equal(++calls, 4);
9587
assert.equal(arguments.length, 0);
88+
assert.equal(++calls, 4);
9689
}
9790
});
9891
assert.equal(calls, 4);
9992
},
10093
"MultiLineString ↦ (lineStart, point{2,}, lineEnd)*": function(stream) {
101-
var calls = 0;
102-
stream({type: "MultiLineString", coordinates: [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]}, {
94+
var calls = 0, coordinates = 0;
95+
stream({type: "MultiLineString", coordinates: [[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]}, {
10396
lineStart: function() {
104-
++calls;
105-
assert.isTrue(calls === 1 || calls === 5);
10697
assert.equal(arguments.length, 0);
98+
assert.isTrue(++calls === 1 || calls === 5);
10799
},
108-
point: function(x, y) {
109-
++calls;
110-
assert.equal(arguments.length, 2);
111-
if (calls === 2) {
112-
assert.equal(x, 1);
113-
assert.equal(y, 2);
114-
} else if (calls === 3) {
115-
assert.equal(x, 3);
116-
assert.equal(y, 4);
117-
} else if (calls === 6) {
118-
assert.equal(x, 5);
119-
assert.equal(y, 6);
120-
} else if (calls === 7) {
121-
assert.equal(x, 7);
122-
assert.equal(y, 8);
123-
} else {
124-
assert.fail("too many points");
125-
}
100+
point: function(x, y, z) {
101+
assert.equal(arguments.length, 3);
102+
assert.equal(x, ++coordinates);
103+
assert.equal(y, ++coordinates);
104+
assert.equal(z, ++coordinates);
105+
assert.isTrue(2 <= ++calls && calls <= 3 || 6 <= calls && calls <= 7);
126106
},
127107
lineEnd: function() {
128-
++calls;
129-
assert.isTrue(calls === 4 || calls === 8);
130108
assert.equal(arguments.length, 0);
109+
assert.isTrue(++calls === 4 || calls === 8);
131110
}
132111
});
133112
assert.equal(calls, 8);
134113
},
135114
"Polygon ↦ polygonStart, lineStart, point{2,}, lineEnd, polygonEnd": function(stream) {
136-
var calls = 0;
137-
stream({type: "Polygon", coordinates: [[[1, 2], [3, 4], [1, 2]], [[5, 6], [7, 8], [5, 6]]]}, {
115+
var calls = 0, coordinates = 0;
116+
stream({type: "Polygon", coordinates: [[[1, 2, 3], [4, 5, 6], [1, 2, 3]], [[7, 8, 9], [10, 11, 12], [7, 8, 9]]]}, {
138117
polygonStart: function() {
139-
++calls;
140-
assert.isTrue(calls === 1);
141118
assert.equal(arguments.length, 0);
119+
assert.isTrue(++calls === 1);
142120
},
143121
lineStart: function() {
144-
++calls;
145-
assert.isTrue(calls === 2 || calls === 6);
146122
assert.equal(arguments.length, 0);
123+
assert.isTrue(++calls === 2 || calls === 6);
147124
},
148-
point: function(x, y) {
149-
++calls;
150-
assert.equal(arguments.length, 2);
151-
if (calls === 3) {
152-
assert.equal(x, 1);
153-
assert.equal(y, 2);
154-
} else if (calls === 4) {
155-
assert.equal(x, 3);
156-
assert.equal(y, 4);
157-
} else if (calls === 7) {
158-
assert.equal(x, 5);
159-
assert.equal(y, 6);
160-
} else if (calls === 8) {
161-
assert.equal(x, 7);
162-
assert.equal(y, 8);
163-
} else {
164-
assert.fail("too many points");
165-
}
125+
point: function(x, y, z) {
126+
assert.equal(arguments.length, 3);
127+
assert.equal(x, ++coordinates);
128+
assert.equal(y, ++coordinates);
129+
assert.equal(z, ++coordinates);
130+
assert.isTrue(3 <= ++calls && calls <= 4 || 7 <= calls && calls <= 8);
166131
},
167132
lineEnd: function() {
168-
++calls;
169-
assert.isTrue(calls === 5 || calls === 9);
170133
assert.equal(arguments.length, 0);
134+
assert.isTrue(++calls === 5 || calls === 9);
171135
},
172136
polygonEnd: function() {
173-
++calls;
174-
assert.isTrue(calls === 10);
175137
assert.equal(arguments.length, 0);
138+
assert.isTrue(++calls === 10);
176139
}
177140
});
178141
assert.equal(calls, 10);
179142
},
180143
"MultiPolygon ↦ (polygonStart, lineStart, point{2,}, lineEnd, polygonEnd)*": function(stream) {
181-
var calls = 0;
182-
stream({type: "MultiPolygon", coordinates: [[[[1, 2], [3, 4], [1, 2]]], [[[5, 6], [7, 8], [5, 6]]]]}, {
144+
var calls = 0, coordinates = 0;
145+
stream({type: "MultiPolygon", coordinates: [[[[1, 2, 3], [4, 5, 6], [1, 2, 3]]], [[[7, 8, 9], [10, 11, 12], [7, 8, 9]]]]}, {
183146
polygonStart: function() {
184-
++calls;
185-
assert.isTrue(calls === 1 || calls === 7);
186147
assert.equal(arguments.length, 0);
148+
assert.isTrue(++calls === 1 || calls === 7);
187149
},
188150
lineStart: function() {
189-
++calls;
190-
assert.isTrue(calls === 2 || calls === 8);
191151
assert.equal(arguments.length, 0);
152+
assert.isTrue(++calls === 2 || calls === 8);
192153
},
193-
point: function(x, y) {
194-
++calls;
195-
assert.equal(arguments.length, 2);
196-
if (calls === 3) {
197-
assert.equal(x, 1);
198-
assert.equal(y, 2);
199-
} else if (calls === 4) {
200-
assert.equal(x, 3);
201-
assert.equal(y, 4);
202-
} else if (calls === 9) {
203-
assert.equal(x, 5);
204-
assert.equal(y, 6);
205-
} else if (calls === 10) {
206-
assert.equal(x, 7);
207-
assert.equal(y, 8);
208-
} else {
209-
assert.fail("too many points");
210-
}
154+
point: function(x, y, z) {
155+
assert.equal(arguments.length, 3);
156+
assert.equal(x, ++coordinates);
157+
assert.equal(y, ++coordinates);
158+
assert.equal(z, ++coordinates);
159+
assert.isTrue(3 <= ++calls && calls <= 4 || 9 <= calls && calls <= 10);
211160
},
212161
lineEnd: function() {
213-
++calls;
214-
assert.isTrue(calls === 5 || calls === 11);
215162
assert.equal(arguments.length, 0);
163+
assert.isTrue(++calls === 5 || calls === 11);
216164
},
217165
polygonEnd: function() {
218-
++calls;
219-
assert.isTrue(calls === 6 || calls === 12);
220166
assert.equal(arguments.length, 0);
167+
assert.isTrue(++calls === 6 || calls === 12);
221168
}
222169
});
223170
assert.equal(calls, 12);
224171
},
225172
"Feature ↦ .*": function(stream) {
226-
var calls = 0;
227-
stream({type: "Feature", geometry: {type: "Point", coordinates: [1, 2]}}, {
228-
point: function(x, y) {
229-
++calls;
230-
assert.equal(arguments.length, 2);
231-
assert.equal(x, 1);
232-
assert.equal(y, 2);
173+
var calls = 0, coordinates = 0;
174+
stream({type: "Feature", geometry: {type: "Point", coordinates: [1, 2, 3]}}, {
175+
point: function(x, y, z) {
176+
assert.equal(arguments.length, 3);
177+
assert.equal(x, ++coordinates);
178+
assert.equal(y, ++coordinates);
179+
assert.equal(z, ++coordinates);
180+
assert.equal(++calls, 1);
233181
}
234182
});
235183
assert.equal(calls, 1);
236184
},
237185
"FeatureCollection ↦ .*": function(stream) {
238-
var calls = 0;
239-
stream({type: "FeatureCollection", features: [{type: "Feature", geometry: {type: "Point", coordinates: [1, 2]}}]}, {
240-
point: function(x, y) {
241-
++calls;
242-
assert.equal(arguments.length, 2);
243-
assert.equal(x, 1);
244-
assert.equal(y, 2);
186+
var calls = 0, coordinates = 0;
187+
stream({type: "FeatureCollection", features: [{type: "Feature", geometry: {type: "Point", coordinates: [1, 2, 3]}}]}, {
188+
point: function(x, y, z) {
189+
assert.equal(arguments.length, 3);
190+
assert.equal(x, ++coordinates);
191+
assert.equal(y, ++coordinates);
192+
assert.equal(z, ++coordinates);
193+
assert.equal(++calls, 1);
245194
}
246195
});
247196
assert.equal(calls, 1);
248197
},
249198
"GeometryCollection ↦ .*": function(stream) {
250-
var calls = 0;
251-
stream({type: "GeometryCollection", geometries: [{type: "Point", coordinates: [1, 2]}]}, {
252-
point: function(x, y) {
253-
++calls;
254-
assert.equal(arguments.length, 2);
255-
assert.equal(x, 1);
256-
assert.equal(y, 2);
199+
var calls = 0, coordinates = 0;
200+
stream({type: "GeometryCollection", geometries: [{type: "Point", coordinates: [1, 2, 3]}]}, {
201+
point: function(x, y, z) {
202+
assert.equal(arguments.length, 3);
203+
assert.equal(x, ++coordinates);
204+
assert.equal(y, ++coordinates);
205+
assert.equal(z, ++coordinates);
206+
assert.equal(++calls, 1);
257207
}
258208
});
259209
assert.equal(calls, 1);

0 commit comments

Comments
 (0)