OLD | NEW |
---|---|
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library pub_semver.test.version_range_test; | 5 library pub_semver.test.version_range_test; |
6 | 6 |
7 import 'package:test/test.dart'; | 7 import 'package:test/test.dart'; |
8 | 8 |
9 import 'package:pub_semver/pub_semver.dart'; | 9 import 'package:pub_semver/pub_semver.dart'; |
10 | 10 |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
144 | 144 |
145 test('allows any version if there is no min or max', () { | 145 test('allows any version if there is no min or max', () { |
146 var range = new VersionRange(); | 146 var range = new VersionRange(); |
147 | 147 |
148 expect(range, allows( | 148 expect(range, allows( |
149 new Version.parse('0.0.0'), | 149 new Version.parse('0.0.0'), |
150 new Version.parse('999.99.9'))); | 150 new Version.parse('999.99.9'))); |
151 }); | 151 }); |
152 }); | 152 }); |
153 | 153 |
154 group('allowsAll()', () { | |
155 test('allows an empty constraint', () { | |
156 expect( | |
157 new VersionRange(min: v123, max: v250) | |
158 .allowsAll(VersionConstraint.empty), | |
159 isTrue); | |
160 }); | |
161 | |
162 test('allows allowed versions', () { | |
163 var range = new VersionRange(min: v123, max: v250, includeMax: true); | |
164 expect(range.allowsAll(v123), isFalse); | |
165 expect(range.allowsAll(v124), isTrue); | |
166 expect(range.allowsAll(v250), isTrue); | |
167 expect(range.allowsAll(v300), isFalse); | |
168 }); | |
169 | |
170 test('with no min', () { | |
171 var range = new VersionRange(max: v250); | |
172 expect(range.allowsAll(new VersionRange(min: v080, max: v140)), isTrue); | |
173 expect(range.allowsAll(new VersionRange(min: v080, max: v300)), isFalse); | |
174 expect(range.allowsAll(new VersionRange(max: v140)), isTrue); | |
175 expect(range.allowsAll(new VersionRange(max: v300)), isFalse); | |
176 expect(range.allowsAll(range), isTrue); | |
Bob Nystrom
2015/05/05 20:49:09
Maybe test against new VersionRange() (i.e. the op
nweiz
2015/05/05 22:52:34
Done.
| |
177 }); | |
178 | |
179 test('with no max', () { | |
180 var range = new VersionRange(min: v010); | |
181 expect(range.allowsAll(new VersionRange(min: v080, max: v140)), isTrue); | |
182 expect(range.allowsAll(new VersionRange(min: v003, max: v140)), isFalse); | |
183 expect(range.allowsAll(new VersionRange(min: v080)), isTrue); | |
184 expect(range.allowsAll(new VersionRange(min: v003)), isFalse); | |
185 expect(range.allowsAll(range), isTrue); | |
186 }); | |
187 | |
188 test('with a min and max', () { | |
189 var range = new VersionRange(min: v010, max: v250); | |
190 expect(range.allowsAll(new VersionRange(min: v080, max: v140)), isTrue); | |
191 expect(range.allowsAll(new VersionRange(min: v080, max: v300)), isFalse); | |
192 expect(range.allowsAll(new VersionRange(min: v003, max: v140)), isFalse); | |
193 expect(range.allowsAll(new VersionRange(min: v080)), isFalse); | |
194 expect(range.allowsAll(new VersionRange(max: v140)), isFalse); | |
195 expect(range.allowsAll(range), isTrue); | |
196 }); | |
197 | |
198 test("allows a bordering range that's not more inclusive", () { | |
199 var exclusive = new VersionRange(min: v010, max: v250); | |
200 var inclusive = new VersionRange( | |
201 min: v010, includeMin: true, max: v250, includeMax: true); | |
202 expect(inclusive.allowsAll(exclusive), isTrue); | |
203 expect(inclusive.allowsAll(inclusive), isTrue); | |
204 expect(exclusive.allowsAll(inclusive), isFalse); | |
205 expect(exclusive.allowsAll(exclusive), isTrue); | |
206 }); | |
207 | |
208 test('allows unions that are completely contained', () { | |
209 var range = new VersionRange(min: v114, max: v200); | |
210 expect( | |
211 range.allowsAll(new VersionRange(min: v123, max: v124).union(v140)), | |
212 isTrue); | |
213 expect( | |
214 range.allowsAll(new VersionRange(min: v010, max: v124).union(v140)), | |
215 isFalse); | |
216 expect( | |
217 range.allowsAll(new VersionRange(min: v123, max: v234).union(v140)), | |
218 isFalse); | |
219 }); | |
220 }); | |
221 | |
222 group('allowsAny()', () { | |
223 test('disallows an empty constraint', () { | |
224 expect( | |
225 new VersionRange(min: v123, max: v250) | |
226 .allowsAny(VersionConstraint.empty), | |
227 isFalse); | |
228 }); | |
229 | |
230 test('allows allowed versions', () { | |
231 var range = new VersionRange(min: v123, max: v250, includeMax: true); | |
232 expect(range.allowsAny(v123), isFalse); | |
233 expect(range.allowsAny(v124), isTrue); | |
234 expect(range.allowsAny(v250), isTrue); | |
235 expect(range.allowsAny(v300), isFalse); | |
236 }); | |
237 | |
238 test('with no min', () { | |
239 var range = new VersionRange(max: v200); | |
240 expect(range.allowsAny(new VersionRange(min: v140, max: v300)), isTrue); | |
241 expect(range.allowsAny(new VersionRange(min: v234, max: v300)), isFalse); | |
242 expect(range.allowsAny(new VersionRange(min: v140)), isTrue); | |
243 expect(range.allowsAny(new VersionRange(min: v234)), isFalse); | |
244 expect(range.allowsAny(range), isTrue); | |
245 }); | |
246 | |
247 test('with no max', () { | |
248 var range = new VersionRange(min: v072); | |
249 expect(range.allowsAny(new VersionRange(min: v003, max: v140)), isTrue); | |
250 expect(range.allowsAny(new VersionRange(min: v003, max: v010)), isFalse); | |
251 expect(range.allowsAny(new VersionRange(max: v080)), isTrue); | |
252 expect(range.allowsAny(new VersionRange(max: v003)), isFalse); | |
253 expect(range.allowsAny(range), isTrue); | |
254 }); | |
255 | |
256 test('with a min and max', () { | |
257 var range = new VersionRange(min: v072, max: v200); | |
258 expect(range.allowsAny(new VersionRange(min: v003, max: v140)), isTrue); | |
259 expect(range.allowsAny(new VersionRange(min: v140, max: v300)), isTrue); | |
260 expect(range.allowsAny(new VersionRange(min: v003, max: v010)), isFalse); | |
261 expect(range.allowsAny(new VersionRange(min: v234, max: v300)), isFalse); | |
262 expect(range.allowsAny(new VersionRange(max: v010)), isFalse); | |
263 expect(range.allowsAny(new VersionRange(min: v234)), isFalse); | |
264 expect(range.allowsAny(range), isTrue); | |
265 }); | |
266 | |
267 test('allows a bordering range when both are inclusive', () { | |
268 expect(new VersionRange(max: v250).allowsAny(new VersionRange(min: v250)), | |
269 isFalse); | |
270 | |
271 expect(new VersionRange(max: v250, includeMax: true) | |
272 .allowsAny(new VersionRange(min: v250)), | |
273 isFalse); | |
274 | |
275 expect(new VersionRange(max: v250) | |
276 .allowsAny(new VersionRange(min: v250, includeMin: true)), | |
277 isFalse); | |
278 | |
279 expect(new VersionRange(max: v250, includeMax: true) | |
280 .allowsAny(new VersionRange(min: v250, includeMin: true)), | |
281 isTrue); | |
282 | |
283 expect(new VersionRange(min: v250).allowsAny(new VersionRange(max: v250)), | |
284 isFalse); | |
285 | |
286 expect(new VersionRange(min: v250, includeMin: true) | |
287 .allowsAny(new VersionRange(max: v250)), | |
288 isFalse); | |
289 | |
290 expect(new VersionRange(min: v250) | |
291 .allowsAny(new VersionRange(max: v250, includeMax: true)), | |
292 isFalse); | |
293 | |
294 expect(new VersionRange(min: v250, includeMin: true) | |
295 .allowsAny(new VersionRange(max: v250, includeMax: true)), | |
296 isTrue); | |
297 }); | |
298 | |
299 test('allows unions that are partially contained', () { | |
300 var range = new VersionRange(min: v114, max: v200); | |
301 expect( | |
302 range.allowsAny(new VersionRange(min: v010, max: v080).union(v140)), | |
303 isTrue); | |
304 expect( | |
305 range.allowsAny(new VersionRange(min: v123, max: v234).union(v300)), | |
306 isTrue); | |
307 expect( | |
308 range.allowsAny(new VersionRange(min: v234, max: v300).union(v010)), | |
309 isFalse); | |
310 }); | |
311 }); | |
312 | |
154 group('intersect()', () { | 313 group('intersect()', () { |
155 test('two overlapping ranges', () { | 314 test('two overlapping ranges', () { |
156 var a = new VersionRange(min: v123, max: v250); | 315 var a = new VersionRange(min: v123, max: v250); |
157 var b = new VersionRange(min: v200, max: v300); | 316 var b = new VersionRange(min: v200, max: v300); |
158 var intersect = a.intersect(b); | 317 var intersect = a.intersect(b); |
159 expect(intersect.min, equals(v200)); | 318 expect(intersect.min, equals(v200)); |
160 expect(intersect.max, equals(v250)); | 319 expect(intersect.max, equals(v250)); |
161 expect(intersect.includeMin, isFalse); | 320 expect(intersect.includeMin, isFalse); |
162 expect(intersect.includeMax, isFalse); | 321 expect(intersect.includeMax, isFalse); |
163 }); | 322 }); |
(...skipping 24 matching lines...) Expand all Loading... | |
188 }); | 347 }); |
189 | 348 |
190 test('returns the version if the range allows it', () { | 349 test('returns the version if the range allows it', () { |
191 expect(new VersionRange(min: v114, max: v124).intersect(v123), | 350 expect(new VersionRange(min: v114, max: v124).intersect(v123), |
192 equals(v123)); | 351 equals(v123)); |
193 expect(new VersionRange(min: v123, max: v124).intersect(v114).isEmpty, | 352 expect(new VersionRange(min: v123, max: v124).intersect(v114).isEmpty, |
194 isTrue); | 353 isTrue); |
195 }); | 354 }); |
196 }); | 355 }); |
197 | 356 |
357 group('union()', () { | |
358 test("with a version returns the range if it contains the version", () { | |
359 var range = new VersionRange(min: v114, max: v124); | |
360 expect(range.union(v123), equals(range)); | |
361 }); | |
362 | |
363 test("with a version on the edge of the range, expands the range", () { | |
364 expect(new VersionRange(min: v114, max: v124).union(v124), | |
365 equals(new VersionRange(min: v114, max: v124, includeMax: true))); | |
366 expect(new VersionRange(min: v114, max: v124).union(v114), | |
367 equals(new VersionRange(min: v114, max: v124, includeMin: true))); | |
368 }); | |
369 | |
370 test("with a version allows both the range and the version if the range " | |
371 "doesn't contain the version", () { | |
372 var result = new VersionRange(min: v003, max: v114).union(v123); | |
373 expect(result, allows(v123)); | |
Bob Nystrom
2015/05/05 20:49:09
To match the next tests, maybe put a doesNotAllow
nweiz
2015/05/05 22:52:34
Done.
| |
374 expect(result, allows(v010)); | |
375 }); | |
376 | |
377 test("returns a VersionUnion for a disjoint range", () { | |
378 var result = new VersionRange(min: v003, max: v114) | |
379 .union(new VersionRange(min: v130, max: v200)); | |
380 expect(result, allows(v080)); | |
381 expect(result, doesNotAllow(v123)); | |
382 expect(result, allows(v140)); | |
383 }); | |
384 | |
385 test("considers open ranges disjoint", () { | |
386 var result = new VersionRange(min: v003, max: v114) | |
387 .union(new VersionRange(min: v114, max: v200)); | |
388 expect(result, allows(v080)); | |
389 expect(result, doesNotAllow(v114)); | |
390 expect(result, allows(v140)); | |
391 }); | |
392 | |
393 test("returns a merged range for an overlapping range", () { | |
394 var result = new VersionRange(min: v003, max: v114) | |
395 .union(new VersionRange(min: v080, max: v200)); | |
396 expect(result, equals(new VersionRange(min: v003, max: v200))); | |
397 }); | |
398 | |
399 test("considers closed ranges overlapping", () { | |
400 var result = new VersionRange(min: v003, max: v114, includeMax: true) | |
401 .union(new VersionRange(min: v114, max: v200)); | |
402 expect(result, equals(new VersionRange(min: v003, max: v200))); | |
403 | |
404 result = new VersionRange(min: v003, max: v114) | |
405 .union(new VersionRange(min: v114, max: v200, includeMin: true)); | |
406 expect(result, equals(new VersionRange(min: v003, max: v200))); | |
407 }); | |
408 | |
409 test("includes edges if either range does", () { | |
410 var result = new VersionRange(min: v003, max: v114, includeMin: true) | |
411 .union(new VersionRange(min: v003, max: v114, includeMax: true)); | |
412 expect(result, equals(new VersionRange( | |
413 min: v003, max: v114, includeMin: true, includeMax: true))); | |
414 }); | |
415 }); | |
416 | |
198 test('isEmpty', () { | 417 test('isEmpty', () { |
199 expect(new VersionRange().isEmpty, isFalse); | 418 expect(new VersionRange().isEmpty, isFalse); |
200 expect(new VersionRange(min: v123, max: v124).isEmpty, isFalse); | 419 expect(new VersionRange(min: v123, max: v124).isEmpty, isFalse); |
201 }); | 420 }); |
202 } | 421 } |
OLD | NEW |