Chromium Code Reviews| Index: test/version_range_test.dart |
| diff --git a/test/version_range_test.dart b/test/version_range_test.dart |
| index e15539bec27e1d623b96ef6fc32e9bac72e8580f..1dcc22e5e60c1d7226724ebd550508437ef5500d 100644 |
| --- a/test/version_range_test.dart |
| +++ b/test/version_range_test.dart |
| @@ -151,6 +151,165 @@ main() { |
| }); |
| }); |
| + group('allowsAll()', () { |
| + test('allows an empty constraint', () { |
| + expect( |
| + new VersionRange(min: v123, max: v250) |
| + .allowsAll(VersionConstraint.empty), |
| + isTrue); |
| + }); |
| + |
| + test('allows allowed versions', () { |
| + var range = new VersionRange(min: v123, max: v250, includeMax: true); |
| + expect(range.allowsAll(v123), isFalse); |
| + expect(range.allowsAll(v124), isTrue); |
| + expect(range.allowsAll(v250), isTrue); |
| + expect(range.allowsAll(v300), isFalse); |
| + }); |
| + |
| + test('with no min', () { |
| + var range = new VersionRange(max: v250); |
| + expect(range.allowsAll(new VersionRange(min: v080, max: v140)), isTrue); |
| + expect(range.allowsAll(new VersionRange(min: v080, max: v300)), isFalse); |
| + expect(range.allowsAll(new VersionRange(max: v140)), isTrue); |
| + expect(range.allowsAll(new VersionRange(max: v300)), isFalse); |
| + 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.
|
| + }); |
| + |
| + test('with no max', () { |
| + var range = new VersionRange(min: v010); |
| + expect(range.allowsAll(new VersionRange(min: v080, max: v140)), isTrue); |
| + expect(range.allowsAll(new VersionRange(min: v003, max: v140)), isFalse); |
| + expect(range.allowsAll(new VersionRange(min: v080)), isTrue); |
| + expect(range.allowsAll(new VersionRange(min: v003)), isFalse); |
| + expect(range.allowsAll(range), isTrue); |
| + }); |
| + |
| + test('with a min and max', () { |
| + var range = new VersionRange(min: v010, max: v250); |
| + expect(range.allowsAll(new VersionRange(min: v080, max: v140)), isTrue); |
| + expect(range.allowsAll(new VersionRange(min: v080, max: v300)), isFalse); |
| + expect(range.allowsAll(new VersionRange(min: v003, max: v140)), isFalse); |
| + expect(range.allowsAll(new VersionRange(min: v080)), isFalse); |
| + expect(range.allowsAll(new VersionRange(max: v140)), isFalse); |
| + expect(range.allowsAll(range), isTrue); |
| + }); |
| + |
| + test("allows a bordering range that's not more inclusive", () { |
| + var exclusive = new VersionRange(min: v010, max: v250); |
| + var inclusive = new VersionRange( |
| + min: v010, includeMin: true, max: v250, includeMax: true); |
| + expect(inclusive.allowsAll(exclusive), isTrue); |
| + expect(inclusive.allowsAll(inclusive), isTrue); |
| + expect(exclusive.allowsAll(inclusive), isFalse); |
| + expect(exclusive.allowsAll(exclusive), isTrue); |
| + }); |
| + |
| + test('allows unions that are completely contained', () { |
| + var range = new VersionRange(min: v114, max: v200); |
| + expect( |
| + range.allowsAll(new VersionRange(min: v123, max: v124).union(v140)), |
| + isTrue); |
| + expect( |
| + range.allowsAll(new VersionRange(min: v010, max: v124).union(v140)), |
| + isFalse); |
| + expect( |
| + range.allowsAll(new VersionRange(min: v123, max: v234).union(v140)), |
| + isFalse); |
| + }); |
| + }); |
| + |
| + group('allowsAny()', () { |
| + test('disallows an empty constraint', () { |
| + expect( |
| + new VersionRange(min: v123, max: v250) |
| + .allowsAny(VersionConstraint.empty), |
| + isFalse); |
| + }); |
| + |
| + test('allows allowed versions', () { |
| + var range = new VersionRange(min: v123, max: v250, includeMax: true); |
| + expect(range.allowsAny(v123), isFalse); |
| + expect(range.allowsAny(v124), isTrue); |
| + expect(range.allowsAny(v250), isTrue); |
| + expect(range.allowsAny(v300), isFalse); |
| + }); |
| + |
| + test('with no min', () { |
| + var range = new VersionRange(max: v200); |
| + expect(range.allowsAny(new VersionRange(min: v140, max: v300)), isTrue); |
| + expect(range.allowsAny(new VersionRange(min: v234, max: v300)), isFalse); |
| + expect(range.allowsAny(new VersionRange(min: v140)), isTrue); |
| + expect(range.allowsAny(new VersionRange(min: v234)), isFalse); |
| + expect(range.allowsAny(range), isTrue); |
| + }); |
| + |
| + test('with no max', () { |
| + var range = new VersionRange(min: v072); |
| + expect(range.allowsAny(new VersionRange(min: v003, max: v140)), isTrue); |
| + expect(range.allowsAny(new VersionRange(min: v003, max: v010)), isFalse); |
| + expect(range.allowsAny(new VersionRange(max: v080)), isTrue); |
| + expect(range.allowsAny(new VersionRange(max: v003)), isFalse); |
| + expect(range.allowsAny(range), isTrue); |
| + }); |
| + |
| + test('with a min and max', () { |
| + var range = new VersionRange(min: v072, max: v200); |
| + expect(range.allowsAny(new VersionRange(min: v003, max: v140)), isTrue); |
| + expect(range.allowsAny(new VersionRange(min: v140, max: v300)), isTrue); |
| + expect(range.allowsAny(new VersionRange(min: v003, max: v010)), isFalse); |
| + expect(range.allowsAny(new VersionRange(min: v234, max: v300)), isFalse); |
| + expect(range.allowsAny(new VersionRange(max: v010)), isFalse); |
| + expect(range.allowsAny(new VersionRange(min: v234)), isFalse); |
| + expect(range.allowsAny(range), isTrue); |
| + }); |
| + |
| + test('allows a bordering range when both are inclusive', () { |
| + expect(new VersionRange(max: v250).allowsAny(new VersionRange(min: v250)), |
| + isFalse); |
| + |
| + expect(new VersionRange(max: v250, includeMax: true) |
| + .allowsAny(new VersionRange(min: v250)), |
| + isFalse); |
| + |
| + expect(new VersionRange(max: v250) |
| + .allowsAny(new VersionRange(min: v250, includeMin: true)), |
| + isFalse); |
| + |
| + expect(new VersionRange(max: v250, includeMax: true) |
| + .allowsAny(new VersionRange(min: v250, includeMin: true)), |
| + isTrue); |
| + |
| + expect(new VersionRange(min: v250).allowsAny(new VersionRange(max: v250)), |
| + isFalse); |
| + |
| + expect(new VersionRange(min: v250, includeMin: true) |
| + .allowsAny(new VersionRange(max: v250)), |
| + isFalse); |
| + |
| + expect(new VersionRange(min: v250) |
| + .allowsAny(new VersionRange(max: v250, includeMax: true)), |
| + isFalse); |
| + |
| + expect(new VersionRange(min: v250, includeMin: true) |
| + .allowsAny(new VersionRange(max: v250, includeMax: true)), |
| + isTrue); |
| + }); |
| + |
| + test('allows unions that are partially contained', () { |
| + var range = new VersionRange(min: v114, max: v200); |
| + expect( |
| + range.allowsAny(new VersionRange(min: v010, max: v080).union(v140)), |
| + isTrue); |
| + expect( |
| + range.allowsAny(new VersionRange(min: v123, max: v234).union(v300)), |
| + isTrue); |
| + expect( |
| + range.allowsAny(new VersionRange(min: v234, max: v300).union(v010)), |
| + isFalse); |
| + }); |
| + }); |
| + |
| group('intersect()', () { |
| test('two overlapping ranges', () { |
| var a = new VersionRange(min: v123, max: v250); |
| @@ -195,6 +354,66 @@ main() { |
| }); |
| }); |
| + group('union()', () { |
| + test("with a version returns the range if it contains the version", () { |
| + var range = new VersionRange(min: v114, max: v124); |
| + expect(range.union(v123), equals(range)); |
| + }); |
| + |
| + test("with a version on the edge of the range, expands the range", () { |
| + expect(new VersionRange(min: v114, max: v124).union(v124), |
| + equals(new VersionRange(min: v114, max: v124, includeMax: true))); |
| + expect(new VersionRange(min: v114, max: v124).union(v114), |
| + equals(new VersionRange(min: v114, max: v124, includeMin: true))); |
| + }); |
| + |
| + test("with a version allows both the range and the version if the range " |
| + "doesn't contain the version", () { |
| + var result = new VersionRange(min: v003, max: v114).union(v123); |
| + 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.
|
| + expect(result, allows(v010)); |
| + }); |
| + |
| + test("returns a VersionUnion for a disjoint range", () { |
| + var result = new VersionRange(min: v003, max: v114) |
| + .union(new VersionRange(min: v130, max: v200)); |
| + expect(result, allows(v080)); |
| + expect(result, doesNotAllow(v123)); |
| + expect(result, allows(v140)); |
| + }); |
| + |
| + test("considers open ranges disjoint", () { |
| + var result = new VersionRange(min: v003, max: v114) |
| + .union(new VersionRange(min: v114, max: v200)); |
| + expect(result, allows(v080)); |
| + expect(result, doesNotAllow(v114)); |
| + expect(result, allows(v140)); |
| + }); |
| + |
| + test("returns a merged range for an overlapping range", () { |
| + var result = new VersionRange(min: v003, max: v114) |
| + .union(new VersionRange(min: v080, max: v200)); |
| + expect(result, equals(new VersionRange(min: v003, max: v200))); |
| + }); |
| + |
| + test("considers closed ranges overlapping", () { |
| + var result = new VersionRange(min: v003, max: v114, includeMax: true) |
| + .union(new VersionRange(min: v114, max: v200)); |
| + expect(result, equals(new VersionRange(min: v003, max: v200))); |
| + |
| + result = new VersionRange(min: v003, max: v114) |
| + .union(new VersionRange(min: v114, max: v200, includeMin: true)); |
| + expect(result, equals(new VersionRange(min: v003, max: v200))); |
| + }); |
| + |
| + test("includes edges if either range does", () { |
| + var result = new VersionRange(min: v003, max: v114, includeMin: true) |
| + .union(new VersionRange(min: v003, max: v114, includeMax: true)); |
| + expect(result, equals(new VersionRange( |
| + min: v003, max: v114, includeMin: true, includeMax: true))); |
| + }); |
| + }); |
| + |
| test('isEmpty', () { |
| expect(new VersionRange().isEmpty, isFalse); |
| expect(new VersionRange(min: v123, max: v124).isEmpty, isFalse); |