Chromium Code Reviews| 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 |