OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2015, 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 import 'package:test/test.dart'; | |
6 | |
7 import 'package:pub_semver/pub_semver.dart'; | |
8 | |
9 import 'utils.dart'; | |
10 | |
11 main() { | |
12 group('factory', () { | |
Bob Nystrom
2015/05/05 20:49:09
Test an empty list.
nweiz
2015/05/05 22:52:34
Done.
| |
13 test('ignores empty constraints', () { | |
14 expect(new VersionConstraint.unionOf([ | |
15 VersionConstraint.empty, | |
16 VersionConstraint.empty, | |
17 v123, | |
18 VersionConstraint.empty | |
19 ]), equals(v123)); | |
20 | |
21 expect(new VersionConstraint.unionOf([ | |
22 VersionConstraint.empty, | |
23 VersionConstraint.empty | |
24 ]), isEmpty); | |
25 }); | |
26 | |
27 test('any constraints override everything', () { | |
28 expect(new VersionConstraint.unionOf([ | |
29 v123, | |
30 VersionConstraint.any, | |
31 v200, | |
32 new VersionRange(min: v234, max: v250) | |
33 ]), equals(VersionConstraint.any)); | |
34 }); | |
35 | |
36 test('flattens other unions', () { | |
37 expect(new VersionConstraint.unionOf([ | |
38 v072, | |
39 new VersionConstraint.unionOf([v123, v124]), | |
40 v250 | |
41 ]), equals(new VersionConstraint.unionOf([v072, v123, v124, v250]))); | |
42 }); | |
43 | |
44 test('returns a single merged range as-is', () { | |
45 expect(new VersionConstraint.unionOf([ | |
46 new VersionRange(min: v080, max: v140), | |
47 new VersionRange(min: v123, max: v200) | |
48 ]), equals(new VersionRange(min: v080, max: v200))); | |
49 }); | |
50 }); | |
51 | |
52 group('equality', () { | |
53 test("doesn't depend on original order", () { | |
54 expect(new VersionConstraint.unionOf([ | |
55 v250, | |
56 new VersionRange(min: v201, max: v234), | |
57 v124, | |
58 v072, | |
59 new VersionRange(min: v080, max: v114), | |
60 v123 | |
61 ]), equals(new VersionConstraint.unionOf([ | |
62 v072, | |
63 new VersionRange(min: v080, max: v114), | |
64 v123, | |
65 v124, | |
66 new VersionRange(min: v201, max: v234), | |
67 v250 | |
68 ]))); | |
69 }); | |
70 | |
71 test("merges overlapping ranges", () { | |
72 expect(new VersionConstraint.unionOf([ | |
73 new VersionRange(min: v003, max: v072), | |
74 new VersionRange(min: v010, max: v080), | |
75 new VersionRange(min: v114, max: v124), | |
76 new VersionRange(min: v123, max: v130) | |
77 ]), equals(new VersionConstraint.unionOf([ | |
78 new VersionRange(min: v003, max: v080), | |
79 new VersionRange(min: v114, max: v130) | |
80 ]))); | |
81 }); | |
82 | |
83 test("merges adjacent ranges", () { | |
84 expect(new VersionConstraint.unionOf([ | |
85 new VersionRange(min: v003, max: v072, includeMax: true), | |
86 new VersionRange(min: v072, max: v080), | |
87 new VersionRange(min: v114, max: v124), | |
88 new VersionRange(min: v124, max: v130, includeMin: true) | |
89 ]), equals(new VersionConstraint.unionOf([ | |
90 new VersionRange(min: v003, max: v080), | |
91 new VersionRange(min: v114, max: v130) | |
92 ]))); | |
93 }); | |
94 | |
95 test("doesn't merge not-quite-adjacent ranges", () { | |
96 expect(new VersionConstraint.unionOf([ | |
97 new VersionRange(min: v003, max: v072), | |
98 new VersionRange(min: v072, max: v080) | |
99 ]), equals(new VersionConstraint.unionOf([ | |
100 new VersionRange(min: v003, max: v072), | |
101 new VersionRange(min: v072, max: v080) | |
102 ]))); | |
103 }); | |
104 | |
105 test("merges version numbers into ranges", () { | |
106 expect(new VersionConstraint.unionOf([ | |
107 new VersionRange(min: v003, max: v072), | |
108 v010, | |
109 new VersionRange(min: v114, max: v124), | |
110 v123 | |
111 ]), equals(new VersionConstraint.unionOf([ | |
112 new VersionRange(min: v003, max: v072), | |
113 new VersionRange(min: v114, max: v124) | |
114 ]))); | |
115 }); | |
116 | |
117 test("merges adjacent version numbers into ranges", () { | |
118 expect(new VersionConstraint.unionOf([ | |
119 new VersionRange(min: v003, max: v072), | |
120 v072, | |
121 v114, | |
122 new VersionRange(min: v114, max: v124) | |
123 ]), equals(new VersionConstraint.unionOf([ | |
124 new VersionRange(min: v003, max: v072, includeMax: true), | |
125 new VersionRange(min: v114, max: v124, includeMin: true) | |
126 ]))); | |
127 }); | |
128 }); | |
129 | |
130 test('isEmpty returns false', () { | |
131 expect(new VersionConstraint.unionOf([ | |
132 new VersionRange(min: v003, max: v080), | |
133 new VersionRange(min: v123, max: v130), | |
134 ]), isNot(isEmpty)); | |
135 }); | |
136 | |
137 test('isAny returns false', () { | |
138 expect(new VersionConstraint.unionOf([ | |
139 new VersionRange(min: v003, max: v080), | |
140 new VersionRange(min: v123, max: v130), | |
141 ]).isAny, isFalse); | |
142 }); | |
143 | |
144 test('allows() allows anything the components allow', () { | |
145 var union = new VersionConstraint.unionOf([ | |
146 new VersionRange(min: v003, max: v080), | |
147 new VersionRange(min: v123, max: v130), | |
148 v200 | |
149 ]); | |
150 | |
151 expect(union, allows(v010)); | |
152 expect(union, doesNotAllow(v080)); | |
153 expect(union, allows(v124)); | |
154 expect(union, doesNotAllow(v140)); | |
155 expect(union, allows(v200)); | |
156 }); | |
157 | |
158 group('allowsAll()', () { | |
159 test('for a version, returns true if any component allows the version', () { | |
160 var union = new VersionConstraint.unionOf([ | |
161 new VersionRange(min: v003, max: v080), | |
162 new VersionRange(min: v123, max: v130), | |
163 v200 | |
164 ]); | |
165 | |
166 expect(union.allowsAll(v010), isTrue); | |
167 expect(union.allowsAll(v080), isFalse); | |
168 expect(union.allowsAll(v124), isTrue); | |
169 expect(union.allowsAll(v140), isFalse); | |
170 expect(union.allowsAll(v200), isTrue); | |
171 }); | |
172 | |
173 test('for a version range, returns true if any component allows the whole ' | |
174 'range', () { | |
175 var union = new VersionConstraint.unionOf([ | |
176 new VersionRange(min: v003, max: v080), | |
177 new VersionRange(min: v123, max: v130) | |
178 ]); | |
179 | |
180 expect(union.allowsAll(new VersionRange(min: v003, max: v080)), isTrue); | |
181 expect(union.allowsAll(new VersionRange(min: v010, max: v072)), isTrue); | |
182 expect(union.allowsAll(new VersionRange(min: v010, max: v124)), isFalse); | |
183 }); | |
184 | |
185 group('for a union,', () { | |
186 var union = new VersionConstraint.unionOf([ | |
187 new VersionRange(min: v003, max: v080), | |
188 new VersionRange(min: v123, max: v130) | |
189 ]); | |
190 | |
191 test('returns true if every constraint matches a different constraint', | |
192 () { | |
193 expect(union.allowsAll(new VersionConstraint.unionOf([ | |
194 new VersionRange(min: v010, max: v072), | |
195 new VersionRange(min: v124, max: v130) | |
196 ])), isTrue); | |
197 }); | |
198 | |
199 test('returns true if every constraint matches the same constraint', () { | |
200 expect(union.allowsAll(new VersionConstraint.unionOf([ | |
201 new VersionRange(min: v003, max: v010), | |
202 new VersionRange(min: v072, max: v080) | |
203 ])), isTrue); | |
204 }); | |
205 | |
206 test("returns false if there's an unmatched constraint", () { | |
207 expect(union.allowsAll(new VersionConstraint.unionOf([ | |
208 new VersionRange(min: v010, max: v072), | |
209 new VersionRange(min: v124, max: v130), | |
210 new VersionRange(min: v140, max: v200) | |
211 ])), isFalse); | |
212 }); | |
213 | |
214 test("returns false if a constraint isn't fully matched", () { | |
215 expect(union.allowsAll(new VersionConstraint.unionOf([ | |
216 new VersionRange(min: v010, max: v114), | |
217 new VersionRange(min: v124, max: v130) | |
218 ])), isFalse); | |
219 }); | |
220 }); | |
221 }); | |
222 | |
223 group('allowsAny()', () { | |
224 test('for a version, returns true if any component allows the version', () { | |
225 var union = new VersionConstraint.unionOf([ | |
226 new VersionRange(min: v003, max: v080), | |
227 new VersionRange(min: v123, max: v130), | |
228 v200 | |
229 ]); | |
230 | |
231 expect(union.allowsAny(v010), isTrue); | |
232 expect(union.allowsAny(v080), isFalse); | |
233 expect(union.allowsAny(v124), isTrue); | |
234 expect(union.allowsAny(v140), isFalse); | |
235 expect(union.allowsAny(v200), isTrue); | |
236 }); | |
237 | |
238 test('for a version range, returns true if any component allows part of ' | |
239 'the range', () { | |
240 var union = new VersionConstraint.unionOf([ | |
241 new VersionRange(min: v003, max: v080), | |
242 v123 | |
243 ]); | |
244 | |
245 expect(union.allowsAny(new VersionRange(min: v010, max: v114)), isTrue); | |
246 expect(union.allowsAny(new VersionRange(min: v114, max: v124)), isTrue); | |
247 expect(union.allowsAny(new VersionRange(min: v124, max: v130)), isFalse); | |
248 }); | |
249 | |
250 group('for a union,', () { | |
251 var union = new VersionConstraint.unionOf([ | |
252 new VersionRange(min: v010, max: v080), | |
253 new VersionRange(min: v123, max: v130) | |
254 ]); | |
255 | |
256 test('returns true if any constraint matches', () { | |
257 expect(union.allowsAny(new VersionConstraint.unionOf([ | |
258 v072, | |
259 new VersionRange(min: v200, max: v300) | |
260 ])), isTrue); | |
261 | |
262 expect(union.allowsAny(new VersionConstraint.unionOf([ | |
263 v003, | |
264 new VersionRange(min: v124, max: v300) | |
265 ])), isTrue); | |
266 }); | |
267 | |
268 test("returns false if no constraint matches", () { | |
269 expect(union.allowsAny(new VersionConstraint.unionOf([ | |
270 v003, | |
271 new VersionRange(min: v130, max: v140), | |
272 new VersionRange(min: v140, max: v200) | |
273 ])), isFalse); | |
274 }); | |
275 }); | |
276 }); | |
277 | |
278 group("intersect()", () { | |
279 test("with an overlapping version, returns that version", () { | |
280 expect(new VersionConstraint.unionOf([ | |
281 new VersionRange(min: v010, max: v080), | |
282 new VersionRange(min: v123, max: v140) | |
283 ]).intersect(v072), equals(v072)); | |
284 }); | |
285 | |
286 test("with a non-overlapping version, returns an empty constraint", () { | |
287 expect(new VersionConstraint.unionOf([ | |
288 new VersionRange(min: v010, max: v080), | |
289 new VersionRange(min: v123, max: v140) | |
290 ]).intersect(v300), isEmpty); | |
291 }); | |
292 | |
293 test("with an overlapping range, returns that range", () { | |
294 var range = new VersionRange(min: v072, max: v080); | |
295 expect(new VersionConstraint.unionOf([ | |
296 new VersionRange(min: v010, max: v080), | |
297 new VersionRange(min: v123, max: v140) | |
298 ]).intersect(range), equals(range)); | |
299 }); | |
300 | |
301 test("with a non-overlapping range, returns an empty constraint", () { | |
302 expect(new VersionConstraint.unionOf([ | |
303 new VersionRange(min: v010, max: v080), | |
304 new VersionRange(min: v123, max: v140) | |
305 ]).intersect(new VersionRange(min: v080, max: v123)), isEmpty); | |
306 }); | |
307 | |
308 test("with a parially-overlapping range, returns the overlapping parts", | |
309 () { | |
310 expect(new VersionConstraint.unionOf([ | |
311 new VersionRange(min: v010, max: v080), | |
312 new VersionRange(min: v123, max: v140) | |
313 ]).intersect(new VersionRange(min: v072, max: v130)), | |
314 equals(new VersionConstraint.unionOf([ | |
315 new VersionRange(min: v072, max: v080), | |
316 new VersionRange(min: v123, max: v130) | |
317 ]))); | |
318 }); | |
319 | |
320 group("for a union,", () { | |
321 var union = new VersionConstraint.unionOf([ | |
322 new VersionRange(min: v003, max: v080), | |
323 new VersionRange(min: v123, max: v130) | |
324 ]); | |
325 | |
326 test("returns the overlapping parts", () { | |
327 expect(union.intersect(new VersionConstraint.unionOf([ | |
328 v010, | |
329 new VersionRange(min: v072, max: v124), | |
330 new VersionRange(min: v124, max: v130) | |
331 ])), equals(new VersionConstraint.unionOf([ | |
332 v010, | |
333 new VersionRange(min: v072, max: v080), | |
334 new VersionRange(min: v123, max: v124), | |
335 new VersionRange(min: v124, max: v130) | |
336 ]))); | |
337 }); | |
338 | |
339 test("drops parts that don't match", () { | |
340 expect(union.intersect(new VersionConstraint.unionOf([ | |
341 v003, | |
342 new VersionRange(min: v072, max: v080), | |
343 new VersionRange(min: v080, max: v123) | |
344 ])), equals(new VersionRange(min: v072, max: v080))); | |
345 }); | |
346 }); | |
347 }); | |
348 } | |
OLD | NEW |