Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Side by Side Diff: mojo/public/dart/third_party/pub_semver/test/version_range_test.dart

Issue 1346773002: Stop running pub get at gclient sync time and fix build bugs (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 library pub_semver.test.version_range_test;
6
7 import 'package:test/test.dart';
8
9 import 'package:pub_semver/pub_semver.dart';
10
11 import 'utils.dart';
12
13 main() {
14 group('constructor', () {
15 test('takes a min and max', () {
16 var range = new VersionRange(min: v123, max: v124);
17 expect(range.isAny, isFalse);
18 expect(range.min, equals(v123));
19 expect(range.max, equals(v124));
20 });
21
22 test('allows omitting max', () {
23 var range = new VersionRange(min: v123);
24 expect(range.isAny, isFalse);
25 expect(range.min, equals(v123));
26 expect(range.max, isNull);
27 });
28
29 test('allows omitting min and max', () {
30 var range = new VersionRange();
31 expect(range.isAny, isTrue);
32 expect(range.min, isNull);
33 expect(range.max, isNull);
34 });
35
36 test('takes includeMin', () {
37 var range = new VersionRange(min: v123, includeMin: true);
38 expect(range.includeMin, isTrue);
39 });
40
41 test('includeMin defaults to false if omitted', () {
42 var range = new VersionRange(min: v123);
43 expect(range.includeMin, isFalse);
44 });
45
46 test('takes includeMax', () {
47 var range = new VersionRange(max: v123, includeMax: true);
48 expect(range.includeMax, isTrue);
49 });
50
51 test('includeMax defaults to false if omitted', () {
52 var range = new VersionRange(max: v123);
53 expect(range.includeMax, isFalse);
54 });
55
56 test('throws if min > max', () {
57 expect(() => new VersionRange(min: v124, max: v123), throwsArgumentError);
58 });
59 });
60
61 group('allows()', () {
62 test('version must be greater than min', () {
63 var range = new VersionRange(min: v123);
64
65 expect(range, allows(
66 new Version.parse('1.3.3'),
67 new Version.parse('2.3.3')));
68 expect(range, doesNotAllow(
69 new Version.parse('1.2.2'),
70 new Version.parse('1.2.3')));
71 });
72
73 test('version must be min or greater if includeMin', () {
74 var range = new VersionRange(min: v123, includeMin: true);
75
76 expect(range, allows(
77 new Version.parse('1.2.3'),
78 new Version.parse('1.3.3'),
79 new Version.parse('2.3.3')));
80 expect(range, doesNotAllow(new Version.parse('1.2.2')));
81 });
82
83 test('pre-release versions of inclusive min are excluded', () {
84 var range = new VersionRange(min: v123, includeMin: true);
85
86 expect(range, allows(new Version.parse('1.2.4-dev')));
87 expect(range, doesNotAllow(new Version.parse('1.2.3-dev')));
88 });
89
90 test('version must be less than max', () {
91 var range = new VersionRange(max: v234);
92
93 expect(range, allows(new Version.parse('2.3.3')));
94 expect(range, doesNotAllow(
95 new Version.parse('2.3.4'),
96 new Version.parse('2.4.3')));
97 });
98
99 test('pre-release versions of non-pre-release max are excluded', () {
100 var range = new VersionRange(max: v234);
101
102 expect(range, allows(new Version.parse('2.3.3')));
103 expect(range, doesNotAllow(
104 new Version.parse('2.3.4-dev'),
105 new Version.parse('2.3.4')));
106 });
107
108 test('pre-release versions of non-pre-release max are included if min is a '
109 'pre-release of the same version', () {
110 var range = new VersionRange(
111 min: new Version.parse('2.3.4-dev.0'), max: v234);
112
113 expect(range, allows(new Version.parse('2.3.4-dev.1')));
114 expect(range, doesNotAllow(
115 new Version.parse('2.3.3'),
116 new Version.parse('2.3.4-dev'),
117 new Version.parse('2.3.4')));
118 });
119
120 test('pre-release versions of pre-release max are included', () {
121 var range = new VersionRange(max: new Version.parse('2.3.4-dev.2'));
122
123 expect(range, allows(
124 new Version.parse('2.3.4-dev.1')));
125 expect(range, doesNotAllow(
126 new Version.parse('2.3.4-dev.2'),
127 new Version.parse('2.3.4-dev.3')));
128 });
129
130 test('version must be max or less if includeMax', () {
131 var range = new VersionRange(min: v123, max: v234, includeMax: true);
132
133 expect(range, allows(
134 new Version.parse('2.3.3'),
135 new Version.parse('2.3.4'),
136 // Pre-releases of the max are allowed.
137 new Version.parse('2.3.4-dev')));
138 expect(range, doesNotAllow(new Version.parse('2.4.3')));
139 });
140
141 test('has no min if one was not set', () {
142 var range = new VersionRange(max: v123);
143
144 expect(range, allows(new Version.parse('0.0.0')));
145 expect(range, doesNotAllow(new Version.parse('1.2.3')));
146 });
147
148 test('has no max if one was not set', () {
149 var range = new VersionRange(min: v123);
150
151 expect(range, allows(
152 new Version.parse('1.3.3'),
153 new Version.parse('999.3.3')));
154 expect(range, doesNotAllow(new Version.parse('1.2.3')));
155 });
156
157 test('allows any version if there is no min or max', () {
158 var range = new VersionRange();
159
160 expect(range, allows(
161 new Version.parse('0.0.0'),
162 new Version.parse('999.99.9')));
163 });
164 });
165
166 group('allowsAll()', () {
167 test('allows an empty constraint', () {
168 expect(
169 new VersionRange(min: v123, max: v250)
170 .allowsAll(VersionConstraint.empty),
171 isTrue);
172 });
173
174 test('allows allowed versions', () {
175 var range = new VersionRange(min: v123, max: v250, includeMax: true);
176 expect(range.allowsAll(v123), isFalse);
177 expect(range.allowsAll(v124), isTrue);
178 expect(range.allowsAll(v250), isTrue);
179 expect(range.allowsAll(v300), isFalse);
180 });
181
182 test('with no min', () {
183 var range = new VersionRange(max: v250);
184 expect(range.allowsAll(new VersionRange(min: v080, max: v140)), isTrue);
185 expect(range.allowsAll(new VersionRange(min: v080, max: v300)), isFalse);
186 expect(range.allowsAll(new VersionRange(max: v140)), isTrue);
187 expect(range.allowsAll(new VersionRange(max: v300)), isFalse);
188 expect(range.allowsAll(range), isTrue);
189 expect(range.allowsAll(VersionConstraint.any), isFalse);
190 });
191
192 test('with no max', () {
193 var range = new VersionRange(min: v010);
194 expect(range.allowsAll(new VersionRange(min: v080, max: v140)), isTrue);
195 expect(range.allowsAll(new VersionRange(min: v003, max: v140)), isFalse);
196 expect(range.allowsAll(new VersionRange(min: v080)), isTrue);
197 expect(range.allowsAll(new VersionRange(min: v003)), isFalse);
198 expect(range.allowsAll(range), isTrue);
199 expect(range.allowsAll(VersionConstraint.any), isFalse);
200 });
201
202 test('with a min and max', () {
203 var range = new VersionRange(min: v010, max: v250);
204 expect(range.allowsAll(new VersionRange(min: v080, max: v140)), isTrue);
205 expect(range.allowsAll(new VersionRange(min: v080, max: v300)), isFalse);
206 expect(range.allowsAll(new VersionRange(min: v003, max: v140)), isFalse);
207 expect(range.allowsAll(new VersionRange(min: v080)), isFalse);
208 expect(range.allowsAll(new VersionRange(max: v140)), isFalse);
209 expect(range.allowsAll(range), isTrue);
210 });
211
212 test("allows a bordering range that's not more inclusive", () {
213 var exclusive = new VersionRange(min: v010, max: v250);
214 var inclusive = new VersionRange(
215 min: v010, includeMin: true, max: v250, includeMax: true);
216 expect(inclusive.allowsAll(exclusive), isTrue);
217 expect(inclusive.allowsAll(inclusive), isTrue);
218 expect(exclusive.allowsAll(inclusive), isFalse);
219 expect(exclusive.allowsAll(exclusive), isTrue);
220 });
221
222 test('allows unions that are completely contained', () {
223 var range = new VersionRange(min: v114, max: v200);
224 expect(
225 range.allowsAll(new VersionRange(min: v123, max: v124).union(v140)),
226 isTrue);
227 expect(
228 range.allowsAll(new VersionRange(min: v010, max: v124).union(v140)),
229 isFalse);
230 expect(
231 range.allowsAll(new VersionRange(min: v123, max: v234).union(v140)),
232 isFalse);
233 });
234 });
235
236 group('allowsAny()', () {
237 test('disallows an empty constraint', () {
238 expect(
239 new VersionRange(min: v123, max: v250)
240 .allowsAny(VersionConstraint.empty),
241 isFalse);
242 });
243
244 test('allows allowed versions', () {
245 var range = new VersionRange(min: v123, max: v250, includeMax: true);
246 expect(range.allowsAny(v123), isFalse);
247 expect(range.allowsAny(v124), isTrue);
248 expect(range.allowsAny(v250), isTrue);
249 expect(range.allowsAny(v300), isFalse);
250 });
251
252 test('with no min', () {
253 var range = new VersionRange(max: v200);
254 expect(range.allowsAny(new VersionRange(min: v140, max: v300)), isTrue);
255 expect(range.allowsAny(new VersionRange(min: v234, max: v300)), isFalse);
256 expect(range.allowsAny(new VersionRange(min: v140)), isTrue);
257 expect(range.allowsAny(new VersionRange(min: v234)), isFalse);
258 expect(range.allowsAny(range), isTrue);
259 });
260
261 test('with no max', () {
262 var range = new VersionRange(min: v072);
263 expect(range.allowsAny(new VersionRange(min: v003, max: v140)), isTrue);
264 expect(range.allowsAny(new VersionRange(min: v003, max: v010)), isFalse);
265 expect(range.allowsAny(new VersionRange(max: v080)), isTrue);
266 expect(range.allowsAny(new VersionRange(max: v003)), isFalse);
267 expect(range.allowsAny(range), isTrue);
268 });
269
270 test('with a min and max', () {
271 var range = new VersionRange(min: v072, max: v200);
272 expect(range.allowsAny(new VersionRange(min: v003, max: v140)), isTrue);
273 expect(range.allowsAny(new VersionRange(min: v140, max: v300)), isTrue);
274 expect(range.allowsAny(new VersionRange(min: v003, max: v010)), isFalse);
275 expect(range.allowsAny(new VersionRange(min: v234, max: v300)), isFalse);
276 expect(range.allowsAny(new VersionRange(max: v010)), isFalse);
277 expect(range.allowsAny(new VersionRange(min: v234)), isFalse);
278 expect(range.allowsAny(range), isTrue);
279 });
280
281 test('allows a bordering range when both are inclusive', () {
282 expect(new VersionRange(max: v250).allowsAny(new VersionRange(min: v250)),
283 isFalse);
284
285 expect(new VersionRange(max: v250, includeMax: true)
286 .allowsAny(new VersionRange(min: v250)),
287 isFalse);
288
289 expect(new VersionRange(max: v250)
290 .allowsAny(new VersionRange(min: v250, includeMin: true)),
291 isFalse);
292
293 expect(new VersionRange(max: v250, includeMax: true)
294 .allowsAny(new VersionRange(min: v250, includeMin: true)),
295 isTrue);
296
297 expect(new VersionRange(min: v250).allowsAny(new VersionRange(max: v250)),
298 isFalse);
299
300 expect(new VersionRange(min: v250, includeMin: true)
301 .allowsAny(new VersionRange(max: v250)),
302 isFalse);
303
304 expect(new VersionRange(min: v250)
305 .allowsAny(new VersionRange(max: v250, includeMax: true)),
306 isFalse);
307
308 expect(new VersionRange(min: v250, includeMin: true)
309 .allowsAny(new VersionRange(max: v250, includeMax: true)),
310 isTrue);
311 });
312
313 test('allows unions that are partially contained', () {
314 var range = new VersionRange(min: v114, max: v200);
315 expect(
316 range.allowsAny(new VersionRange(min: v010, max: v080).union(v140)),
317 isTrue);
318 expect(
319 range.allowsAny(new VersionRange(min: v123, max: v234).union(v300)),
320 isTrue);
321 expect(
322 range.allowsAny(new VersionRange(min: v234, max: v300).union(v010)),
323 isFalse);
324 });
325 });
326
327 group('intersect()', () {
328 test('two overlapping ranges', () {
329 var a = new VersionRange(min: v123, max: v250);
330 var b = new VersionRange(min: v200, max: v300);
331 var intersect = a.intersect(b);
332 expect(intersect.min, equals(v200));
333 expect(intersect.max, equals(v250));
334 expect(intersect.includeMin, isFalse);
335 expect(intersect.includeMax, isFalse);
336 });
337
338 test('a non-overlapping range allows no versions', () {
339 var a = new VersionRange(min: v114, max: v124);
340 var b = new VersionRange(min: v200, max: v250);
341 expect(a.intersect(b).isEmpty, isTrue);
342 });
343
344 test('adjacent ranges allow no versions if exclusive', () {
345 var a = new VersionRange(min: v114, max: v124, includeMax: false);
346 var b = new VersionRange(min: v124, max: v200, includeMin: true);
347 expect(a.intersect(b).isEmpty, isTrue);
348 });
349
350 test('adjacent ranges allow version if inclusive', () {
351 var a = new VersionRange(min: v114, max: v124, includeMax: true);
352 var b = new VersionRange(min: v124, max: v200, includeMin: true);
353 expect(a.intersect(b), equals(v124));
354 });
355
356 test('with an open range', () {
357 var open = new VersionRange();
358 var a = new VersionRange(min: v114, max: v124);
359 expect(open.intersect(open), equals(open));
360 expect(a.intersect(open), equals(a));
361 });
362
363 test('returns the version if the range allows it', () {
364 expect(new VersionRange(min: v114, max: v124).intersect(v123),
365 equals(v123));
366 expect(new VersionRange(min: v123, max: v124).intersect(v114).isEmpty,
367 isTrue);
368 });
369 });
370
371 group('union()', () {
372 test("with a version returns the range if it contains the version", () {
373 var range = new VersionRange(min: v114, max: v124);
374 expect(range.union(v123), equals(range));
375 });
376
377 test("with a version on the edge of the range, expands the range", () {
378 expect(new VersionRange(min: v114, max: v124).union(v124),
379 equals(new VersionRange(min: v114, max: v124, includeMax: true)));
380 expect(new VersionRange(min: v114, max: v124).union(v114),
381 equals(new VersionRange(min: v114, max: v124, includeMin: true)));
382 });
383
384 test("with a version allows both the range and the version if the range "
385 "doesn't contain the version", () {
386 var result = new VersionRange(min: v003, max: v114).union(v124);
387 expect(result, allows(v010));
388 expect(result, doesNotAllow(v123));
389 expect(result, allows(v124));
390 });
391
392 test("returns a VersionUnion for a disjoint range", () {
393 var result = new VersionRange(min: v003, max: v114)
394 .union(new VersionRange(min: v130, max: v200));
395 expect(result, allows(v080));
396 expect(result, doesNotAllow(v123));
397 expect(result, allows(v140));
398 });
399
400 test("considers open ranges disjoint", () {
401 var result = new VersionRange(min: v003, max: v114)
402 .union(new VersionRange(min: v114, max: v200));
403 expect(result, allows(v080));
404 expect(result, doesNotAllow(v114));
405 expect(result, allows(v140));
406
407 result = new VersionRange(min: v114, max: v200)
408 .union(new VersionRange(min: v003, max: v114));
409 expect(result, allows(v080));
410 expect(result, doesNotAllow(v114));
411 expect(result, allows(v140));
412 });
413
414 test("returns a merged range for an overlapping range", () {
415 var result = new VersionRange(min: v003, max: v114)
416 .union(new VersionRange(min: v080, max: v200));
417 expect(result, equals(new VersionRange(min: v003, max: v200)));
418 });
419
420 test("considers closed ranges overlapping", () {
421 var result = new VersionRange(min: v003, max: v114, includeMax: true)
422 .union(new VersionRange(min: v114, max: v200));
423 expect(result, equals(new VersionRange(min: v003, max: v200)));
424
425 result = new VersionRange(min: v003, max: v114)
426 .union(new VersionRange(min: v114, max: v200, includeMin: true));
427 expect(result, equals(new VersionRange(min: v003, max: v200)));
428
429 result = new VersionRange(min: v114, max: v200)
430 .union(new VersionRange(min: v003, max: v114, includeMax: true));
431 expect(result, equals(new VersionRange(min: v003, max: v200)));
432
433 result = new VersionRange(min: v114, max: v200, includeMin: true)
434 .union(new VersionRange(min: v003, max: v114));
435 expect(result, equals(new VersionRange(min: v003, max: v200)));
436 });
437
438 test("includes edges if either range does", () {
439 var result = new VersionRange(min: v003, max: v114, includeMin: true)
440 .union(new VersionRange(min: v003, max: v114, includeMax: true));
441 expect(result, equals(new VersionRange(
442 min: v003, max: v114, includeMin: true, includeMax: true)));
443 });
444 });
445
446 test('isEmpty', () {
447 expect(new VersionRange().isEmpty, isFalse);
448 expect(new VersionRange(min: v123, max: v124).isEmpty, isFalse);
449 });
450 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698