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

Unified Diff: test/version_range_test.dart

Issue 607663002: Harvest from pub. Mostly a straight copy, except: (Closed) Base URL: https://github.com/dart-lang/pub_semver.git@master
Patch Set: Revise! Created 6 years, 3 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 | « test/version_constraint_test.dart ('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
new file mode 100644
index 0000000000000000000000000000000000000000..388917ff52354a45eee0904bf2547bda62f5afdc
--- /dev/null
+++ b/test/version_range_test.dart
@@ -0,0 +1,202 @@
+// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library pub_semver.test.version_range_test;
+
+import 'package:unittest/unittest.dart';
+
+import 'package:pub_semver/pub_semver.dart';
+
+import 'utils.dart';
+
+main() {
+ group('constructor', () {
+ test('takes a min and max', () {
+ var range = new VersionRange(min: v123, max: v124);
+ expect(range.isAny, isFalse);
+ expect(range.min, equals(v123));
+ expect(range.max, equals(v124));
+ });
+
+ test('allows omitting max', () {
+ var range = new VersionRange(min: v123);
+ expect(range.isAny, isFalse);
+ expect(range.min, equals(v123));
+ expect(range.max, isNull);
+ });
+
+ test('allows omitting min and max', () {
+ var range = new VersionRange();
+ expect(range.isAny, isTrue);
+ expect(range.min, isNull);
+ expect(range.max, isNull);
+ });
+
+ test('takes includeMin', () {
+ var range = new VersionRange(min: v123, includeMin: true);
+ expect(range.includeMin, isTrue);
+ });
+
+ test('includeMin defaults to false if omitted', () {
+ var range = new VersionRange(min: v123);
+ expect(range.includeMin, isFalse);
+ });
+
+ test('takes includeMax', () {
+ var range = new VersionRange(max: v123, includeMax: true);
+ expect(range.includeMax, isTrue);
+ });
+
+ test('includeMax defaults to false if omitted', () {
+ var range = new VersionRange(max: v123);
+ expect(range.includeMax, isFalse);
+ });
+
+ test('throws if min > max', () {
+ expect(() => new VersionRange(min: v124, max: v123), throwsArgumentError);
+ });
+ });
+
+ group('allows()', () {
+ test('version must be greater than min', () {
+ var range = new VersionRange(min: v123);
+
+ expect(range, allows(
+ new Version.parse('1.3.3'),
+ new Version.parse('2.3.3')));
+ expect(range, doesNotAllow(
+ new Version.parse('1.2.2'),
+ new Version.parse('1.2.3')));
+ });
+
+ test('version must be min or greater if includeMin', () {
+ var range = new VersionRange(min: v123, includeMin: true);
+
+ expect(range, allows(
+ new Version.parse('1.2.3'),
+ new Version.parse('1.3.3'),
+ new Version.parse('2.3.3')));
+ expect(range, doesNotAllow(new Version.parse('1.2.2')));
+ });
+
+ test('pre-release versions of inclusive min are excluded', () {
+ var range = new VersionRange(min: v123, includeMin: true);
+
+ expect(range, allows(new Version.parse('1.2.4-dev')));
+ expect(range, doesNotAllow(new Version.parse('1.2.3-dev')));
+ });
+
+ test('version must be less than max', () {
+ var range = new VersionRange(max: v234);
+
+ expect(range, allows(new Version.parse('2.3.3')));
+ expect(range, doesNotAllow(
+ new Version.parse('2.3.4'),
+ new Version.parse('2.4.3')));
+ });
+
+ test('pre-release versions of non-pre-release max are excluded', () {
+ var range = new VersionRange(max: v234);
+
+ expect(range, allows(new Version.parse('2.3.3')));
+ expect(range, doesNotAllow(
+ new Version.parse('2.3.4-dev'),
+ new Version.parse('2.3.4')));
+ });
+
+ test('pre-release versions of pre-release max are included', () {
+ var range = new VersionRange(max: new Version.parse('2.3.4-dev.2'));
+
+ expect(range, allows(
+ new Version.parse('2.3.4-dev.1')));
+ expect(range, doesNotAllow(
+ new Version.parse('2.3.4-dev.2'),
+ new Version.parse('2.3.4-dev.3')));
+ });
+
+ test('version must be max or less if includeMax', () {
+ var range = new VersionRange(min: v123, max: v234, includeMax: true);
+
+ expect(range, allows(
+ new Version.parse('2.3.3'),
+ new Version.parse('2.3.4'),
+ // Pre-releases of the max are allowed.
+ new Version.parse('2.3.4-dev')));
+ expect(range, doesNotAllow(new Version.parse('2.4.3')));
+ });
+
+ test('has no min if one was not set', () {
+ var range = new VersionRange(max: v123);
+
+ expect(range, allows(new Version.parse('0.0.0')));
+ expect(range, doesNotAllow(new Version.parse('1.2.3')));
+ });
+
+ test('has no max if one was not set', () {
+ var range = new VersionRange(min: v123);
+
+ expect(range, allows(
+ new Version.parse('1.3.3'),
+ new Version.parse('999.3.3')));
+ expect(range, doesNotAllow(new Version.parse('1.2.3')));
+ });
+
+ test('allows any version if there is no min or max', () {
+ var range = new VersionRange();
+
+ expect(range, allows(
+ new Version.parse('0.0.0'),
+ new Version.parse('999.99.9')));
+ });
+ });
+
+ group('intersect()', () {
+ test('two overlapping ranges', () {
+ var a = new VersionRange(min: v123, max: v250);
+ var b = new VersionRange(min: v200, max: v300);
+ var intersect = a.intersect(b);
+ expect(intersect.min, equals(v200));
+ expect(intersect.max, equals(v250));
+ expect(intersect.includeMin, isFalse);
+ expect(intersect.includeMax, isFalse);
+ });
+
+ test('a non-overlapping range allows no versions', () {
+ var a = new VersionRange(min: v114, max: v124);
+ var b = new VersionRange(min: v200, max: v250);
+ expect(a.intersect(b).isEmpty, isTrue);
+ });
+
+ 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);
+ expect(a.intersect(b).isEmpty, isTrue);
+ });
+
+ test('adjacent ranges allow version if inclusive', () {
+ var a = new VersionRange(min: v114, max: v124, includeMax: true);
+ var b = new VersionRange(min: v124, max: v200, includeMin: true);
+ expect(a.intersect(b), equals(v124));
+ });
+
+ test('with an open range', () {
+ var open = new VersionRange();
+ var a = new VersionRange(min: v114, max: v124);
+ expect(open.intersect(open), equals(open));
+ expect(a.intersect(open), equals(a));
+ });
+
+ test('returns the version if the range allows it', () {
+ expect(new VersionRange(min: v114, max: v124).intersect(v123),
+ equals(v123));
+ expect(new VersionRange(min: v123, max: v124).intersect(v114).isEmpty,
+ isTrue);
+ });
+ });
+
+ test('isEmpty', () {
+ expect(new VersionRange().isEmpty, isFalse);
+ expect(new VersionRange(min: v123, max: v124).isEmpty, isFalse);
+ });
+}
« no previous file with comments | « test/version_constraint_test.dart ('k') | test/version_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698