OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 version_test; | 5 library version_test; |
6 | 6 |
7 import '../../../pkg/unittest/unittest.dart'; | 7 import '../../../pkg/unittest/unittest.dart'; |
8 import '../../pub/utils.dart'; | 8 import '../../pub/utils.dart'; |
9 import '../../pub/version.dart'; | 9 import '../../pub/version.dart'; |
10 | 10 |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 }); | 87 }); |
88 | 88 |
89 test('intersect()', () { | 89 test('intersect()', () { |
90 // Intersecting the same version returns the version. | 90 // Intersecting the same version returns the version. |
91 expect(v123.intersect(v123), equals(v123)); | 91 expect(v123.intersect(v123), equals(v123)); |
92 | 92 |
93 // Intersecting a different version allows no versions. | 93 // Intersecting a different version allows no versions. |
94 expect(v123.intersect(v114).isEmpty); | 94 expect(v123.intersect(v114).isEmpty); |
95 | 95 |
96 // Intersecting a range returns the version if the range allows it. | 96 // Intersecting a range returns the version if the range allows it. |
97 expect(v123.intersect(new VersionRange(v114, v124)), equals(v123)); | 97 expect(v123.intersect(new VersionRange(min: v114, max: v124)), |
| 98 equals(v123)); |
98 | 99 |
99 // Intersecting a range allows no versions if the range doesn't allow it. | 100 // Intersecting a range allows no versions if the range doesn't allow it. |
100 expect(v114.intersect(new VersionRange(v123, v124)).isEmpty); | 101 expect(v114.intersect(new VersionRange(min: v123, max: v124)).isEmpty); |
101 }); | 102 }); |
102 | 103 |
103 test('isEmpty', () { | 104 test('isEmpty', () { |
104 expect(!v123.isEmpty); | 105 expect(!v123.isEmpty); |
105 }); | 106 }); |
106 | 107 |
107 test('parse()', () { | 108 test('parse()', () { |
108 expect(new Version.parse('0.0.0'), equals(new Version(0, 0, 0))); | 109 expect(new Version.parse('0.0.0'), equals(new Version(0, 0, 0))); |
109 expect(new Version.parse('12.34.56'), equals(new Version(12, 34, 56))); | 110 expect(new Version.parse('12.34.56'), equals(new Version(12, 34, 56))); |
110 | 111 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 expect(new Version(1, 2, 3, build: 'build.1').toString(), equals( | 143 expect(new Version(1, 2, 3, build: 'build.1').toString(), equals( |
143 '1.2.3+build.1')); | 144 '1.2.3+build.1')); |
144 expect(new Version(1, 2, 3, pre: 'pre', build: 'bui').toString(), equals( | 145 expect(new Version(1, 2, 3, pre: 'pre', build: 'bui').toString(), equals( |
145 '1.2.3-pre+bui')); | 146 '1.2.3-pre+bui')); |
146 }); | 147 }); |
147 }); | 148 }); |
148 | 149 |
149 group('VersionRange', () { | 150 group('VersionRange', () { |
150 group('constructor', () { | 151 group('constructor', () { |
151 test('takes a min and max', () { | 152 test('takes a min and max', () { |
152 var range = new VersionRange(v123, v124); | 153 var range = new VersionRange(min: v123, max: v124); |
153 expect(range.min, equals(v123)); | 154 expect(range.min, equals(v123)); |
154 expect(range.max, equals(v124)); | 155 expect(range.max, equals(v124)); |
155 }); | 156 }); |
156 | 157 |
157 test('allows omitting max', () { | 158 test('allows omitting max', () { |
158 var range = new VersionRange(v123); | 159 var range = new VersionRange(min: v123); |
159 expect(range.min, equals(v123)); | 160 expect(range.min, equals(v123)); |
160 expect(range.max, isNull); | 161 expect(range.max, isNull); |
161 }); | 162 }); |
162 | 163 |
163 test('allows omitting min and max', () { | 164 test('allows omitting min and max', () { |
164 var range = new VersionRange(); | 165 var range = new VersionRange(); |
165 expect(range.min, isNull); | 166 expect(range.min, isNull); |
166 expect(range.max, isNull); | 167 expect(range.max, isNull); |
167 }); | 168 }); |
168 | 169 |
(...skipping 11 matching lines...) Expand all Loading... |
180 var range = new VersionRange(max: v123, includeMax: true); | 181 var range = new VersionRange(max: v123, includeMax: true); |
181 expect(range.includeMax); | 182 expect(range.includeMax); |
182 }); | 183 }); |
183 | 184 |
184 test('includeMax defaults to false if omitted', () { | 185 test('includeMax defaults to false if omitted', () { |
185 var range = new VersionRange(max: v123); | 186 var range = new VersionRange(max: v123); |
186 expect(range.includeMax, isFalse); | 187 expect(range.includeMax, isFalse); |
187 }); | 188 }); |
188 | 189 |
189 test('throws if min > max', () { | 190 test('throws if min > max', () { |
190 throwsIllegalArg(() => new VersionRange(v124, v123)); | 191 throwsIllegalArg(() => new VersionRange(min: v124, max: v123)); |
191 }); | 192 }); |
192 }); | 193 }); |
193 | 194 |
194 group('allows()', () { | 195 group('allows()', () { |
195 test('version must be greater than min', () { | 196 test('version must be greater than min', () { |
196 var range = new VersionRange(v123, v234); | 197 var range = new VersionRange(min: v123, max: v234); |
197 | 198 |
198 expect(!range.allows(new Version.parse('1.2.2'))); | 199 expect(!range.allows(new Version.parse('1.2.2'))); |
199 expect(!range.allows(new Version.parse('1.2.3'))); | 200 expect(!range.allows(new Version.parse('1.2.3'))); |
200 expect(range.allows(new Version.parse('1.3.3'))); | 201 expect(range.allows(new Version.parse('1.3.3'))); |
201 expect(range.allows(new Version.parse('2.3.3'))); | 202 expect(range.allows(new Version.parse('2.3.3'))); |
202 }); | 203 }); |
203 | 204 |
204 test('version must be min or greater if includeMin', () { | 205 test('version must be min or greater if includeMin', () { |
205 var range = new VersionRange(v123, v234, includeMin: true); | 206 var range = new VersionRange(min: v123, max: v234, includeMin: true); |
206 | 207 |
207 expect(!range.allows(new Version.parse('1.2.2'))); | 208 expect(!range.allows(new Version.parse('1.2.2'))); |
208 expect(range.allows(new Version.parse('1.2.3'))); | 209 expect(range.allows(new Version.parse('1.2.3'))); |
209 expect(range.allows(new Version.parse('1.3.3'))); | 210 expect(range.allows(new Version.parse('1.3.3'))); |
210 expect(range.allows(new Version.parse('2.3.3'))); | 211 expect(range.allows(new Version.parse('2.3.3'))); |
211 }); | 212 }); |
212 | 213 |
213 test('version must be less than max', () { | 214 test('version must be less than max', () { |
214 var range = new VersionRange(v123, v234); | 215 var range = new VersionRange(min: v123, max: v234); |
215 | 216 |
216 expect(range.allows(new Version.parse('2.3.3'))); | 217 expect(range.allows(new Version.parse('2.3.3'))); |
217 expect(!range.allows(new Version.parse('2.3.4'))); | 218 expect(!range.allows(new Version.parse('2.3.4'))); |
218 expect(!range.allows(new Version.parse('2.4.3'))); | 219 expect(!range.allows(new Version.parse('2.4.3'))); |
219 }); | 220 }); |
220 | 221 |
221 test('version must be max or less if includeMax', () { | 222 test('version must be max or less if includeMax', () { |
222 var range = new VersionRange(v123, v234, includeMax: true); | 223 var range = new VersionRange(min: v123, max: v234, includeMax: true); |
223 | 224 |
224 expect(range.allows(new Version.parse('2.3.3'))); | 225 expect(range.allows(new Version.parse('2.3.3'))); |
225 expect(range.allows(new Version.parse('2.3.4'))); | 226 expect(range.allows(new Version.parse('2.3.4'))); |
226 expect(!range.allows(new Version.parse('2.4.3'))); | 227 expect(!range.allows(new Version.parse('2.4.3'))); |
227 }); | 228 }); |
228 | 229 |
229 test('has no min if one was not set', () { | 230 test('has no min if one was not set', () { |
230 var range = new VersionRange(max: v123); | 231 var range = new VersionRange(max: v123); |
231 | 232 |
232 expect(range.allows(new Version.parse('0.0.0'))); | 233 expect(range.allows(new Version.parse('0.0.0'))); |
233 expect(!range.allows(new Version.parse('1.2.3'))); | 234 expect(!range.allows(new Version.parse('1.2.3'))); |
234 }); | 235 }); |
235 | 236 |
236 test('has no max if one was not set', () { | 237 test('has no max if one was not set', () { |
237 var range = new VersionRange(v123); | 238 var range = new VersionRange(min: v123); |
238 | 239 |
239 expect(!range.allows(new Version.parse('1.2.3'))); | 240 expect(!range.allows(new Version.parse('1.2.3'))); |
240 expect(range.allows(new Version.parse('1.3.3'))); | 241 expect(range.allows(new Version.parse('1.3.3'))); |
241 expect(range.allows(new Version.parse('999.3.3'))); | 242 expect(range.allows(new Version.parse('999.3.3'))); |
242 }); | 243 }); |
243 | 244 |
244 test('allows any version if there is no min or max', () { | 245 test('allows any version if there is no min or max', () { |
245 var range = new VersionRange(); | 246 var range = new VersionRange(); |
246 | 247 |
247 expect(range.allows(new Version.parse('0.0.0'))); | 248 expect(range.allows(new Version.parse('0.0.0'))); |
248 expect(range.allows(new Version.parse('999.99.9'))); | 249 expect(range.allows(new Version.parse('999.99.9'))); |
249 }); | 250 }); |
250 }); | 251 }); |
251 | 252 |
252 group('intersect()', () { | 253 group('intersect()', () { |
253 test('two overlapping ranges', () { | 254 test('two overlapping ranges', () { |
254 var a = new VersionRange(v123, v250); | 255 var a = new VersionRange(min: v123, max: v250); |
255 var b = new VersionRange(v200, v300); | 256 var b = new VersionRange(min: v200, max: v300); |
256 var intersect = a.intersect(b); | 257 var intersect = a.intersect(b); |
257 expect(intersect.min, equals(v200)); | 258 expect(intersect.min, equals(v200)); |
258 expect(intersect.max, equals(v250)); | 259 expect(intersect.max, equals(v250)); |
259 expect(intersect.includeMin, isFalse); | 260 expect(intersect.includeMin, isFalse); |
260 expect(intersect.includeMax, isFalse); | 261 expect(intersect.includeMax, isFalse); |
261 }); | 262 }); |
262 | 263 |
263 test('a non-overlapping range allows no versions', () { | 264 test('a non-overlapping range allows no versions', () { |
264 var a = new VersionRange(v114, v124); | 265 var a = new VersionRange(min: v114, max: v124); |
265 var b = new VersionRange(v200, v250); | 266 var b = new VersionRange(min: v200, max: v250); |
266 expect(a.intersect(b).isEmpty); | 267 expect(a.intersect(b).isEmpty); |
267 }); | 268 }); |
268 | 269 |
269 test('adjacent ranges allow no versions if exclusive', () { | 270 test('adjacent ranges allow no versions if exclusive', () { |
270 var a = new VersionRange(v114, v124, includeMax: false); | 271 var a = new VersionRange(min: v114, max: v124, includeMax: false); |
271 var b = new VersionRange(v124, v200, includeMin: true); | 272 var b = new VersionRange(min: v124, max: v200, includeMin: true); |
272 expect(a.intersect(b).isEmpty); | 273 expect(a.intersect(b).isEmpty); |
273 }); | 274 }); |
274 | 275 |
275 test('adjacent ranges allow version if inclusive', () { | 276 test('adjacent ranges allow version if inclusive', () { |
276 var a = new VersionRange(v114, v124, includeMax: true); | 277 var a = new VersionRange(min: v114, max: v124, includeMax: true); |
277 var b = new VersionRange(v124, v200, includeMin: true); | 278 var b = new VersionRange(min: v124, max: v200, includeMin: true); |
278 expect(a.intersect(b), equals(v124)); | 279 expect(a.intersect(b), equals(v124)); |
279 }); | 280 }); |
280 | 281 |
281 test('with an open range', () { | 282 test('with an open range', () { |
282 var open = new VersionRange(); | 283 var open = new VersionRange(); |
283 var a = new VersionRange(v114, v124); | 284 var a = new VersionRange(min: v114, max: v124); |
284 expect(open.intersect(open), equals(open)); | 285 expect(open.intersect(open), equals(open)); |
285 expect(a.intersect(open), equals(a)); | 286 expect(a.intersect(open), equals(a)); |
286 }); | 287 }); |
287 | 288 |
288 test('returns the version if the range allows it', () { | 289 test('returns the version if the range allows it', () { |
289 expect(new VersionRange(v114, v124).intersect(v123), equals(v123)); | 290 expect(new VersionRange(min: v114, max: v124).intersect(v123), |
290 expect(new VersionRange(v123, v124).intersect(v114).isEmpty); | 291 equals(v123)); |
| 292 expect(new VersionRange(min: v123, max: v124).intersect(v114).isEmpty); |
291 }); | 293 }); |
292 }); | 294 }); |
293 | 295 |
294 test('isEmpty', () { | 296 test('isEmpty', () { |
295 expect(new VersionRange().isEmpty, isFalse); | 297 expect(new VersionRange().isEmpty, isFalse); |
296 expect(new VersionRange(v123, v124).isEmpty, isFalse); | 298 expect(new VersionRange(min: v123, max: v124).isEmpty, isFalse); |
297 }); | 299 }); |
298 }); | 300 }); |
299 | 301 |
300 group('VersionConstraint', () { | 302 group('VersionConstraint', () { |
301 test('empty', () { | 303 test('empty', () { |
302 expect(new VersionConstraint.empty().isEmpty); | 304 expect(new VersionConstraint.empty().isEmpty); |
303 }); | 305 }); |
304 | 306 |
305 group('parse()', () { | 307 group('parse()', () { |
306 test('parses an exact version', () { | 308 test('parses an exact version', () { |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
422 | 424 |
423 Matcher allows(List<Version> versions) => | 425 Matcher allows(List<Version> versions) => |
424 new VersionConstraintMatcher(versions, true); | 426 new VersionConstraintMatcher(versions, true); |
425 | 427 |
426 Matcher doesNotAllow(List<Version> versions) => | 428 Matcher doesNotAllow(List<Version> versions) => |
427 new VersionConstraintMatcher(versions, false); | 429 new VersionConstraintMatcher(versions, false); |
428 | 430 |
429 throwsIllegalArg(function) { | 431 throwsIllegalArg(function) { |
430 expect(function, throwsA((e) => e is ArgumentError)); | 432 expect(function, throwsA((e) => e is ArgumentError)); |
431 } | 433 } |
OLD | NEW |