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

Unified Diff: test/version_range_test.dart

Issue 2045803002: Add VersionConstraint.difference(). (Closed) Base URL: git@github.com:dart-lang/pub_semver@master
Patch Set: Code review changes Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pubspec.yaml ('k') | test/version_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/version_range_test.dart
diff --git a/test/version_range_test.dart b/test/version_range_test.dart
index eaa473f033aba2ce71d14b743a96842305bab8f8..a2dbf98108e0d136309624224408c1bb7db2eece 100644
--- a/test/version_range_test.dart
+++ b/test/version_range_test.dart
@@ -340,8 +340,8 @@ main() {
});
test('adjacent ranges allow no versions if exclusive', () {
- var a = new VersionRange(min: v114, max: v124, includeMax: false);
- var b = new VersionRange(min: v124, max: v200, includeMin: true);
+ var a = new VersionRange(min: v114, max: v124);
+ var b = new VersionRange(min: v124, max: v200);
expect(a.intersect(b).isEmpty, isTrue);
});
@@ -441,6 +441,164 @@ main() {
});
});
+ group('difference()', () {
+ test("with an empty range returns the original range", () {
+ expect(
+ new VersionRange(min: v003, max: v114)
+ .difference(VersionConstraint.empty),
+ equals(new VersionRange(min: v003, max: v114)));
+ });
+
+ test("with a version outside the range returns the original range", () {
+ expect(
+ new VersionRange(min: v003, max: v114).difference(v200),
+ equals(new VersionRange(min: v003, max: v114)));
+ });
+
+ test("with a version in the range splits the range", () {
+ expect(
+ new VersionRange(min: v003, max: v114).difference(v072),
+ equals(new VersionConstraint.unionOf([
+ new VersionRange(min: v003, max: v072),
+ new VersionRange(min: v072, max: v114)
+ ])));
+ });
+
+ test("with the max version makes the max exclusive", () {
+ expect(
+ new VersionRange(min: v003, max: v114, includeMax: true)
+ .difference(v114),
+ equals(new VersionRange(min: v003, max: v114)));
+ });
+
+ test("with the min version makes the min exclusive", () {
+ expect(
+ new VersionRange(min: v003, max: v114, includeMin: true)
+ .difference(v003),
+ equals(new VersionRange(min: v003, max: v114)));
+ });
+
+ test("with a disjoint range returns the original", () {
+ expect(
+ new VersionRange(min: v003, max: v114)
+ .difference(new VersionRange(min: v123, max: v140)),
+ equals(new VersionRange(min: v003, max: v114)));
+ });
+
+ test("with an adjacent range returns the original", () {
+ expect(
+ new VersionRange(min: v003, max: v114, includeMax: true)
+ .difference(new VersionRange(min: v114, max: v140)),
+ equals(new VersionRange(min: v003, max: v114, includeMax: true)));
+ });
+
+ test("with a range at the beginning cuts off the beginning of the range",
+ () {
+ expect(
+ new VersionRange(min: v080, max: v130)
+ .difference(new VersionRange(min: v010, max: v114)),
+ equals(new VersionRange(min: v114, max: v130, includeMin: true)));
+ expect(
+ new VersionRange(min: v080, max: v130)
+ .difference(new VersionRange(max: v114)),
+ equals(new VersionRange(min: v114, max: v130, includeMin: true)));
+ expect(
+ new VersionRange(min: v080, max: v130).difference(
+ new VersionRange(min: v010, max: v114, includeMax: true)),
+ equals(new VersionRange(min: v114, max: v130)));
+ expect(
+ new VersionRange(min: v080, max: v130, includeMin: true).difference(
+ new VersionRange(min: v010, max: v080, includeMax: true)),
+ equals(new VersionRange(min: v080, max: v130)));
+ expect(
+ new VersionRange(min: v080, max: v130, includeMax: true)
+ .difference(new VersionRange(min: v080, max: v130)),
+ equals(v130));
+ });
+
+ test("with a range at the end cuts off the end of the range",
+ () {
+ expect(
+ new VersionRange(min: v080, max: v130)
+ .difference(new VersionRange(min: v114, max: v140)),
+ equals(new VersionRange(min: v080, max: v114, includeMax: true)));
+ expect(
+ new VersionRange(min: v080, max: v130)
+ .difference(new VersionRange(min: v114)),
+ equals(new VersionRange(min: v080, max: v114, includeMax: true)));
+ expect(
+ new VersionRange(min: v080, max: v130).difference(
+ new VersionRange(min: v114, max: v140, includeMin: true)),
+ equals(new VersionRange(min: v080, max: v114)));
+ expect(
+ new VersionRange(min: v080, max: v130, includeMax: true).difference(
+ new VersionRange(min: v130, max: v140, includeMin: true)),
+ equals(new VersionRange(min: v080, max: v130)));
+ expect(
+ new VersionRange(min: v080, max: v130, includeMin: true)
+ .difference(new VersionRange(min: v080, max: v130)),
+ equals(v080));
+ });
+
+ test("with a range in the middle cuts the range in half", () {
+ expect(
+ new VersionRange(min: v003, max: v130)
+ .difference(new VersionRange(min: v072, max: v114)),
+ equals(new VersionConstraint.unionOf([
+ new VersionRange(min: v003, max: v072, includeMax: true),
+ new VersionRange(min: v114, max: v130, includeMin: true)
+ ])));
+ });
+
+ test("with a totally covering range returns empty", () {
+ expect(
+ new VersionRange(min: v114, max: v200)
+ .difference(new VersionRange(min: v072, max: v300)),
+ isEmpty);
+ expect(
+ new VersionRange(min: v003, max: v114)
+ .difference(new VersionRange(min: v003, max: v114)),
+ isEmpty);
+ expect(
+ new VersionRange(
+ min: v003, max: v114, includeMin: true, includeMax: true)
+ .difference(new VersionRange(
+ min: v003, max: v114, includeMin: true, includeMax: true)),
+ isEmpty);
+ });
+
+ test("with a version union that doesn't cover the range, returns the "
+ "original", () {
+ expect(
+ new VersionRange(min: v114, max: v140)
+ .difference(new VersionConstraint.unionOf([v010, v200])),
+ equals(new VersionRange(min: v114, max: v140)));
+ });
+
+ test("with a version union that intersects the ends, chops them off", () {
+ expect(
+ new VersionRange(min: v114, max: v140)
+ .difference(new VersionConstraint.unionOf([
+ new VersionRange(min: v080, max: v123),
+ new VersionRange(min: v130, max: v200)
+ ])),
+ equals(new VersionRange(
+ min: v123, max: v130, includeMin: true, includeMax: true)));
+ });
+
+ test("with a version union that intersects the middle, chops it up", () {
+ expect(
+ new VersionRange(min: v114, max: v140)
+ .difference(new VersionConstraint.unionOf([v123, v124, v130])),
+ equals(new VersionConstraint.unionOf([
+ new VersionRange(min: v114, max: v123),
+ new VersionRange(min: v123, max: v124),
+ new VersionRange(min: v124, max: v130),
+ new VersionRange(min: v130, max: v140)
+ ])));
+ });
+ });
+
test('isEmpty', () {
expect(new VersionRange().isEmpty, isFalse);
expect(new VersionRange(min: v123, max: v124).isEmpty, isFalse);
« no previous file with comments | « pubspec.yaml ('k') | test/version_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698