Enable and fix a number of lints, test on oldest supported SDK (#37)
Bump min SDK to Dart 2.0
diff --git a/.travis.yml b/.travis.yml
index c654072..0e732d0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,13 +1,23 @@
language: dart
-sudo: false
+
dart:
- dev
- - stable
+ - 2.0.0
dart_task:
- test
- - dartfmt
- - dartanalyzer
+
+matrix:
+ include:
+ # Only validate formatting using the dev release
+ - dart: dev
+ dart_task: dartfmt
+ - dart: dev
+ dart_task:
+ dartanalyzer: --fatal-warnings --fatal-hints .
+ - dart: 2.0.0
+ dart_task:
+ dartanalyzer: --fatal-warnings .
# Only building master means that we don't run two builds for each pull request.
branches:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f8feb24..4183252 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+# 1.4.3
+
+- Update Dart SDK constraint to `>=2.0.0 <3.0.0`.
+- Update `package:collection` constraint to `^1.0.0`.
+
# 1.4.2
* Set max SDK version to `<3.0.0`.
diff --git a/analysis_options.yaml b/analysis_options.yaml
new file mode 100644
index 0000000..c970ea7
--- /dev/null
+++ b/analysis_options.yaml
@@ -0,0 +1,93 @@
+include: package:pedantic/analysis_options.yaml
+analyzer:
+# strong-mode:
+# implicit-casts: false
+linter:
+ rules:
+ - always_declare_return_types
+ #- annotate_overrides
+ - avoid_bool_literals_in_conditional_expressions
+ - avoid_classes_with_only_static_members
+ - avoid_empty_else
+ - avoid_function_literals_in_foreach_calls
+ - avoid_init_to_null
+ - avoid_null_checks_in_equality_operators
+ - avoid_relative_lib_imports
+ - avoid_renaming_method_parameters
+ - avoid_return_types_on_setters
+ - avoid_returning_null
+ - avoid_returning_null_for_future
+ - avoid_returning_null_for_void
+ - avoid_returning_this
+ - avoid_shadowing_type_parameters
+ - avoid_single_cascade_in_expression_statements
+ - avoid_types_as_parameter_names
+ - avoid_unused_constructor_parameters
+ - await_only_futures
+ - camel_case_types
+ - cancel_subscriptions
+ - cascade_invocations
+ - comment_references
+ - constant_identifier_names
+ - control_flow_in_finally
+ - directives_ordering
+ - empty_catches
+ - empty_constructor_bodies
+ - empty_statements
+ - file_names
+ - hash_and_equals
+ - implementation_imports
+ - invariant_booleans
+ - iterable_contains_unrelated_type
+ - join_return_with_assignment
+ - library_names
+ - library_prefixes
+ - list_remove_unrelated_type
+ - literal_only_boolean_expressions
+ - no_adjacent_strings_in_list
+ - no_duplicate_case_values
+ - non_constant_identifier_names
+ - null_closures
+ - omit_local_variable_types
+ - only_throw_errors
+ - overridden_fields
+ - package_api_docs
+ - package_names
+ - package_prefixed_library_names
+ - prefer_adjacent_string_concatenation
+ - prefer_collection_literals
+ - prefer_conditional_assignment
+ - prefer_const_constructors
+ - prefer_contains
+ - prefer_equal_for_default_values
+ - prefer_final_fields
+ #- prefer_final_locals
+ - prefer_generic_function_type_aliases
+ - prefer_initializing_formals
+ - prefer_interpolation_to_compose_strings
+ - prefer_is_empty
+ - prefer_is_not_empty
+ - prefer_null_aware_operators
+ #- prefer_single_quotes
+ - prefer_typing_uninitialized_variables
+ - recursive_getters
+ - slash_for_doc_comments
+ - test_types_in_equals
+ - throw_in_finally
+ - type_init_formals
+ - unawaited_futures
+ - unnecessary_await_in_return
+ - unnecessary_brace_in_string_interps
+ - unnecessary_const
+ - unnecessary_getters_setters
+ - unnecessary_lambdas
+ - unnecessary_new
+ - unnecessary_null_aware_assignments
+ - unnecessary_parenthesis
+ - unnecessary_statements
+ - unnecessary_this
+ - unrelated_type_equality_checks
+ - use_function_type_syntax_for_parameters
+ - use_rethrow_when_possible
+ - valid_regexps
+ - void_checks
diff --git a/lib/src/patterns.dart b/lib/src/patterns.dart
index c4d75d4..8829447 100644
--- a/lib/src/patterns.dart
+++ b/lib/src/patterns.dart
@@ -3,17 +3,17 @@
// BSD-style license that can be found in the LICENSE file.
/// Regex that matches a version number at the beginning of a string.
-final START_VERSION = new RegExp(r'^' // Start at beginning.
+final startVersion = RegExp(r'^' // Start at beginning.
r'(\d+).(\d+).(\d+)' // Version number.
r'(-([0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*))?' // Pre-release.
r'(\+([0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*))?'); // Build.
-/// Like [START_VERSION] but matches the entire string.
-final COMPLETE_VERSION = new RegExp(START_VERSION.pattern + r'$');
+/// Like [startVersion] but matches the entire string.
+final completeVersion = RegExp('${startVersion.pattern}\$');
/// Parses a comparison operator ("<", ">", "<=", or ">=") at the beginning of
/// a string.
-final START_COMPARISON = new RegExp(r"^[<>]=?");
+final startComparison = RegExp(r"^[<>]=?");
/// The "compatible with" operator.
-const COMPATIBLE_WITH = "^";
+const compatibleWithChar = "^";
diff --git a/lib/src/version.dart b/lib/src/version.dart
index 19ae962..031af52 100644
--- a/lib/src/version.dart
+++ b/lib/src/version.dart
@@ -16,7 +16,7 @@
/// A parsed semantic version number.
class Version implements VersionConstraint, VersionRange {
/// No released version: i.e. "0.0.0".
- static Version get none => new Version(0, 0, 0);
+ static Version get none => Version(0, 0, 0);
/// Compares [a] and [b] to see which takes priority over the other.
///
@@ -92,12 +92,9 @@
this._text)
: preRelease = preRelease == null ? [] : _splitParts(preRelease),
build = build == null ? [] : _splitParts(build) {
- if (major < 0)
- throw new ArgumentError('Major version must be non-negative.');
- if (minor < 0)
- throw new ArgumentError('Minor version must be non-negative.');
- if (patch < 0)
- throw new ArgumentError('Patch version must be non-negative.');
+ if (major < 0) throw ArgumentError('Major version must be non-negative.');
+ if (minor < 0) throw ArgumentError('Minor version must be non-negative.');
+ if (patch < 0) throw ArgumentError('Patch version must be non-negative.');
}
/// Creates a new [Version] object.
@@ -106,27 +103,27 @@
if (pre != null) text += "-$pre";
if (build != null) text += "+$build";
- return new Version._(major, minor, patch, pre, build, text);
+ return Version._(major, minor, patch, pre, build, text);
}
/// Creates a new [Version] by parsing [text].
factory Version.parse(String text) {
- final match = COMPLETE_VERSION.firstMatch(text);
+ final match = completeVersion.firstMatch(text);
if (match == null) {
- throw new FormatException('Could not parse "$text".');
+ throw FormatException('Could not parse "$text".');
}
try {
- int major = int.parse(match[1]);
- int minor = int.parse(match[2]);
- int patch = int.parse(match[3]);
+ var major = int.parse(match[1]);
+ var minor = int.parse(match[2]);
+ var patch = int.parse(match[3]);
- String preRelease = match[5];
- String build = match[8];
+ var preRelease = match[5];
+ var build = match[8];
- return new Version._(major, minor, patch, preRelease, build, text);
+ return Version._(major, minor, patch, preRelease, build, text);
} on FormatException {
- throw new FormatException('Could not parse "$text".');
+ throw FormatException('Could not parse "$text".');
}
}
@@ -135,7 +132,7 @@
/// This is the highest-numbered stable (non-prerelease) version. If there
/// are no stable versions, it's just the highest-numbered version.
static Version primary(List<Version> versions) {
- var primary;
+ Version primary;
for (var version in versions) {
if (primary == null ||
(!version.isPreRelease && primary.isPreRelease) ||
@@ -195,7 +192,7 @@
/// and patch.
Version get nextMajor {
if (isPreRelease && minor == 0 && patch == 0) {
- return new Version(major, minor, patch);
+ return Version(major, minor, patch);
}
return _incrementMajor();
@@ -208,7 +205,7 @@
/// Otherwise, it increments the minor version and resets the patch.
Version get nextMinor {
if (isPreRelease && patch == 0) {
- return new Version(major, minor, patch);
+ return Version(major, minor, patch);
}
return _incrementMinor();
@@ -220,7 +217,7 @@
/// suffix. Otherwise, it increments the patch version.
Version get nextPatch {
if (isPreRelease) {
- return new Version(major, minor, patch);
+ return Version(major, minor, patch);
}
return _incrementPatch();
@@ -240,14 +237,14 @@
}
/// Returns the first possible pre-release of this version.
- Version get firstPreRelease => new Version(major, minor, patch, pre: "0");
+ Version get firstPreRelease => Version(major, minor, patch, pre: "0");
/// Returns whether this is the first possible pre-release of its version.
bool get isFirstPreRelease => preRelease.length == 1 && preRelease.first == 0;
- Version _incrementMajor() => new Version(major + 1, 0, 0);
- Version _incrementMinor() => new Version(major, minor + 1, 0);
- Version _incrementPatch() => new Version(major, minor, patch + 1);
+ Version _incrementMajor() => Version(major + 1, 0, 0);
+ Version _incrementMinor() => Version(major, minor + 1, 0);
+ Version _incrementPatch() => Version(major, minor, patch + 1);
/// Tests if [other] matches this version exactly.
bool allows(Version other) => this == other;
@@ -264,7 +261,7 @@
if (other is VersionRange) {
if (other.min == this) {
- return new VersionRange(
+ return VersionRange(
min: other.min,
max: other.max,
includeMin: true,
@@ -273,7 +270,7 @@
}
if (other.max == this) {
- return new VersionRange(
+ return VersionRange(
min: other.min,
max: other.max,
includeMin: other.includeMin,
@@ -282,7 +279,7 @@
}
}
- return new VersionConstraint.unionOf([this, other]);
+ return VersionConstraint.unionOf([this, other]);
}
VersionConstraint difference(VersionConstraint other) =>
diff --git a/lib/src/version_constraint.dart b/lib/src/version_constraint.dart
index 67093f7..6dfd396 100644
--- a/lib/src/version_constraint.dart
+++ b/lib/src/version_constraint.dart
@@ -16,7 +16,7 @@
/// version.
abstract class VersionConstraint {
/// A [VersionConstraint] that allows all versions.
- static VersionConstraint any = new VersionRange();
+ static VersionConstraint any = VersionRange();
/// A [VersionConstraint] that allows no versions -- the empty set.
static VersionConstraint empty = const _EmptyVersion();
@@ -47,7 +47,7 @@
factory VersionConstraint.parse(String text) {
var originalText = text;
- skipWhitespace() {
+ void skipWhitespace() {
text = text.trim();
}
@@ -58,16 +58,16 @@
// Try to parse and consume a version number.
Version matchVersion() {
- var version = START_VERSION.firstMatch(text);
+ var version = startVersion.firstMatch(text);
if (version == null) return null;
text = text.substring(version.end);
- return new Version.parse(version[0]);
+ return Version.parse(version[0]);
}
// Try to parse and consume a comparison operator followed by a version.
VersionRange matchComparison() {
- var comparison = START_COMPARISON.firstMatch(text);
+ var comparison = startComparison.firstMatch(text);
if (comparison == null) return null;
var op = comparison[0];
@@ -76,45 +76,45 @@
var version = matchVersion();
if (version == null) {
- throw new FormatException('Expected version number after "$op" in '
+ throw FormatException('Expected version number after "$op" in '
'"$originalText", got "$text".');
}
switch (op) {
case '<=':
- return new VersionRange(max: version, includeMax: true);
+ return VersionRange(max: version, includeMax: true);
case '<':
- return new VersionRange(
+ return VersionRange(
max: version,
includeMax: false,
alwaysIncludeMaxPreRelease: true);
case '>=':
- return new VersionRange(min: version, includeMin: true);
+ return VersionRange(min: version, includeMin: true);
case '>':
- return new VersionRange(min: version, includeMin: false);
+ return VersionRange(min: version, includeMin: false);
}
- throw "Unreachable.";
+ throw FallThroughError();
}
// Try to parse the "^" operator followed by a version.
- matchCompatibleWith() {
- if (!text.startsWith(COMPATIBLE_WITH)) return null;
+ VersionConstraint matchCompatibleWith() {
+ if (!text.startsWith(compatibleWithChar)) return null;
- text = text.substring(COMPATIBLE_WITH.length);
+ text = text.substring(compatibleWithChar.length);
skipWhitespace();
var version = matchVersion();
if (version == null) {
- throw new FormatException('Expected version number after '
- '"$COMPATIBLE_WITH" in "$originalText", got "$text".');
+ throw FormatException('Expected version number after '
+ '"$compatibleWithChar" in "$originalText", got "$text".');
}
if (text.isNotEmpty) {
- throw new FormatException('Cannot include other constraints with '
- '"$COMPATIBLE_WITH" constraint in "$originalText".');
+ throw FormatException('Cannot include other constraints with '
+ '"$compatibleWithChar" constraint in "$originalText".');
}
- return new VersionConstraint.compatibleWith(version);
+ return VersionConstraint.compatibleWith(version);
}
var compatibleWith = matchCompatibleWith();
@@ -125,14 +125,14 @@
Version max;
var includeMax = false;
- while (true) {
+ for (;;) {
skipWhitespace();
if (text.isEmpty) break;
var newRange = matchVersion() ?? matchComparison();
if (newRange == null) {
- throw new FormatException('Could not parse version "$originalText". '
+ throw FormatException('Could not parse version "$originalText". '
'Unknown text at "$text".');
}
@@ -156,7 +156,7 @@
}
if (min == null && max == null) {
- throw new FormatException('Cannot parse an empty string.');
+ throw const FormatException('Cannot parse an empty string.');
}
if (min != null && max != null) {
@@ -167,7 +167,7 @@
}
}
- return new VersionRange(
+ return VersionRange(
min: min, includeMin: includeMin, max: max, includeMax: includeMax);
}
@@ -178,7 +178,7 @@
/// are greater than or equal to [version], but less than the next breaking
/// version ([Version.nextBreaking]) of [version].
factory VersionConstraint.compatibleWith(Version version) =>
- new CompatibleWithVersionRange(version);
+ CompatibleWithVersionRange(version);
/// Creates a new version constraint that is the intersection of
/// [constraints].
@@ -188,7 +188,7 @@
/// all versions.
factory VersionConstraint.intersection(
Iterable<VersionConstraint> constraints) {
- var constraint = new VersionRange();
+ var constraint = VersionRange();
for (var other in constraints) {
constraint = constraint.intersect(other);
}
@@ -217,7 +217,7 @@
// filtered out above.
for (var constraint in flattened) {
if (constraint is VersionRange) continue;
- throw new ArgumentError('Unknown VersionConstraint type $constraint.');
+ throw ArgumentError('Unknown VersionConstraint type $constraint.');
}
flattened.sort();
@@ -235,7 +235,7 @@
}
if (merged.length == 1) return merged.single;
- return new VersionUnion.fromRanges(merged);
+ return VersionUnion.fromRanges(merged);
}
/// Returns `true` if this constraint allows no versions.
@@ -259,7 +259,7 @@
/// this and [other].
VersionConstraint intersect(VersionConstraint other);
- /// Returns a [VersionConstraint] that allows [Versions]s allowed by either
+ /// Returns a [VersionConstraint] that allows [Version]s allowed by either
/// this or [other].
VersionConstraint union(VersionConstraint other);
@@ -272,12 +272,20 @@
const _EmptyVersion();
bool get isEmpty => true;
+
bool get isAny => false;
+
bool allows(Version other) => false;
+
bool allowsAll(VersionConstraint other) => other.isEmpty;
+
bool allowsAny(VersionConstraint other) => false;
+
VersionConstraint intersect(VersionConstraint other) => this;
+
VersionConstraint union(VersionConstraint other) => other;
+
VersionConstraint difference(VersionConstraint other) => this;
+
String toString() => '<empty>';
}
diff --git a/lib/src/version_range.dart b/lib/src/version_range.dart
index a566891..8ac79da 100644
--- a/lib/src/version_range.dart
+++ b/lib/src/version_range.dart
@@ -60,11 +60,11 @@
factory VersionRange(
{Version min,
Version max,
- bool includeMin: false,
- bool includeMax: false,
- bool alwaysIncludeMaxPreRelease: false}) {
+ bool includeMin = false,
+ bool includeMax = false,
+ bool alwaysIncludeMaxPreRelease = false}) {
if (min != null && max != null && min > max) {
- throw new ArgumentError(
+ throw ArgumentError(
'Minimum version ("$min") must be less than maximum ("$max").');
}
@@ -79,7 +79,7 @@
max = max.firstPreRelease;
}
- return new VersionRange._(min, max, includeMin, includeMax);
+ return VersionRange._(min, max, includeMin, includeMax);
}
VersionRange._(this.min, this.max, this.includeMin, this.includeMax);
@@ -123,14 +123,14 @@
if (other is Version) return allows(other);
if (other is VersionUnion) {
- return other.ranges.every((constraint) => allowsAll(constraint));
+ return other.ranges.every(allowsAll);
}
if (other is VersionRange) {
return !allowsLower(other, this) && !allowsHigher(other, this);
}
- throw new ArgumentError('Unknown VersionConstraint type $other.');
+ throw ArgumentError('Unknown VersionConstraint type $other.');
}
bool allowsAny(VersionConstraint other) {
@@ -138,14 +138,14 @@
if (other is Version) return allows(other);
if (other is VersionUnion) {
- return other.ranges.any((constraint) => allowsAny(constraint));
+ return other.ranges.any(allowsAny);
}
if (other is VersionRange) {
return !strictlyLower(other, this) && !strictlyHigher(other, this);
}
- throw new ArgumentError('Unknown VersionConstraint type $other.');
+ throw ArgumentError('Unknown VersionConstraint type $other.');
}
VersionConstraint intersect(VersionConstraint other) {
@@ -167,8 +167,8 @@
intersectIncludeMin = other.includeMin;
} else {
if (strictlyLower(other, this)) return VersionConstraint.empty;
- intersectMin = this.min;
- intersectIncludeMin = this.includeMin;
+ intersectMin = min;
+ intersectIncludeMin = includeMin;
}
Version intersectMax;
@@ -177,13 +177,13 @@
intersectMax = other.max;
intersectIncludeMax = other.includeMax;
} else {
- intersectMax = this.max;
- intersectIncludeMax = this.includeMax;
+ intersectMax = max;
+ intersectIncludeMax = includeMax;
}
if (intersectMin == null && intersectMax == null) {
// Open range.
- return new VersionRange();
+ return VersionRange();
}
// If the range is just a single version.
@@ -195,7 +195,7 @@
}
// If we got here, there is an actual range.
- return new VersionRange(
+ return VersionRange(
min: intersectMin,
max: intersectMax,
includeMin: intersectIncludeMin,
@@ -203,7 +203,7 @@
alwaysIncludeMaxPreRelease: true);
}
- throw new ArgumentError('Unknown VersionConstraint type $other.');
+ throw ArgumentError('Unknown VersionConstraint type $other.');
}
VersionConstraint union(VersionConstraint other) {
@@ -211,24 +211,24 @@
if (allows(other)) return this;
if (other == min) {
- return new VersionRange(
- min: this.min,
- max: this.max,
+ return VersionRange(
+ min: min,
+ max: max,
includeMin: true,
- includeMax: this.includeMax,
+ includeMax: includeMax,
alwaysIncludeMaxPreRelease: true);
}
if (other == max) {
- return new VersionRange(
- min: this.min,
- max: this.max,
- includeMin: this.includeMin,
+ return VersionRange(
+ min: min,
+ max: max,
+ includeMin: includeMin,
includeMax: true,
alwaysIncludeMaxPreRelease: true);
}
- return new VersionConstraint.unionOf([this, other]);
+ return VersionConstraint.unionOf([this, other]);
}
if (other is VersionRange) {
@@ -237,14 +237,14 @@
var edgesTouch = (max == other.min && (includeMax || other.includeMin)) ||
(min == other.max && (includeMin || other.includeMax));
if (!edgesTouch && !allowsAny(other)) {
- return new VersionConstraint.unionOf([this, other]);
+ return VersionConstraint.unionOf([this, other]);
}
Version unionMin;
bool unionIncludeMin;
if (allowsLower(this, other)) {
- unionMin = this.min;
- unionIncludeMin = this.includeMin;
+ unionMin = min;
+ unionIncludeMin = includeMin;
} else {
unionMin = other.min;
unionIncludeMin = other.includeMin;
@@ -253,14 +253,14 @@
Version unionMax;
bool unionIncludeMax;
if (allowsHigher(this, other)) {
- unionMax = this.max;
- unionIncludeMax = this.includeMax;
+ unionMax = max;
+ unionIncludeMax = includeMax;
} else {
unionMax = other.max;
unionIncludeMax = other.includeMax;
}
- return new VersionRange(
+ return VersionRange(
min: unionMin,
max: unionMax,
includeMin: unionIncludeMin,
@@ -268,7 +268,7 @@
alwaysIncludeMaxPreRelease: true);
}
- return new VersionConstraint.unionOf([this, other]);
+ return VersionConstraint.unionOf([this, other]);
}
VersionConstraint difference(VersionConstraint other) {
@@ -279,7 +279,7 @@
if (other == min) {
if (!includeMin) return this;
- return new VersionRange(
+ return VersionRange(
min: min,
max: max,
includeMin: false,
@@ -289,7 +289,7 @@
if (other == max) {
if (!includeMax) return this;
- return new VersionRange(
+ return VersionRange(
min: min,
max: max,
includeMin: includeMin,
@@ -297,14 +297,14 @@
alwaysIncludeMaxPreRelease: true);
}
- return new VersionUnion.fromRanges([
- new VersionRange(
+ return VersionUnion.fromRanges([
+ VersionRange(
min: min,
max: other,
includeMin: includeMin,
includeMax: false,
alwaysIncludeMaxPreRelease: true),
- new VersionRange(
+ VersionRange(
min: other,
max: max,
includeMin: false,
@@ -322,7 +322,7 @@
assert(min != null);
before = min;
} else {
- before = new VersionRange(
+ before = VersionRange(
min: min,
max: other.min,
includeMin: includeMin,
@@ -338,7 +338,7 @@
assert(max != null);
after = max;
} else {
- after = new VersionRange(
+ after = VersionRange(
min: other.max,
max: max,
includeMin: !other.includeMax,
@@ -349,7 +349,7 @@
if (before == null && after == null) return VersionConstraint.empty;
if (before == null) return after;
if (after == null) return before;
- return new VersionUnion.fromRanges([before, after]);
+ return VersionUnion.fromRanges([before, after]);
} else if (other is VersionUnion) {
var ranges = <VersionRange>[];
var current = this;
@@ -377,10 +377,10 @@
}
if (ranges.isEmpty) return current;
- return new VersionUnion.fromRanges(ranges..add(current));
+ return VersionUnion.fromRanges(ranges..add(current));
}
- throw new ArgumentError('Unknown VersionConstraint type $other.');
+ throw ArgumentError('Unknown VersionConstraint type $other.');
}
int compareTo(VersionRange other) {
@@ -398,7 +398,7 @@
return _compareMax(other);
}
- /// Compares the maximum values of [this] and [other].
+ /// Compares the maximum values of `this` and [other].
int _compareMax(VersionRange other) {
if (max == null) {
if (other.max == null) return 0;
@@ -414,18 +414,16 @@
}
String toString() {
- var buffer = new StringBuffer();
+ var buffer = StringBuffer();
if (min != null) {
- buffer.write(includeMin ? '>=' : '>');
- buffer.write(min);
+ buffer..write(includeMin ? '>=' : '>')..write(min);
}
if (max != null) {
if (min != null) buffer.write(' ');
if (includeMax) {
- buffer.write('<=');
- buffer.write(max);
+ buffer..write('<=')..write(max);
} else {
buffer.write('<');
if (max.isFirstPreRelease) {
diff --git a/lib/src/version_union.dart b/lib/src/version_union.dart
index 9324d3f..b774163 100644
--- a/lib/src/version_union.dart
+++ b/lib/src/version_union.dart
@@ -113,7 +113,7 @@
if (newRanges.isEmpty) return VersionConstraint.empty;
if (newRanges.length == 1) return newRanges.single;
- return new VersionUnion.fromRanges(newRanges);
+ return VersionUnion.fromRanges(newRanges);
}
VersionConstraint difference(VersionConstraint other) {
@@ -125,7 +125,7 @@
theirRanges.moveNext();
var current = ourRanges.current;
- theirNextRange() {
+ bool theirNextRange() {
if (theirRanges.moveNext()) return true;
// If there are no more of their ranges, none of the rest of our ranges
@@ -137,14 +137,14 @@
return false;
}
- ourNextRange({bool includeCurrent: true}) {
+ bool ourNextRange({bool includeCurrent = true}) {
if (includeCurrent) newRanges.add(current);
if (!ourRanges.moveNext()) return false;
current = ourRanges.current;
return true;
}
- while (true) {
+ for (;;) {
// If the current ranges are disjoint, move the lowest one forward.
if (strictlyLower(theirRanges.current, current)) {
if (!theirNextRange()) break;
@@ -187,7 +187,7 @@
if (newRanges.isEmpty) return VersionConstraint.empty;
if (newRanges.length == 1) return newRanges.single;
- return new VersionUnion.fromRanges(newRanges);
+ return VersionUnion.fromRanges(newRanges);
}
/// Returns [constraint] as a list of ranges.
@@ -197,11 +197,11 @@
if (constraint.isEmpty) return [];
if (constraint is VersionUnion) return constraint.ranges;
if (constraint is VersionRange) return [constraint];
- throw new ArgumentError('Unknown VersionConstraint type $constraint.');
+ throw ArgumentError('Unknown VersionConstraint type $constraint.');
}
VersionConstraint union(VersionConstraint other) =>
- new VersionConstraint.unionOf([this, other]);
+ VersionConstraint.unionOf([this, other]);
bool operator ==(other) {
if (other is! VersionUnion) return false;
diff --git a/pubspec.yaml b/pubspec.yaml
index 56fa52b..b92d2f6 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,17 +1,17 @@
name: pub_semver
-version: 1.4.2
+version: 1.4.3-dev
-description: >
+description: >-
Versions and version constraints implementing pub's versioning policy. This
is very similar to vanilla semver, with a few corner cases.
author: Dart Team <misc@dartlang.org>
homepage: http://github.com/dart-lang/pub_semver
environment:
- sdk: '>=1.0.0 <3.0.0'
+ sdk: '>=2.0.0 <3.0.0'
dependencies:
- collection: '>=0.9.0 <2.0.0'
+ collection: ^1.0.0
dev_dependencies:
- test: '>=0.12.0 <2.0.0'
+ test: ^1.0.0
diff --git a/test/utils.dart b/test/utils.dart
index 8ecd8f5..a0fd684 100644
--- a/test/utils.dart
+++ b/test/utils.dart
@@ -7,24 +7,24 @@
import 'package:pub_semver/pub_semver.dart';
/// Some stock example versions to use in tests.
-final v003 = new Version.parse('0.0.3');
-final v010 = new Version.parse('0.1.0');
-final v072 = new Version.parse('0.7.2');
-final v080 = new Version.parse('0.8.0');
-final v114 = new Version.parse('1.1.4');
-final v123 = new Version.parse('1.2.3');
-final v124 = new Version.parse('1.2.4');
-final v130 = new Version.parse('1.3.0');
-final v140 = new Version.parse('1.4.0');
-final v200 = new Version.parse('2.0.0');
-final v201 = new Version.parse('2.0.1');
-final v234 = new Version.parse('2.3.4');
-final v250 = new Version.parse('2.5.0');
-final v300 = new Version.parse('3.0.0');
+final v003 = Version.parse('0.0.3');
+final v010 = Version.parse('0.1.0');
+final v072 = Version.parse('0.7.2');
+final v080 = Version.parse('0.8.0');
+final v114 = Version.parse('1.1.4');
+final v123 = Version.parse('1.2.3');
+final v124 = Version.parse('1.2.4');
+final v130 = Version.parse('1.3.0');
+final v140 = Version.parse('1.4.0');
+final v200 = Version.parse('2.0.0');
+final v201 = Version.parse('2.0.1');
+final v234 = Version.parse('2.3.4');
+final v250 = Version.parse('2.5.0');
+final v300 = Version.parse('3.0.0');
/// A range that allows pre-release versions of its max version.
final includeMaxPreReleaseRange =
- new VersionRange(max: v200, alwaysIncludeMaxPreRelease: true);
+ VersionRange(max: v200, alwaysIncludeMaxPreRelease: true);
/// A [Matcher] that tests if a [VersionConstraint] allows or does not allow a
/// given list of [Version]s.
@@ -84,7 +84,7 @@
Version v7,
Version v8]) {
var versions = _makeVersionList(v1, v2, v3, v4, v5, v6, v7, v8);
- return new _VersionConstraintMatcher(versions, true);
+ return _VersionConstraintMatcher(versions, true);
}
/// Gets a [Matcher] that validates that a [VersionConstraint] allows none of
@@ -98,7 +98,7 @@
Version v7,
Version v8]) {
var versions = _makeVersionList(v1, v2, v3, v4, v5, v6, v7, v8);
- return new _VersionConstraintMatcher(versions, false);
+ return _VersionConstraintMatcher(versions, false);
}
List<Version> _makeVersionList(Version v1,
diff --git a/test/version_constraint_test.dart b/test/version_constraint_test.dart
index bf3a018..1e48391 100644
--- a/test/version_constraint_test.dart
+++ b/test/version_constraint_test.dart
@@ -8,13 +8,13 @@
import 'utils.dart';
-main() {
+void main() {
test('any', () {
expect(VersionConstraint.any.isAny, isTrue);
expect(
VersionConstraint.any,
- allows(new Version.parse('0.0.0-blah'), new Version.parse('1.2.3'),
- new Version.parse('12345.678.90')));
+ allows(Version.parse('0.0.0-blah'), Version.parse('1.2.3'),
+ Version.parse('12345.678.90')));
});
test('empty', () {
@@ -22,141 +22,132 @@
expect(VersionConstraint.empty.isAny, isFalse);
expect(
VersionConstraint.empty,
- doesNotAllow(new Version.parse('0.0.0-blah'),
- new Version.parse('1.2.3'), new Version.parse('12345.678.90')));
+ doesNotAllow(Version.parse('0.0.0-blah'), Version.parse('1.2.3'),
+ Version.parse('12345.678.90')));
});
group('parse()', () {
test('parses an exact version', () {
- var constraint = new VersionConstraint.parse('1.2.3-alpha');
+ var constraint = VersionConstraint.parse('1.2.3-alpha');
expect(constraint is Version, isTrue);
- expect(constraint, equals(new Version(1, 2, 3, pre: 'alpha')));
+ expect(constraint, equals(Version(1, 2, 3, pre: 'alpha')));
});
test('parses "any"', () {
- var constraint = new VersionConstraint.parse('any');
+ var constraint = VersionConstraint.parse('any');
expect(constraint is VersionConstraint, isTrue);
expect(
constraint,
- allows(new Version.parse('0.0.0'), new Version.parse('1.2.3'),
- new Version.parse('12345.678.90')));
+ allows(Version.parse('0.0.0'), Version.parse('1.2.3'),
+ Version.parse('12345.678.90')));
});
test('parses a ">" minimum version', () {
- var constraint = new VersionConstraint.parse('>1.2.3');
+ var constraint = VersionConstraint.parse('>1.2.3');
expect(constraint,
- allows(new Version.parse('1.2.3+foo'), new Version.parse('1.2.4')));
+ allows(Version.parse('1.2.3+foo'), Version.parse('1.2.4')));
expect(
constraint,
- doesNotAllow(new Version.parse('1.2.1'),
- new Version.parse('1.2.3-build'), new Version.parse('1.2.3')));
+ doesNotAllow(Version.parse('1.2.1'), Version.parse('1.2.3-build'),
+ Version.parse('1.2.3')));
});
test('parses a ">=" minimum version', () {
- var constraint = new VersionConstraint.parse('>=1.2.3');
+ var constraint = VersionConstraint.parse('>=1.2.3');
expect(
constraint,
- allows(new Version.parse('1.2.3'), new Version.parse('1.2.3+foo'),
- new Version.parse('1.2.4')));
- expect(
- constraint,
- doesNotAllow(
- new Version.parse('1.2.1'), new Version.parse('1.2.3-build')));
+ allows(Version.parse('1.2.3'), Version.parse('1.2.3+foo'),
+ Version.parse('1.2.4')));
+ expect(constraint,
+ doesNotAllow(Version.parse('1.2.1'), Version.parse('1.2.3-build')));
});
test('parses a "<" maximum version', () {
- var constraint = new VersionConstraint.parse('<1.2.3');
+ var constraint = VersionConstraint.parse('<1.2.3');
expect(constraint,
- allows(new Version.parse('1.2.1'), new Version.parse('1.2.2+foo')));
+ allows(Version.parse('1.2.1'), Version.parse('1.2.2+foo')));
expect(
constraint,
- doesNotAllow(new Version.parse('1.2.3'),
- new Version.parse('1.2.3+foo'), new Version.parse('1.2.4')));
+ doesNotAllow(Version.parse('1.2.3'), Version.parse('1.2.3+foo'),
+ Version.parse('1.2.4')));
});
test('parses a "<=" maximum version', () {
- var constraint = new VersionConstraint.parse('<=1.2.3');
+ var constraint = VersionConstraint.parse('<=1.2.3');
expect(
constraint,
- allows(new Version.parse('1.2.1'), new Version.parse('1.2.3-build'),
- new Version.parse('1.2.3')));
- expect(
- constraint,
- doesNotAllow(
- new Version.parse('1.2.3+foo'), new Version.parse('1.2.4')));
+ allows(Version.parse('1.2.1'), Version.parse('1.2.3-build'),
+ Version.parse('1.2.3')));
+ expect(constraint,
+ doesNotAllow(Version.parse('1.2.3+foo'), Version.parse('1.2.4')));
});
test('parses a series of space-separated constraints', () {
- var constraint = new VersionConstraint.parse('>1.0.0 >=1.2.3 <1.3.0');
+ var constraint = VersionConstraint.parse('>1.0.0 >=1.2.3 <1.3.0');
- expect(constraint,
- allows(new Version.parse('1.2.3'), new Version.parse('1.2.5')));
+ expect(
+ constraint, allows(Version.parse('1.2.3'), Version.parse('1.2.5')));
expect(
constraint,
- doesNotAllow(new Version.parse('1.2.3-pre'),
- new Version.parse('1.3.0'), new Version.parse('3.4.5')));
+ doesNotAllow(Version.parse('1.2.3-pre'), Version.parse('1.3.0'),
+ Version.parse('3.4.5')));
});
test('parses a pre-release-only constraint', () {
- var constraint = new VersionConstraint.parse('>=1.0.0-dev.2 <1.0.0');
- expect(
- constraint,
- allows(new Version.parse('1.0.0-dev.2'),
- new Version.parse('1.0.0-dev.3')));
- expect(
- constraint,
- doesNotAllow(
- new Version.parse('1.0.0-dev.1'), new Version.parse('1.0.0')));
+ var constraint = VersionConstraint.parse('>=1.0.0-dev.2 <1.0.0');
+ expect(constraint,
+ allows(Version.parse('1.0.0-dev.2'), Version.parse('1.0.0-dev.3')));
+ expect(constraint,
+ doesNotAllow(Version.parse('1.0.0-dev.1'), Version.parse('1.0.0')));
});
test('ignores whitespace around comparison operators', () {
- var constraint = new VersionConstraint.parse(' >1.0.0>=1.2.3 < 1.3.0');
+ var constraint = VersionConstraint.parse(' >1.0.0>=1.2.3 < 1.3.0');
- expect(constraint,
- allows(new Version.parse('1.2.3'), new Version.parse('1.2.5')));
+ expect(
+ constraint, allows(Version.parse('1.2.3'), Version.parse('1.2.5')));
expect(
constraint,
- doesNotAllow(new Version.parse('1.2.3-pre'),
- new Version.parse('1.3.0'), new Version.parse('3.4.5')));
+ doesNotAllow(Version.parse('1.2.3-pre'), Version.parse('1.3.0'),
+ Version.parse('3.4.5')));
});
test('does not allow "any" to be mixed with other constraints', () {
- expect(() => new VersionConstraint.parse('any 1.0.0'),
- throwsFormatException);
+ expect(() => VersionConstraint.parse('any 1.0.0'), throwsFormatException);
});
test('parses a "^" version', () {
- expect(new VersionConstraint.parse('^0.0.3'),
- equals(new VersionConstraint.compatibleWith(v003)));
+ expect(VersionConstraint.parse('^0.0.3'),
+ equals(VersionConstraint.compatibleWith(v003)));
- expect(new VersionConstraint.parse('^0.7.2'),
- equals(new VersionConstraint.compatibleWith(v072)));
+ expect(VersionConstraint.parse('^0.7.2'),
+ equals(VersionConstraint.compatibleWith(v072)));
- expect(new VersionConstraint.parse('^1.2.3'),
- equals(new VersionConstraint.compatibleWith(v123)));
+ expect(VersionConstraint.parse('^1.2.3'),
+ equals(VersionConstraint.compatibleWith(v123)));
- var min = new Version.parse('0.7.2-pre+1');
- expect(new VersionConstraint.parse('^0.7.2-pre+1'),
- equals(new VersionConstraint.compatibleWith(min)));
+ var min = Version.parse('0.7.2-pre+1');
+ expect(VersionConstraint.parse('^0.7.2-pre+1'),
+ equals(VersionConstraint.compatibleWith(min)));
});
test('does not allow "^" to be mixed with other constraints', () {
- expect(() => new VersionConstraint.parse('>=1.2.3 ^1.0.0'),
+ expect(() => VersionConstraint.parse('>=1.2.3 ^1.0.0'),
throwsFormatException);
- expect(() => new VersionConstraint.parse('^1.0.0 <1.2.3'),
+ expect(() => VersionConstraint.parse('^1.0.0 <1.2.3'),
throwsFormatException);
});
test('ignores whitespace around "^"', () {
- var constraint = new VersionConstraint.parse(' ^ 1.2.3 ');
+ var constraint = VersionConstraint.parse(' ^ 1.2.3 ');
- expect(constraint, equals(new VersionConstraint.compatibleWith(v123)));
+ expect(constraint, equals(VersionConstraint.compatibleWith(v123)));
});
test('throws FormatException on a bad string', () {
@@ -172,23 +163,23 @@
];
for (var text in bad) {
- expect(() => new VersionConstraint.parse(text), throwsFormatException);
+ expect(() => VersionConstraint.parse(text), throwsFormatException);
}
});
});
group('compatibleWith()', () {
test('returns the range of compatible versions', () {
- var constraint = new VersionConstraint.compatibleWith(v072);
+ var constraint = VersionConstraint.compatibleWith(v072);
expect(
constraint,
- equals(new VersionRange(
+ equals(VersionRange(
min: v072, includeMin: true, max: v072.nextBreaking)));
});
test('toString() uses "^"', () {
- var constraint = new VersionConstraint.compatibleWith(v072);
+ var constraint = VersionConstraint.compatibleWith(v072);
expect(constraint.toString(), equals('^0.7.2'));
});
diff --git a/test/version_range_test.dart b/test/version_range_test.dart
index a24faae..cfd66d9 100644
--- a/test/version_range_test.dart
+++ b/test/version_range_test.dart
@@ -8,10 +8,10 @@
import 'utils.dart';
-main() {
+void main() {
group('constructor', () {
test('takes a min and max', () {
- var range = new VersionRange(min: v123, max: v124);
+ var range = VersionRange(min: v123, max: v124);
expect(range.isAny, isFalse);
expect(range.min, equals(v123));
expect(range.max, equals(v124.firstPreRelease));
@@ -19,184 +19,175 @@
group("doesn't make the max a pre-release if", () {
test("it's already a pre-release", () {
- expect(new VersionRange(max: new Version.parse("1.2.4-pre")).max,
- equals(new Version.parse("1.2.4-pre")));
+ expect(VersionRange(max: Version.parse("1.2.4-pre")).max,
+ equals(Version.parse("1.2.4-pre")));
});
test("includeMax is true", () {
- expect(new VersionRange(max: v124, includeMax: true).max, equals(v124));
+ expect(VersionRange(max: v124, includeMax: true).max, equals(v124));
});
test("min is a prerelease of max", () {
- expect(
- new VersionRange(min: new Version.parse("1.2.4-pre"), max: v124)
- .max,
+ expect(VersionRange(min: Version.parse("1.2.4-pre"), max: v124).max,
equals(v124));
});
test("max has a build identifier", () {
- expect(new VersionRange(max: new Version.parse("1.2.4+1")).max,
- equals(new Version.parse("1.2.4+1")));
+ expect(VersionRange(max: Version.parse("1.2.4+1")).max,
+ equals(Version.parse("1.2.4+1")));
});
});
test('allows omitting max', () {
- var range = new VersionRange(min: v123);
+ var range = 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();
+ var range = VersionRange();
expect(range.isAny, isTrue);
expect(range.min, isNull);
expect(range.max, isNull);
});
test('takes includeMin', () {
- var range = new VersionRange(min: v123, includeMin: true);
+ var range = VersionRange(min: v123, includeMin: true);
expect(range.includeMin, isTrue);
});
test('includeMin defaults to false if omitted', () {
- var range = new VersionRange(min: v123);
+ var range = VersionRange(min: v123);
expect(range.includeMin, isFalse);
});
test('takes includeMax', () {
- var range = new VersionRange(max: v123, includeMax: true);
+ var range = VersionRange(max: v123, includeMax: true);
expect(range.includeMax, isTrue);
});
test('includeMax defaults to false if omitted', () {
- var range = new VersionRange(max: v123);
+ var range = VersionRange(max: v123);
expect(range.includeMax, isFalse);
});
test('throws if min > max', () {
- expect(() => new VersionRange(min: v124, max: v123), throwsArgumentError);
+ expect(() => VersionRange(min: v124, max: v123), throwsArgumentError);
});
});
group('allows()', () {
test('version must be greater than min', () {
- var range = new VersionRange(min: v123);
+ var range = 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')));
+ expect(range, allows(Version.parse('1.3.3'), Version.parse('2.3.3')));
+ expect(
+ range, doesNotAllow(Version.parse('1.2.2'), Version.parse('1.2.3')));
});
test('version must be min or greater if includeMin', () {
- var range = new VersionRange(min: v123, includeMin: true);
+ var range = 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')));
+ allows(Version.parse('1.2.3'), Version.parse('1.3.3'),
+ Version.parse('2.3.3')));
+ expect(range, doesNotAllow(Version.parse('1.2.2')));
});
test('pre-release versions of inclusive min are excluded', () {
- var range = new VersionRange(min: v123, includeMin: true);
+ var range = 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')));
+ expect(range, allows(Version.parse('1.2.4-dev')));
+ expect(range, doesNotAllow(Version.parse('1.2.3-dev')));
});
test('version must be less than max', () {
- var range = new VersionRange(max: v234);
+ var range = 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')));
+ expect(range, allows(Version.parse('2.3.3')));
+ expect(
+ range, doesNotAllow(Version.parse('2.3.4'), Version.parse('2.4.3')));
});
test('pre-release versions of non-pre-release max are excluded', () {
- var range = new VersionRange(max: v234);
+ var range = 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')));
+ expect(range, allows(Version.parse('2.3.3')));
+ expect(range,
+ doesNotAllow(Version.parse('2.3.4-dev'), Version.parse('2.3.4')));
});
test(
'pre-release versions of non-pre-release max are included if min is a '
'pre-release of the same version', () {
- var range =
- new VersionRange(min: new Version.parse('2.3.4-dev.0'), max: v234);
+ var range = VersionRange(min: Version.parse('2.3.4-dev.0'), max: v234);
- expect(range, allows(new Version.parse('2.3.4-dev.1')));
+ expect(range, allows(Version.parse('2.3.4-dev.1')));
expect(
range,
- doesNotAllow(new Version.parse('2.3.3'),
- new Version.parse('2.3.4-dev'), new Version.parse('2.3.4')));
+ doesNotAllow(Version.parse('2.3.3'), Version.parse('2.3.4-dev'),
+ 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'));
+ var range = VersionRange(max: Version.parse('2.3.4-dev.2'));
- expect(range, allows(new Version.parse('2.3.4-dev.1')));
+ expect(range, allows(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')));
+ doesNotAllow(
+ Version.parse('2.3.4-dev.2'), 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);
+ var range = VersionRange(min: v123, max: v234, includeMax: true);
expect(
range,
allows(
- new Version.parse('2.3.3'),
- new Version.parse('2.3.4'),
+ Version.parse('2.3.3'),
+ 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')));
+ Version.parse('2.3.4-dev')));
+ expect(range, doesNotAllow(Version.parse('2.4.3')));
});
test('has no min if one was not set', () {
- var range = new VersionRange(max: v123);
+ var range = VersionRange(max: v123);
- expect(range, allows(new Version.parse('0.0.0')));
- expect(range, doesNotAllow(new Version.parse('1.2.3')));
+ expect(range, allows(Version.parse('0.0.0')));
+ expect(range, doesNotAllow(Version.parse('1.2.3')));
});
test('has no max if one was not set', () {
- var range = new VersionRange(min: v123);
+ var range = 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')));
+ expect(range, allows(Version.parse('1.3.3'), Version.parse('999.3.3')));
+ expect(range, doesNotAllow(Version.parse('1.2.3')));
});
test('allows any version if there is no min or max', () {
- var range = new VersionRange();
+ var range = VersionRange();
- expect(range,
- allows(new Version.parse('0.0.0'), new Version.parse('999.99.9')));
+ expect(range, allows(Version.parse('0.0.0'), Version.parse('999.99.9')));
});
test('allows pre-releases of the max with includeMaxPreRelease', () {
- expect(includeMaxPreReleaseRange, allows(new Version.parse('2.0.0-dev')));
+ expect(includeMaxPreReleaseRange, allows(Version.parse('2.0.0-dev')));
});
});
group('allowsAll()', () {
test('allows an empty constraint', () {
expect(
- new VersionRange(min: v123, max: v250)
- .allowsAll(VersionConstraint.empty),
+ VersionRange(min: v123, max: v250).allowsAll(VersionConstraint.empty),
isTrue);
});
test('allows allowed versions', () {
- var range = new VersionRange(min: v123, max: v250, includeMax: true);
+ var range = VersionRange(min: v123, max: v250, includeMax: true);
expect(range.allowsAll(v123), isFalse);
expect(range.allowsAll(v124), isTrue);
expect(range.allowsAll(v250), isTrue);
@@ -204,38 +195,38 @@
});
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);
+ var range = VersionRange(max: v250);
+ expect(range.allowsAll(VersionRange(min: v080, max: v140)), isTrue);
+ expect(range.allowsAll(VersionRange(min: v080, max: v300)), isFalse);
+ expect(range.allowsAll(VersionRange(max: v140)), isTrue);
+ expect(range.allowsAll(VersionRange(max: v300)), isFalse);
expect(range.allowsAll(range), isTrue);
expect(range.allowsAll(VersionConstraint.any), isFalse);
});
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);
+ var range = VersionRange(min: v010);
+ expect(range.allowsAll(VersionRange(min: v080, max: v140)), isTrue);
+ expect(range.allowsAll(VersionRange(min: v003, max: v140)), isFalse);
+ expect(range.allowsAll(VersionRange(min: v080)), isTrue);
+ expect(range.allowsAll(VersionRange(min: v003)), isFalse);
expect(range.allowsAll(range), isTrue);
expect(range.allowsAll(VersionConstraint.any), isFalse);
});
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);
+ var range = VersionRange(min: v010, max: v250);
+ expect(range.allowsAll(VersionRange(min: v080, max: v140)), isTrue);
+ expect(range.allowsAll(VersionRange(min: v080, max: v300)), isFalse);
+ expect(range.allowsAll(VersionRange(min: v003, max: v140)), isFalse);
+ expect(range.allowsAll(VersionRange(min: v080)), isFalse);
+ expect(range.allowsAll(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(
+ var exclusive = VersionRange(min: v010, max: v250);
+ var inclusive = VersionRange(
min: v010, includeMin: true, max: v250, includeMax: true);
expect(inclusive.allowsAll(exclusive), isTrue);
expect(inclusive.allowsAll(inclusive), isTrue);
@@ -244,66 +235,59 @@
});
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)),
+ var range = VersionRange(min: v114, max: v200);
+ expect(range.allowsAll(VersionRange(min: v123, max: v124).union(v140)),
isTrue);
- expect(
- range.allowsAll(new VersionRange(min: v010, max: v124).union(v140)),
+ expect(range.allowsAll(VersionRange(min: v010, max: v124).union(v140)),
isFalse);
- expect(
- range.allowsAll(new VersionRange(min: v123, max: v234).union(v140)),
+ expect(range.allowsAll(VersionRange(min: v123, max: v234).union(v140)),
isFalse);
});
group('pre-release versions', () {
test('of inclusive min are excluded', () {
- var range = new VersionRange(min: v123, includeMin: true);
+ var range = VersionRange(min: v123, includeMin: true);
- expect(
- range.allowsAll(new VersionConstraint.parse('>1.2.4-dev')), isTrue);
- expect(range.allowsAll(new VersionConstraint.parse('>1.2.3-dev')),
- isFalse);
+ expect(range.allowsAll(VersionConstraint.parse('>1.2.4-dev')), isTrue);
+ expect(range.allowsAll(VersionConstraint.parse('>1.2.3-dev')), isFalse);
});
test('of non-pre-release max are excluded', () {
- var range = new VersionRange(max: v234);
+ var range = VersionRange(max: v234);
- expect(range.allowsAll(new VersionConstraint.parse('<2.3.3')), isTrue);
- expect(range.allowsAll(new VersionConstraint.parse('<2.3.4-dev')),
- isFalse);
+ expect(range.allowsAll(VersionConstraint.parse('<2.3.3')), isTrue);
+ expect(range.allowsAll(VersionConstraint.parse('<2.3.4-dev')), isFalse);
});
test('of non-pre-release max are included with includeMaxPreRelease', () {
expect(
includeMaxPreReleaseRange
- .allowsAll(new VersionConstraint.parse('<2.0.0-dev')),
+ .allowsAll(VersionConstraint.parse('<2.0.0-dev')),
isTrue);
});
test(
'of non-pre-release max are included if min is a pre-release of the '
'same version', () {
- var range =
- new VersionRange(min: new Version.parse('2.3.4-dev.0'), max: v234);
+ var range = VersionRange(min: Version.parse('2.3.4-dev.0'), max: v234);
expect(
range.allowsAll(
- new VersionConstraint.parse('>2.3.4-dev.0 <2.3.4-dev.1')),
+ VersionConstraint.parse('>2.3.4-dev.0 <2.3.4-dev.1')),
isTrue);
});
test('of pre-release max are included', () {
- var range = new VersionRange(max: new Version.parse('2.3.4-dev.2'));
+ var range = VersionRange(max: Version.parse('2.3.4-dev.2'));
- expect(range.allowsAll(new VersionConstraint.parse('<2.3.4-dev.1')),
- isTrue);
- expect(range.allowsAll(new VersionConstraint.parse('<2.3.4-dev.2')),
- isTrue);
- expect(range.allowsAll(new VersionConstraint.parse('<=2.3.4-dev.2')),
- isFalse);
- expect(range.allowsAll(new VersionConstraint.parse('<2.3.4-dev.3')),
- isFalse);
+ expect(
+ range.allowsAll(VersionConstraint.parse('<2.3.4-dev.1')), isTrue);
+ expect(
+ range.allowsAll(VersionConstraint.parse('<2.3.4-dev.2')), isTrue);
+ expect(
+ range.allowsAll(VersionConstraint.parse('<=2.3.4-dev.2')), isFalse);
+ expect(
+ range.allowsAll(VersionConstraint.parse('<2.3.4-dev.3')), isFalse);
});
});
});
@@ -311,13 +295,12 @@
group('allowsAny()', () {
test('disallows an empty constraint', () {
expect(
- new VersionRange(min: v123, max: v250)
- .allowsAny(VersionConstraint.empty),
+ VersionRange(min: v123, max: v250).allowsAny(VersionConstraint.empty),
isFalse);
});
test('allows allowed versions', () {
- var range = new VersionRange(min: v123, max: v250, includeMax: true);
+ var range = VersionRange(min: v123, max: v250, includeMax: true);
expect(range.allowsAny(v123), isFalse);
expect(range.allowsAny(v124), isTrue);
expect(range.allowsAny(v250), isTrue);
@@ -325,135 +308,127 @@
});
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);
+ var range = VersionRange(max: v200);
+ expect(range.allowsAny(VersionRange(min: v140, max: v300)), isTrue);
+ expect(range.allowsAny(VersionRange(min: v234, max: v300)), isFalse);
+ expect(range.allowsAny(VersionRange(min: v140)), isTrue);
+ expect(range.allowsAny(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);
+ var range = VersionRange(min: v072);
+ expect(range.allowsAny(VersionRange(min: v003, max: v140)), isTrue);
+ expect(range.allowsAny(VersionRange(min: v003, max: v010)), isFalse);
+ expect(range.allowsAny(VersionRange(max: v080)), isTrue);
+ expect(range.allowsAny(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);
+ var range = VersionRange(min: v072, max: v200);
+ expect(range.allowsAny(VersionRange(min: v003, max: v140)), isTrue);
+ expect(range.allowsAny(VersionRange(min: v140, max: v300)), isTrue);
+ expect(range.allowsAny(VersionRange(min: v003, max: v010)), isFalse);
+ expect(range.allowsAny(VersionRange(min: v234, max: v300)), isFalse);
+ expect(range.allowsAny(VersionRange(max: v010)), isFalse);
+ expect(range.allowsAny(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)),
+ expect(
+ VersionRange(max: v250).allowsAny(VersionRange(min: v250)), isFalse);
+
+ expect(
+ VersionRange(max: v250, includeMax: true)
+ .allowsAny(VersionRange(min: v250)),
isFalse);
expect(
- new VersionRange(max: v250, includeMax: true)
- .allowsAny(new VersionRange(min: v250)),
+ VersionRange(max: v250)
+ .allowsAny(VersionRange(min: v250, includeMin: true)),
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)),
+ VersionRange(max: v250, includeMax: true)
+ .allowsAny(VersionRange(min: v250, includeMin: true)),
isTrue);
- expect(new VersionRange(min: v250).allowsAny(new VersionRange(max: v250)),
+ expect(
+ VersionRange(min: v250).allowsAny(VersionRange(max: v250)), isFalse);
+
+ expect(
+ VersionRange(min: v250, includeMin: true)
+ .allowsAny(VersionRange(max: v250)),
isFalse);
expect(
- new VersionRange(min: v250, includeMin: true)
- .allowsAny(new VersionRange(max: v250)),
+ VersionRange(min: v250)
+ .allowsAny(VersionRange(max: v250, includeMax: true)),
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)),
+ VersionRange(min: v250, includeMin: true)
+ .allowsAny(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)),
+ var range = VersionRange(min: v114, max: v200);
+ expect(range.allowsAny(VersionRange(min: v010, max: v080).union(v140)),
isTrue);
- expect(
- range.allowsAny(new VersionRange(min: v123, max: v234).union(v300)),
+ expect(range.allowsAny(VersionRange(min: v123, max: v234).union(v300)),
isTrue);
- expect(
- range.allowsAny(new VersionRange(min: v234, max: v300).union(v010)),
+ expect(range.allowsAny(VersionRange(min: v234, max: v300).union(v010)),
isFalse);
});
group('pre-release versions', () {
test('of inclusive min are excluded', () {
- var range = new VersionRange(min: v123, includeMin: true);
+ var range = VersionRange(min: v123, includeMin: true);
- expect(
- range.allowsAny(new VersionConstraint.parse('<1.2.4-dev')), isTrue);
- expect(range.allowsAny(new VersionConstraint.parse('<1.2.3-dev')),
- isFalse);
+ expect(range.allowsAny(VersionConstraint.parse('<1.2.4-dev')), isTrue);
+ expect(range.allowsAny(VersionConstraint.parse('<1.2.3-dev')), isFalse);
});
test('of non-pre-release max are excluded', () {
- var range = new VersionRange(max: v234);
+ var range = VersionRange(max: v234);
- expect(range.allowsAny(new VersionConstraint.parse('>2.3.3')), isTrue);
- expect(range.allowsAny(new VersionConstraint.parse('>2.3.4-dev')),
- isFalse);
+ expect(range.allowsAny(VersionConstraint.parse('>2.3.3')), isTrue);
+ expect(range.allowsAny(VersionConstraint.parse('>2.3.4-dev')), isFalse);
});
test('of non-pre-release max are included with includeMaxPreRelease', () {
expect(
includeMaxPreReleaseRange
- .allowsAny(new VersionConstraint.parse('>2.0.0-dev')),
+ .allowsAny(VersionConstraint.parse('>2.0.0-dev')),
isTrue);
});
test(
'of non-pre-release max are included if min is a pre-release of the '
'same version', () {
- var range =
- new VersionRange(min: new Version.parse('2.3.4-dev.0'), max: v234);
+ var range = VersionRange(min: Version.parse('2.3.4-dev.0'), max: v234);
- expect(range.allowsAny(new VersionConstraint.parse('>2.3.4-dev.1')),
- isTrue);
- expect(range.allowsAny(new VersionConstraint.parse('>2.3.4')), isFalse);
+ expect(
+ range.allowsAny(VersionConstraint.parse('>2.3.4-dev.1')), isTrue);
+ expect(range.allowsAny(VersionConstraint.parse('>2.3.4')), isFalse);
- expect(range.allowsAny(new VersionConstraint.parse('<2.3.4-dev.1')),
- isTrue);
- expect(range.allowsAny(new VersionConstraint.parse('<2.3.4-dev')),
- isFalse);
+ expect(
+ range.allowsAny(VersionConstraint.parse('<2.3.4-dev.1')), isTrue);
+ expect(range.allowsAny(VersionConstraint.parse('<2.3.4-dev')), isFalse);
});
test('of pre-release max are included', () {
- var range = new VersionConstraint.parse('<2.3.4-dev.2');
+ var range = VersionConstraint.parse('<2.3.4-dev.2');
- expect(range.allowsAny(new VersionConstraint.parse('>2.3.4-dev.1')),
- isTrue);
- expect(range.allowsAny(new VersionConstraint.parse('>2.3.4-dev.2')),
- isFalse);
- expect(range.allowsAny(new VersionConstraint.parse('>2.3.4-dev.3')),
- isFalse);
+ expect(
+ range.allowsAny(VersionConstraint.parse('>2.3.4-dev.1')), isTrue);
+ expect(
+ range.allowsAny(VersionConstraint.parse('>2.3.4-dev.2')), isFalse);
+ expect(
+ range.allowsAny(VersionConstraint.parse('>2.3.4-dev.3')), isFalse);
});
});
});
@@ -461,78 +436,77 @@
group('intersect()', () {
test('two overlapping ranges', () {
expect(
- new VersionRange(min: v123, max: v250)
- .intersect(new VersionRange(min: v200, max: v300)),
- equals(new VersionRange(min: v200, max: v250)));
+ VersionRange(min: v123, max: v250)
+ .intersect(VersionRange(min: v200, max: v300)),
+ equals(VersionRange(min: v200, max: v250)));
});
test('a non-overlapping range allows no versions', () {
- var a = new VersionRange(min: v114, max: v124);
- var b = new VersionRange(min: v200, max: v250);
+ var a = VersionRange(min: v114, max: v124);
+ var b = 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);
- var b = new VersionRange(min: v124, max: v200);
+ var a = VersionRange(min: v114, max: v124);
+ var b = VersionRange(min: v124, max: v200);
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);
+ var a = VersionRange(min: v114, max: v124, includeMax: true);
+ var b = 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);
+ var open = VersionRange();
+ var a = 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(VersionRange(min: v114, max: v124).intersect(v123), equals(v123));
expect(
- new VersionRange(min: v114, max: v124).intersect(v123), equals(v123));
- expect(new VersionRange(min: v123, max: v124).intersect(v114).isEmpty,
- isTrue);
+ VersionRange(min: v123, max: v124).intersect(v114).isEmpty, isTrue);
});
test("with a range with a pre-release min, returns an empty constraint",
() {
expect(
- new VersionRange(max: v200)
- .intersect(new VersionConstraint.parse(">=2.0.0-dev")),
+ VersionRange(max: v200)
+ .intersect(VersionConstraint.parse(">=2.0.0-dev")),
equals(VersionConstraint.empty));
});
test("with a range with a pre-release max, returns the original", () {
expect(
- new VersionRange(max: v200)
- .intersect(new VersionConstraint.parse("<2.0.0-dev")),
- equals(new VersionRange(max: v200)));
+ VersionRange(max: v200)
+ .intersect(VersionConstraint.parse("<2.0.0-dev")),
+ equals(VersionRange(max: v200)));
});
group("with includeMaxPreRelease", () {
test('preserves includeMaxPreRelease if the max version is included', () {
expect(
includeMaxPreReleaseRange
- .intersect(new VersionConstraint.parse("<1.0.0")),
- equals(new VersionConstraint.parse("<1.0.0")));
+ .intersect(VersionConstraint.parse("<1.0.0")),
+ equals(VersionConstraint.parse("<1.0.0")));
expect(
includeMaxPreReleaseRange
- .intersect(new VersionConstraint.parse("<2.0.0")),
- equals(new VersionConstraint.parse("<2.0.0")));
+ .intersect(VersionConstraint.parse("<2.0.0")),
+ equals(VersionConstraint.parse("<2.0.0")));
expect(includeMaxPreReleaseRange.intersect(includeMaxPreReleaseRange),
equals(includeMaxPreReleaseRange));
expect(
includeMaxPreReleaseRange
- .intersect(new VersionConstraint.parse("<3.0.0")),
+ .intersect(VersionConstraint.parse("<3.0.0")),
equals(includeMaxPreReleaseRange));
expect(
includeMaxPreReleaseRange
- .intersect(new VersionConstraint.parse(">1.1.4")),
- equals(new VersionRange(
+ .intersect(VersionConstraint.parse(">1.1.4")),
+ equals(VersionRange(
min: v114, max: v200, alwaysIncludeMaxPreRelease: true)));
});
@@ -541,8 +515,8 @@
"an intersection", () {
expect(
includeMaxPreReleaseRange
- .intersect(new VersionConstraint.parse(">=2.0.0-dev")),
- equals(new VersionConstraint.parse(">=2.0.0-dev <2.0.0")));
+ .intersect(VersionConstraint.parse(">=2.0.0-dev")),
+ equals(VersionConstraint.parse(">=2.0.0-dev <2.0.0")));
});
test(
@@ -550,142 +524,136 @@
"the narrower constraint", () {
expect(
includeMaxPreReleaseRange
- .intersect(new VersionConstraint.parse("<2.0.0-dev")),
- equals(new VersionConstraint.parse("<2.0.0-dev")));
+ .intersect(VersionConstraint.parse("<2.0.0-dev")),
+ equals(VersionConstraint.parse("<2.0.0-dev")));
});
});
});
group('union()', () {
test("with a version returns the range if it contains the version", () {
- var range = new VersionRange(min: v114, max: v124);
+ var range = 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, alwaysIncludeMaxPreRelease: true)
+ VersionRange(min: v114, max: v124, alwaysIncludeMaxPreRelease: true)
.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)));
+ equals(VersionRange(min: v114, max: v124, includeMax: true)));
+ expect(VersionRange(min: v114, max: v124).union(v114),
+ equals(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(v124);
+ var result = VersionRange(min: v003, max: v114).union(v124);
expect(result, allows(v010));
expect(result, doesNotAllow(v123));
expect(result, allows(v124));
});
test("returns a VersionUnion for a disjoint range", () {
- var result = new VersionRange(min: v003, max: v114)
- .union(new VersionRange(min: v130, max: v200));
+ var result = VersionRange(min: v003, max: v114)
+ .union(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));
+ var result = VersionRange(min: v003, max: v114)
+ .union(VersionRange(min: v114, max: v200));
expect(result, allows(v080));
expect(result, doesNotAllow(v114));
expect(result, allows(v140));
- result = new VersionRange(min: v114, max: v200)
- .union(new VersionRange(min: v003, max: v114));
+ result = VersionRange(min: v114, max: v200)
+ .union(VersionRange(min: v003, max: v114));
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)));
+ var result = VersionRange(min: v003, max: v114)
+ .union(VersionRange(min: v080, max: v200));
+ expect(result, equals(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)));
+ var result = VersionRange(min: v003, max: v114, includeMax: true)
+ .union(VersionRange(min: v114, max: v200));
+ expect(result, equals(VersionRange(min: v003, max: v200)));
- result = new VersionRange(
- min: v003, max: v114, alwaysIncludeMaxPreRelease: true)
- .union(new VersionRange(min: v114, max: v200, includeMin: true));
- expect(result, equals(new VersionRange(min: v003, max: v200)));
+ result =
+ VersionRange(min: v003, max: v114, alwaysIncludeMaxPreRelease: true)
+ .union(VersionRange(min: v114, max: v200, includeMin: true));
+ expect(result, equals(VersionRange(min: v003, max: v200)));
- result = new VersionRange(min: v114, max: v200)
- .union(new VersionRange(min: v003, max: v114, includeMax: true));
- expect(result, equals(new VersionRange(min: v003, max: v200)));
+ result = VersionRange(min: v114, max: v200)
+ .union(VersionRange(min: v003, max: v114, includeMax: true));
+ expect(result, equals(VersionRange(min: v003, max: v200)));
- result = new VersionRange(min: v114, max: v200, includeMin: true).union(
- new VersionRange(
- min: v003, max: v114, alwaysIncludeMaxPreRelease: true));
- expect(result, equals(new VersionRange(min: v003, max: v200)));
+ result = VersionRange(min: v114, max: v200, includeMin: true).union(
+ VersionRange(min: v003, max: v114, alwaysIncludeMaxPreRelease: true));
+ expect(result, equals(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));
+ var result = VersionRange(min: v003, max: v114, includeMin: true)
+ .union(VersionRange(min: v003, max: v114, includeMax: true));
expect(
result,
- equals(new VersionRange(
+ equals(VersionRange(
min: v003, max: v114, includeMin: true, includeMax: true)));
});
test("with a range with a pre-release min, returns a constraint with a gap",
() {
- var result = new VersionRange(max: v200)
- .union(new VersionConstraint.parse(">=2.0.0-dev"));
+ var result =
+ VersionRange(max: v200).union(VersionConstraint.parse(">=2.0.0-dev"));
expect(result, allows(v140));
- expect(result, doesNotAllow(new Version.parse("2.0.0-alpha")));
- expect(result, allows(new Version.parse("2.0.0-dev")));
- expect(result, allows(new Version.parse("2.0.0-dev.1")));
- expect(result, allows(new Version.parse("2.0.0")));
+ expect(result, doesNotAllow(Version.parse("2.0.0-alpha")));
+ expect(result, allows(Version.parse("2.0.0-dev")));
+ expect(result, allows(Version.parse("2.0.0-dev.1")));
+ expect(result, allows(Version.parse("2.0.0")));
});
test("with a range with a pre-release max, returns the larger constraint",
() {
expect(
- new VersionRange(max: v200)
- .union(new VersionConstraint.parse("<2.0.0-dev")),
- equals(new VersionConstraint.parse("<2.0.0-dev")));
+ VersionRange(max: v200).union(VersionConstraint.parse("<2.0.0-dev")),
+ equals(VersionConstraint.parse("<2.0.0-dev")));
});
group("with includeMaxPreRelease", () {
test('adds includeMaxPreRelease if the max version is included', () {
expect(
- includeMaxPreReleaseRange
- .union(new VersionConstraint.parse("<1.0.0")),
+ includeMaxPreReleaseRange.union(VersionConstraint.parse("<1.0.0")),
equals(includeMaxPreReleaseRange));
expect(includeMaxPreReleaseRange.union(includeMaxPreReleaseRange),
equals(includeMaxPreReleaseRange));
expect(
- includeMaxPreReleaseRange
- .union(new VersionConstraint.parse("<2.0.0")),
+ includeMaxPreReleaseRange.union(VersionConstraint.parse("<2.0.0")),
equals(includeMaxPreReleaseRange));
expect(
- includeMaxPreReleaseRange
- .union(new VersionConstraint.parse("<3.0.0")),
- equals(new VersionConstraint.parse("<3.0.0")));
+ includeMaxPreReleaseRange.union(VersionConstraint.parse("<3.0.0")),
+ equals(VersionConstraint.parse("<3.0.0")));
});
test("and a range with a pre-release min, returns any", () {
expect(
includeMaxPreReleaseRange
- .union(new VersionConstraint.parse(">=2.0.0-dev")),
+ .union(VersionConstraint.parse(">=2.0.0-dev")),
equals(VersionConstraint.any));
});
test("and a range with a pre-release max, returns the original", () {
expect(
includeMaxPreReleaseRange
- .union(new VersionConstraint.parse("<2.0.0-dev")),
+ .union(VersionConstraint.parse("<2.0.0-dev")),
equals(includeMaxPreReleaseRange));
});
});
@@ -694,127 +662,124 @@
group('difference()', () {
test("with an empty range returns the original range", () {
expect(
- new VersionRange(min: v003, max: v114)
+ VersionRange(min: v003, max: v114)
.difference(VersionConstraint.empty),
- equals(new VersionRange(min: v003, max: v114)));
+ equals(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)));
+ expect(VersionRange(min: v003, max: v114).difference(v200),
+ equals(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(
+ VersionRange(min: v003, max: v114).difference(v072),
+ equals(VersionConstraint.unionOf([
+ VersionRange(
min: v003, max: v072, alwaysIncludeMaxPreRelease: true),
- new VersionRange(min: v072, max: v114)
+ 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(
+ VersionRange(min: v003, max: v114, includeMax: true).difference(v114),
+ equals(VersionRange(
min: v003, max: v114, alwaysIncludeMaxPreRelease: true)));
});
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)));
+ VersionRange(min: v003, max: v114, includeMin: true).difference(v003),
+ equals(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)));
+ VersionRange(min: v003, max: v114)
+ .difference(VersionRange(min: v123, max: v140)),
+ equals(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)));
+ VersionRange(min: v003, max: v114, includeMax: true)
+ .difference(VersionRange(min: v114, max: v140)),
+ equals(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 VersionConstraint.parse(">=1.1.4-0 <1.3.0")));
+ VersionRange(min: v080, max: v130)
+ .difference(VersionRange(min: v010, max: v114)),
+ equals(VersionConstraint.parse(">=1.1.4-0 <1.3.0")));
expect(
- new VersionRange(min: v080, max: v130)
- .difference(new VersionRange(max: v114)),
- equals(new VersionConstraint.parse(">=1.1.4-0 <1.3.0")));
+ VersionRange(min: v080, max: v130)
+ .difference(VersionRange(max: v114)),
+ equals(VersionConstraint.parse(">=1.1.4-0 <1.3.0")));
expect(
- new VersionRange(min: v080, max: v130).difference(
- new VersionRange(min: v010, max: v114, includeMax: true)),
- equals(new VersionRange(min: v114, max: v130)));
+ VersionRange(min: v080, max: v130)
+ .difference(VersionRange(min: v010, max: v114, includeMax: true)),
+ equals(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)));
+ VersionRange(min: v080, max: v130, includeMin: true)
+ .difference(VersionRange(min: v010, max: v080, includeMax: true)),
+ equals(VersionRange(min: v080, max: v130)));
expect(
- new VersionRange(min: v080, max: v130, includeMax: true)
- .difference(new VersionRange(min: v080, max: v130)),
- equals(new VersionConstraint.parse(">=1.3.0-0 <=1.3.0")));
+ VersionRange(min: v080, max: v130, includeMax: true)
+ .difference(VersionRange(min: v080, max: v130)),
+ equals(VersionConstraint.parse(">=1.3.0-0 <=1.3.0")));
});
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)));
+ VersionRange(min: v080, max: v130)
+ .difference(VersionRange(min: v114, max: v140)),
+ equals(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)));
+ VersionRange(min: v080, max: v130)
+ .difference(VersionRange(min: v114)),
+ equals(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(
+ VersionRange(min: v080, max: v130)
+ .difference(VersionRange(min: v114, max: v140, includeMin: true)),
+ equals(VersionRange(
min: v080, max: v114, alwaysIncludeMaxPreRelease: true)));
expect(
- new VersionRange(min: v080, max: v130, includeMax: true).difference(
- new VersionRange(min: v130, max: v140, includeMin: true)),
- equals(new VersionRange(
+ VersionRange(min: v080, max: v130, includeMax: true)
+ .difference(VersionRange(min: v130, max: v140, includeMin: true)),
+ equals(VersionRange(
min: v080, max: v130, alwaysIncludeMaxPreRelease: true)));
expect(
- new VersionRange(min: v080, max: v130, includeMin: true)
- .difference(new VersionRange(min: v080, max: v130)),
+ VersionRange(min: v080, max: v130, includeMin: true)
+ .difference(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 VersionConstraint.parse(">=1.1.4-0 <1.3.0")
+ VersionRange(min: v003, max: v130)
+ .difference(VersionRange(min: v072, max: v114)),
+ equals(VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v072, includeMax: true),
+ VersionConstraint.parse(">=1.1.4-0 <1.3.0")
])));
});
test("with a totally covering range returns empty", () {
expect(
- new VersionRange(min: v114, max: v200)
- .difference(new VersionRange(min: v072, max: v300)),
+ VersionRange(min: v114, max: v200)
+ .difference(VersionRange(min: v072, max: v300)),
isEmpty);
expect(
- new VersionRange(min: v003, max: v114)
- .difference(new VersionRange(min: v003, max: v114)),
+ VersionRange(min: v003, max: v114)
+ .difference(VersionRange(min: v003, max: v114)),
isEmpty);
expect(
- new VersionRange(
- min: v003, max: v114, includeMin: true, includeMax: true)
- .difference(new VersionRange(
+ VersionRange(min: v003, max: v114, includeMin: true, includeMax: true)
+ .difference(VersionRange(
min: v003, max: v114, includeMin: true, includeMax: true)),
isEmpty);
});
@@ -823,55 +788,54 @@
"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)));
+ VersionRange(min: v114, max: v140)
+ .difference(VersionConstraint.unionOf([v010, v200])),
+ equals(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)
+ VersionRange(min: v114, max: v140).difference(
+ VersionConstraint.unionOf([
+ VersionRange(min: v080, max: v123),
+ VersionRange(min: v130, max: v200)
])),
- equals(new VersionConstraint.parse(">=1.2.3-0 <=1.3.0")));
+ equals(VersionConstraint.parse(">=1.2.3-0 <=1.3.0")));
});
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(
+ VersionRange(min: v114, max: v140)
+ .difference(VersionConstraint.unionOf([v123, v124, v130])),
+ equals(VersionConstraint.unionOf([
+ VersionRange(
min: v114, max: v123, alwaysIncludeMaxPreRelease: true),
- new VersionRange(
+ VersionRange(
min: v123, max: v124, alwaysIncludeMaxPreRelease: true),
- new VersionRange(
+ VersionRange(
min: v124, max: v130, alwaysIncludeMaxPreRelease: true),
- new VersionRange(min: v130, max: v140)
+ VersionRange(min: v130, max: v140)
])));
});
test("with a version union that covers the whole range, returns empty", () {
expect(
- new VersionRange(min: v114, max: v140).difference(
- new VersionConstraint.unionOf(
- [v003, new VersionRange(min: v010)])),
+ VersionRange(min: v114, max: v140).difference(
+ VersionConstraint.unionOf([v003, VersionRange(min: v010)])),
equals(VersionConstraint.empty));
});
test("with a range with a pre-release min, returns the original", () {
expect(
- new VersionRange(max: v200)
- .difference(new VersionConstraint.parse(">=2.0.0-dev")),
- equals(new VersionRange(max: v200)));
+ VersionRange(max: v200)
+ .difference(VersionConstraint.parse(">=2.0.0-dev")),
+ equals(VersionRange(max: v200)));
});
test("with a range with a pre-release max, returns null", () {
expect(
- new VersionRange(max: v200)
- .difference(new VersionConstraint.parse("<2.0.0-dev")),
+ VersionRange(max: v200)
+ .difference(VersionConstraint.parse("<2.0.0-dev")),
equals(VersionConstraint.empty));
});
@@ -881,16 +845,16 @@
() {
expect(
includeMaxPreReleaseRange
- .difference(new VersionConstraint.parse("<1.0.0")),
- equals(new VersionRange(
- min: new Version.parse("1.0.0-0"),
+ .difference(VersionConstraint.parse("<1.0.0")),
+ equals(VersionRange(
+ min: Version.parse("1.0.0-0"),
max: v200,
includeMin: true,
alwaysIncludeMaxPreRelease: true)));
expect(
includeMaxPreReleaseRange
- .difference(new VersionConstraint.parse("<2.0.0")),
- equals(new VersionRange(
+ .difference(VersionConstraint.parse("<2.0.0")),
+ equals(VersionRange(
min: v200.firstPreRelease,
max: v200,
includeMin: true,
@@ -900,22 +864,22 @@
equals(VersionConstraint.empty));
expect(
includeMaxPreReleaseRange
- .difference(new VersionConstraint.parse("<3.0.0")),
+ .difference(VersionConstraint.parse("<3.0.0")),
equals(VersionConstraint.empty));
});
test("with a range with a pre-release min, adjusts the max", () {
expect(
includeMaxPreReleaseRange
- .difference(new VersionConstraint.parse(">=2.0.0-dev")),
- equals(new VersionConstraint.parse("<2.0.0-dev")));
+ .difference(VersionConstraint.parse(">=2.0.0-dev")),
+ equals(VersionConstraint.parse("<2.0.0-dev")));
});
test("with a range with a pre-release max, adjusts the min", () {
expect(
includeMaxPreReleaseRange
- .difference(new VersionConstraint.parse("<2.0.0-dev")),
- equals(new VersionConstraint.parse(">=2.0.0-dev <2.0.0")));
+ .difference(VersionConstraint.parse("<2.0.0-dev")),
+ equals(VersionConstraint.parse(">=2.0.0-dev <2.0.0")));
});
});
@@ -923,29 +887,27 @@
group("doesn't create a pre-release minimum", () {
test("when cutting off the bottom", () {
expect(
- new VersionConstraint.parse("<3.0.0")
+ VersionConstraint.parse("<3.0.0")
.difference(includeMaxPreReleaseRange),
- equals(
- new VersionRange(min: v200, max: v300, includeMin: true)));
+ equals(VersionRange(min: v200, max: v300, includeMin: true)));
});
test("with splitting down the middle", () {
expect(
- new VersionConstraint.parse("<4.0.0").difference(
- new VersionRange(
- min: v200,
- max: v300,
- includeMin: true,
- alwaysIncludeMaxPreRelease: true)),
- equals(new VersionConstraint.unionOf([
- new VersionRange(max: v200, alwaysIncludeMaxPreRelease: true),
- new VersionConstraint.parse(">=3.0.0 <4.0.0")
+ VersionConstraint.parse("<4.0.0").difference(VersionRange(
+ min: v200,
+ max: v300,
+ includeMin: true,
+ alwaysIncludeMaxPreRelease: true)),
+ equals(VersionConstraint.unionOf([
+ VersionRange(max: v200, alwaysIncludeMaxPreRelease: true),
+ VersionConstraint.parse(">=3.0.0 <4.0.0")
])));
});
test("can leave a single version", () {
expect(
- new VersionConstraint.parse("<=2.0.0")
+ VersionConstraint.parse("<=2.0.0")
.difference(includeMaxPreReleaseRange),
equals(v200));
});
@@ -955,54 +917,54 @@
});
test('isEmpty', () {
- expect(new VersionRange().isEmpty, isFalse);
- expect(new VersionRange(min: v123, max: v124).isEmpty, isFalse);
+ expect(VersionRange().isEmpty, isFalse);
+ expect(VersionRange(min: v123, max: v124).isEmpty, isFalse);
});
group('compareTo()', () {
test("orders by minimum first", () {
- _expectComparesSmaller(new VersionRange(min: v003, max: v080),
- new VersionRange(min: v010, max: v072));
- _expectComparesSmaller(new VersionRange(min: v003, max: v080),
- new VersionRange(min: v010, max: v080));
- _expectComparesSmaller(new VersionRange(min: v003, max: v080),
- new VersionRange(min: v010, max: v114));
+ _expectComparesSmaller(VersionRange(min: v003, max: v080),
+ VersionRange(min: v010, max: v072));
+ _expectComparesSmaller(VersionRange(min: v003, max: v080),
+ VersionRange(min: v010, max: v080));
+ _expectComparesSmaller(VersionRange(min: v003, max: v080),
+ VersionRange(min: v010, max: v114));
});
test("orders by maximum second", () {
- _expectComparesSmaller(new VersionRange(min: v003, max: v010),
- new VersionRange(min: v003, max: v072));
+ _expectComparesSmaller(VersionRange(min: v003, max: v010),
+ VersionRange(min: v003, max: v072));
});
test("includeMin comes before !includeMin", () {
_expectComparesSmaller(
- new VersionRange(min: v003, max: v080, includeMin: true),
- new VersionRange(min: v003, max: v080, includeMin: false));
+ VersionRange(min: v003, max: v080, includeMin: true),
+ VersionRange(min: v003, max: v080, includeMin: false));
});
test("includeMax comes after !includeMax", () {
_expectComparesSmaller(
- new VersionRange(min: v003, max: v080, includeMax: false),
- new VersionRange(min: v003, max: v080, includeMax: true));
+ VersionRange(min: v003, max: v080, includeMax: false),
+ VersionRange(min: v003, max: v080, includeMax: true));
});
test("includeMaxPreRelease comes after !includeMaxPreRelease", () {
_expectComparesSmaller(
- new VersionRange(max: v200), includeMaxPreReleaseRange);
+ VersionRange(max: v200), includeMaxPreReleaseRange);
});
test("no minimum comes before small minimum", () {
_expectComparesSmaller(
- new VersionRange(max: v010), new VersionRange(min: v003, max: v010));
- _expectComparesSmaller(new VersionRange(max: v010, includeMin: true),
- new VersionRange(min: v003, max: v010));
+ VersionRange(max: v010), VersionRange(min: v003, max: v010));
+ _expectComparesSmaller(VersionRange(max: v010, includeMin: true),
+ VersionRange(min: v003, max: v010));
});
test("no maximium comes after large maximum", () {
_expectComparesSmaller(
- new VersionRange(min: v003, max: v300), new VersionRange(min: v003));
- _expectComparesSmaller(new VersionRange(min: v003, max: v300),
- new VersionRange(min: v003, includeMax: true));
+ VersionRange(min: v003, max: v300), VersionRange(min: v003));
+ _expectComparesSmaller(VersionRange(min: v003, max: v300),
+ VersionRange(min: v003, includeMax: true));
});
});
}
diff --git a/test/version_test.dart b/test/version_test.dart
index 448435a..634148b 100644
--- a/test/version_test.dart
+++ b/test/version_test.dart
@@ -8,7 +8,7 @@
import 'utils.dart';
-main() {
+void main() {
test('none', () {
expect(Version.none.toString(), equals('0.0.0'));
});
@@ -29,8 +29,8 @@
// appears in the list.
for (var i = 0; i < versions.length; i++) {
for (var j = 0; j < versions.length; j++) {
- var a = new Version.parse(versions[i]);
- var b = new Version.parse(versions[j]);
+ var a = Version.parse(versions[i]);
+ var b = Version.parse(versions[j]);
expect(Version.prioritize(a, b), equals(i.compareTo(j)));
}
}
@@ -52,8 +52,8 @@
// appears in the list.
for (var i = 0; i < versions.length; i++) {
for (var j = 0; j < versions.length; j++) {
- var a = new Version.parse(versions[i]);
- var b = new Version.parse(versions[j]);
+ var a = Version.parse(versions[i]);
+ var b = Version.parse(versions[j]);
expect(Version.antiprioritize(a, b), equals(i.compareTo(j)));
}
}
@@ -61,9 +61,9 @@
group('constructor', () {
test('throws on negative numbers', () {
- expect(() => new Version(-1, 1, 1), throwsArgumentError);
- expect(() => new Version(1, -1, 1), throwsArgumentError);
- expect(() => new Version(1, 1, -1), throwsArgumentError);
+ expect(() => Version(-1, 1, 1), throwsArgumentError);
+ expect(() => Version(1, -1, 1), throwsArgumentError);
+ expect(() => Version(1, 1, -1), throwsArgumentError);
});
});
@@ -93,8 +93,8 @@
// appears in the list.
for (var i = 0; i < versions.length; i++) {
for (var j = 0; j < versions.length; j++) {
- var a = new Version.parse(versions[i]);
- var b = new Version.parse(versions[j]);
+ var a = Version.parse(versions[i]);
+ var b = Version.parse(versions[j]);
expect(a.compareTo(b), equals(i.compareTo(j)));
}
}
@@ -103,8 +103,8 @@
test('operators', () {
for (var i = 0; i < versions.length; i++) {
for (var j = 0; j < versions.length; j++) {
- var a = new Version.parse(versions[i]);
- var b = new Version.parse(versions[j]);
+ var a = Version.parse(versions[i]);
+ var b = Version.parse(versions[j]);
expect(a < b, equals(i < j));
expect(a > b, equals(i > j));
expect(a <= b, equals(i <= j));
@@ -116,13 +116,11 @@
});
test('equality', () {
- expect(new Version.parse('01.2.3'), equals(new Version.parse('1.2.3')));
- expect(new Version.parse('1.02.3'), equals(new Version.parse('1.2.3')));
- expect(new Version.parse('1.2.03'), equals(new Version.parse('1.2.3')));
- expect(
- new Version.parse('1.2.3-01'), equals(new Version.parse('1.2.3-1')));
- expect(
- new Version.parse('1.2.3+01'), equals(new Version.parse('1.2.3+1')));
+ expect(Version.parse('01.2.3'), equals(Version.parse('1.2.3')));
+ expect(Version.parse('1.02.3'), equals(Version.parse('1.2.3')));
+ expect(Version.parse('1.2.03'), equals(Version.parse('1.2.3')));
+ expect(Version.parse('1.2.3-01'), equals(Version.parse('1.2.3-1')));
+ expect(Version.parse('1.2.3+01'), equals(Version.parse('1.2.3+1')));
});
});
@@ -131,17 +129,17 @@
expect(
v123,
doesNotAllow(
- new Version.parse('2.2.3'),
- new Version.parse('1.3.3'),
- new Version.parse('1.2.4'),
- new Version.parse('1.2.3-dev'),
- new Version.parse('1.2.3+build')));
+ Version.parse('2.2.3'),
+ Version.parse('1.3.3'),
+ Version.parse('1.2.4'),
+ Version.parse('1.2.3-dev'),
+ Version.parse('1.2.3+build')));
});
test('allowsAll()', () {
expect(v123.allowsAll(v123), isTrue);
expect(v123.allowsAll(v003), isFalse);
- expect(v123.allowsAll(new VersionRange(min: v114, max: v124)), isFalse);
+ expect(v123.allowsAll(VersionRange(min: v114, max: v124)), isFalse);
expect(v123.allowsAll(VersionConstraint.any), isFalse);
expect(v123.allowsAll(VersionConstraint.empty), isTrue);
});
@@ -149,7 +147,7 @@
test('allowsAny()', () {
expect(v123.allowsAny(v123), isTrue);
expect(v123.allowsAny(v003), isFalse);
- expect(v123.allowsAny(new VersionRange(min: v114, max: v124)), isTrue);
+ expect(v123.allowsAny(VersionRange(min: v114, max: v124)), isTrue);
expect(v123.allowsAny(VersionConstraint.any), isTrue);
expect(v123.allowsAny(VersionConstraint.empty), isFalse);
});
@@ -162,12 +160,10 @@
expect(v123.intersect(v114).isEmpty, isTrue);
// Intersecting a range returns the version if the range allows it.
- expect(
- v123.intersect(new VersionRange(min: v114, max: v124)), equals(v123));
+ expect(v123.intersect(VersionRange(min: v114, max: v124)), equals(v123));
// Intersecting a range allows no versions if the range doesn't allow it.
- expect(
- v114.intersect(new VersionRange(min: v123, max: v124)).isEmpty, isTrue);
+ expect(v114.intersect(VersionRange(min: v123, max: v124)).isEmpty, isTrue);
});
group('union()', () {
@@ -185,27 +181,27 @@
});
test("with a range returns the range if it contains the version", () {
- var range = new VersionRange(min: v114, max: v124);
+ var range = VersionRange(min: v114, max: v124);
expect(v123.union(range), equals(range));
});
test("with a range with the version on the edge, expands the range", () {
expect(
- v124.union(new VersionRange(
+ v124.union(VersionRange(
min: v114, max: v124, alwaysIncludeMaxPreRelease: true)),
- equals(new VersionRange(min: v114, max: v124, includeMax: true)));
+ equals(VersionRange(min: v114, max: v124, includeMax: true)));
expect(
- v124.firstPreRelease.union(new VersionRange(min: v114, max: v124)),
- equals(new VersionRange(
+ v124.firstPreRelease.union(VersionRange(min: v114, max: v124)),
+ equals(VersionRange(
min: v114, max: v124.firstPreRelease, includeMax: true)));
- expect(v114.union(new VersionRange(min: v114, max: v124)),
- equals(new VersionRange(min: v114, max: v124, includeMin: true)));
+ expect(v114.union(VersionRange(min: v114, max: v124)),
+ equals(VersionRange(min: v114, max: v124, includeMin: true)));
});
test(
"with a range allows both the range and the version if the range "
"doesn't contain the version", () {
- var result = v123.union(new VersionRange(min: v003, max: v114));
+ var result = v123.union(VersionRange(min: v003, max: v114));
expect(result, allows(v123));
expect(result, allows(v010));
});
@@ -222,13 +218,12 @@
test("returns an empty constraint with a range that contains the version",
() {
- expect(v123.difference(new VersionRange(min: v114, max: v124)), isEmpty);
+ expect(v123.difference(VersionRange(min: v114, max: v124)), isEmpty);
});
test("returns the version constraint with a range that doesn't contain it",
() {
- expect(v123.difference(new VersionRange(min: v140, max: v300)),
- equals(v123));
+ expect(v123.difference(VersionRange(min: v140, max: v300)), equals(v123));
});
});
@@ -242,13 +237,13 @@
expect(v200.nextMajor, equals(v300));
// Ignores pre-release if not on a major version.
- expect(new Version.parse('1.2.3-dev').nextMajor, equals(v200));
+ expect(Version.parse('1.2.3-dev').nextMajor, equals(v200));
// Just removes it if on a major version.
- expect(new Version.parse('2.0.0-dev').nextMajor, equals(v200));
+ expect(Version.parse('2.0.0-dev').nextMajor, equals(v200));
// Strips build suffix.
- expect(new Version.parse('1.2.3+patch').nextMajor, equals(v200));
+ expect(Version.parse('1.2.3+patch').nextMajor, equals(v200));
});
test('nextMinor', () {
@@ -256,13 +251,13 @@
expect(v130.nextMinor, equals(v140));
// Ignores pre-release if not on a minor version.
- expect(new Version.parse('1.2.3-dev').nextMinor, equals(v130));
+ expect(Version.parse('1.2.3-dev').nextMinor, equals(v130));
// Just removes it if on a minor version.
- expect(new Version.parse('1.3.0-dev').nextMinor, equals(v130));
+ expect(Version.parse('1.3.0-dev').nextMinor, equals(v130));
// Strips build suffix.
- expect(new Version.parse('1.2.3+patch').nextMinor, equals(v130));
+ expect(Version.parse('1.2.3+patch').nextMinor, equals(v130));
});
test('nextPatch', () {
@@ -270,10 +265,10 @@
expect(v200.nextPatch, equals(v201));
// Just removes pre-release version if present.
- expect(new Version.parse('1.2.4-dev').nextPatch, equals(v124));
+ expect(Version.parse('1.2.4-dev').nextPatch, equals(v124));
// Strips build suffix.
- expect(new Version.parse('1.2.3+patch').nextPatch, equals(v124));
+ expect(Version.parse('1.2.3+patch').nextPatch, equals(v124));
});
test('nextBreaking', () {
@@ -282,56 +277,56 @@
expect(v003.nextBreaking, equals(v010));
// Removes pre-release version if present.
- expect(new Version.parse('1.2.3-dev').nextBreaking, equals(v200));
+ expect(Version.parse('1.2.3-dev').nextBreaking, equals(v200));
// Strips build suffix.
- expect(new Version.parse('1.2.3+patch').nextBreaking, equals(v200));
+ expect(Version.parse('1.2.3+patch').nextBreaking, equals(v200));
});
test('parse()', () {
- expect(new Version.parse('0.0.0'), equals(new Version(0, 0, 0)));
- expect(new Version.parse('12.34.56'), equals(new Version(12, 34, 56)));
+ expect(Version.parse('0.0.0'), equals(Version(0, 0, 0)));
+ expect(Version.parse('12.34.56'), equals(Version(12, 34, 56)));
- expect(new Version.parse('1.2.3-alpha.1'),
- equals(new Version(1, 2, 3, pre: 'alpha.1')));
- expect(new Version.parse('1.2.3-x.7.z-92'),
- equals(new Version(1, 2, 3, pre: 'x.7.z-92')));
+ expect(Version.parse('1.2.3-alpha.1'),
+ equals(Version(1, 2, 3, pre: 'alpha.1')));
+ expect(Version.parse('1.2.3-x.7.z-92'),
+ equals(Version(1, 2, 3, pre: 'x.7.z-92')));
- expect(new Version.parse('1.2.3+build.1'),
- equals(new Version(1, 2, 3, build: 'build.1')));
- expect(new Version.parse('1.2.3+x.7.z-92'),
- equals(new Version(1, 2, 3, build: 'x.7.z-92')));
+ expect(Version.parse('1.2.3+build.1'),
+ equals(Version(1, 2, 3, build: 'build.1')));
+ expect(Version.parse('1.2.3+x.7.z-92'),
+ equals(Version(1, 2, 3, build: 'x.7.z-92')));
- expect(new Version.parse('1.0.0-rc-1+build-1'),
- equals(new Version(1, 0, 0, pre: 'rc-1', build: 'build-1')));
+ expect(Version.parse('1.0.0-rc-1+build-1'),
+ equals(Version(1, 0, 0, pre: 'rc-1', build: 'build-1')));
- expect(() => new Version.parse('1.0'), throwsFormatException);
- expect(() => new Version.parse('1.2.3.4'), throwsFormatException);
- expect(() => new Version.parse('1234'), throwsFormatException);
- expect(() => new Version.parse('-2.3.4'), throwsFormatException);
- expect(() => new Version.parse('1.3-pre'), throwsFormatException);
- expect(() => new Version.parse('1.3+build'), throwsFormatException);
- expect(() => new Version.parse('1.3+bu?!3ild'), throwsFormatException);
+ expect(() => Version.parse('1.0'), throwsFormatException);
+ expect(() => Version.parse('1.2.3.4'), throwsFormatException);
+ expect(() => Version.parse('1234'), throwsFormatException);
+ expect(() => Version.parse('-2.3.4'), throwsFormatException);
+ expect(() => Version.parse('1.3-pre'), throwsFormatException);
+ expect(() => Version.parse('1.3+build'), throwsFormatException);
+ expect(() => Version.parse('1.3+bu?!3ild'), throwsFormatException);
});
group('toString()', () {
test('returns the version string', () {
- expect(new Version(0, 0, 0).toString(), equals('0.0.0'));
- expect(new Version(12, 34, 56).toString(), equals('12.34.56'));
+ expect(Version(0, 0, 0).toString(), equals('0.0.0'));
+ expect(Version(12, 34, 56).toString(), equals('12.34.56'));
- expect(new Version(1, 2, 3, pre: 'alpha.1').toString(),
- equals('1.2.3-alpha.1'));
- expect(new Version(1, 2, 3, pre: 'x.7.z-92').toString(),
+ expect(
+ Version(1, 2, 3, pre: 'alpha.1').toString(), equals('1.2.3-alpha.1'));
+ expect(Version(1, 2, 3, pre: 'x.7.z-92').toString(),
equals('1.2.3-x.7.z-92'));
- expect(new Version(1, 2, 3, build: 'build.1').toString(),
+ expect(Version(1, 2, 3, build: 'build.1').toString(),
equals('1.2.3+build.1'));
- expect(new Version(1, 2, 3, pre: 'pre', build: 'bui').toString(),
+ expect(Version(1, 2, 3, pre: 'pre', build: 'bui').toString(),
equals('1.2.3-pre+bui'));
});
test('preserves leading zeroes', () {
- expect(new Version.parse('001.02.0003-01.dev+pre.002').toString(),
+ expect(Version.parse('001.02.0003-01.dev+pre.002').toString(),
equals('001.02.0003-01.dev+pre.002'));
});
});
diff --git a/test/version_union_test.dart b/test/version_union_test.dart
index f629c83..11a5ecd 100644
--- a/test/version_union_test.dart
+++ b/test/version_union_test.dart
@@ -8,11 +8,11 @@
import 'utils.dart';
-main() {
+void main() {
group('factory', () {
test('ignores empty constraints', () {
expect(
- new VersionConstraint.unionOf([
+ VersionConstraint.unionOf([
VersionConstraint.empty,
VersionConstraint.empty,
v123,
@@ -21,141 +21,140 @@
equals(v123));
expect(
- new VersionConstraint.unionOf(
+ VersionConstraint.unionOf(
[VersionConstraint.empty, VersionConstraint.empty]),
isEmpty);
});
test('returns an empty constraint for an empty list', () {
- expect(new VersionConstraint.unionOf([]), isEmpty);
+ expect(VersionConstraint.unionOf([]), isEmpty);
});
test('any constraints override everything', () {
expect(
- new VersionConstraint.unionOf([
+ VersionConstraint.unionOf([
v123,
VersionConstraint.any,
v200,
- new VersionRange(min: v234, max: v250)
+ VersionRange(min: v234, max: v250)
]),
equals(VersionConstraint.any));
});
test('flattens other unions', () {
expect(
- new VersionConstraint.unionOf([
+ VersionConstraint.unionOf([
v072,
- new VersionConstraint.unionOf([v123, v124]),
+ VersionConstraint.unionOf([v123, v124]),
v250
]),
- equals(new VersionConstraint.unionOf([v072, v123, v124, v250])));
+ equals(VersionConstraint.unionOf([v072, v123, v124, v250])));
});
test('returns a single merged range as-is', () {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v080, max: v140),
- new VersionRange(min: v123, max: v200)
+ VersionConstraint.unionOf([
+ VersionRange(min: v080, max: v140),
+ VersionRange(min: v123, max: v200)
]),
- equals(new VersionRange(min: v080, max: v200)));
+ equals(VersionRange(min: v080, max: v200)));
});
});
group('equality', () {
test("doesn't depend on original order", () {
expect(
- new VersionConstraint.unionOf([
+ VersionConstraint.unionOf([
v250,
- new VersionRange(min: v201, max: v234),
+ VersionRange(min: v201, max: v234),
v124,
v072,
- new VersionRange(min: v080, max: v114),
+ VersionRange(min: v080, max: v114),
v123
]),
- equals(new VersionConstraint.unionOf([
+ equals(VersionConstraint.unionOf([
v072,
- new VersionRange(min: v080, max: v114),
+ VersionRange(min: v080, max: v114),
v123,
v124,
- new VersionRange(min: v201, max: v234),
+ VersionRange(min: v201, max: v234),
v250
])));
});
test("merges overlapping ranges", () {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v072),
- new VersionRange(min: v010, max: v080),
- new VersionRange(min: v114, max: v124),
- new VersionRange(min: v123, max: v130)
+ VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v072),
+ VersionRange(min: v010, max: v080),
+ VersionRange(min: v114, max: v124),
+ VersionRange(min: v123, max: v130)
]),
- equals(new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v080),
- new VersionRange(min: v114, max: v130)
+ equals(VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v080),
+ VersionRange(min: v114, max: v130)
])));
});
test("merges adjacent ranges", () {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v072, includeMax: true),
- new VersionRange(min: v072, max: v080),
- new VersionRange(
+ VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v072, includeMax: true),
+ VersionRange(min: v072, max: v080),
+ VersionRange(
min: v114, max: v124, alwaysIncludeMaxPreRelease: true),
- new VersionRange(min: v124, max: v130, includeMin: true),
- new VersionRange(
- min: v130.firstPreRelease, max: v200, includeMin: true)
+ VersionRange(min: v124, max: v130, includeMin: true),
+ VersionRange(min: v130.firstPreRelease, max: v200, includeMin: true)
]),
- equals(new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v080),
- new VersionRange(min: v114, max: v200)
+ equals(VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v080),
+ VersionRange(min: v114, max: v200)
])));
});
test("doesn't merge not-quite-adjacent ranges", () {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v114, max: v124),
- new VersionRange(min: v124, max: v130, includeMin: true)
+ VersionConstraint.unionOf([
+ VersionRange(min: v114, max: v124),
+ VersionRange(min: v124, max: v130, includeMin: true)
]),
- isNot(equals(new VersionRange(min: v114, max: v130))));
+ isNot(equals(VersionRange(min: v114, max: v130))));
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v072),
- new VersionRange(min: v072, max: v080)
+ VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v072),
+ VersionRange(min: v072, max: v080)
]),
- isNot(equals(new VersionRange(min: v003, max: v080))));
+ isNot(equals(VersionRange(min: v003, max: v080))));
});
test("merges version numbers into ranges", () {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v072),
+ VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v072),
v010,
- new VersionRange(min: v114, max: v124),
+ VersionRange(min: v114, max: v124),
v123
]),
- equals(new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v072),
- new VersionRange(min: v114, max: v124)
+ equals(VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v072),
+ VersionRange(min: v114, max: v124)
])));
});
test("merges adjacent version numbers into ranges", () {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(
+ VersionConstraint.unionOf([
+ VersionRange(
min: v003, max: v072, alwaysIncludeMaxPreRelease: true),
v072,
v114,
- new VersionRange(min: v114, max: v124),
+ VersionRange(min: v114, max: v124),
v124.firstPreRelease
]),
- equals(new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v072, includeMax: true),
- new VersionRange(
+ equals(VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v072, includeMax: true),
+ VersionRange(
min: v114,
max: v124.firstPreRelease,
includeMin: true,
@@ -165,35 +164,33 @@
test("doesn't merge not-quite-adjacent version numbers into ranges", () {
expect(
- new VersionConstraint.unionOf(
- [new VersionRange(min: v003, max: v072), v072]),
- isNot(equals(
- new VersionRange(min: v003, max: v072, includeMax: true))));
+ VersionConstraint.unionOf([VersionRange(min: v003, max: v072), v072]),
+ isNot(equals(VersionRange(min: v003, max: v072, includeMax: true))));
});
});
test('isEmpty returns false', () {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v080),
- new VersionRange(min: v123, max: v130),
+ VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v080),
+ VersionRange(min: v123, max: v130),
]),
isNot(isEmpty));
});
test('isAny returns false', () {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v080),
- new VersionRange(min: v123, max: v130),
+ VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v080),
+ VersionRange(min: v123, max: v130),
]).isAny,
isFalse);
});
test('allows() allows anything the components allow', () {
- var union = new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v080),
- new VersionRange(min: v123, max: v130),
+ var union = VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v080),
+ VersionRange(min: v123, max: v130),
v200
]);
@@ -206,9 +203,9 @@
group('allowsAll()', () {
test('for a version, returns true if any component allows the version', () {
- var union = new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v080),
- new VersionRange(min: v123, max: v130),
+ var union = VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v080),
+ VersionRange(min: v123, max: v130),
v200
]);
@@ -222,56 +219,56 @@
test(
'for a version range, returns true if any component allows the whole '
'range', () {
- var union = new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v080),
- new VersionRange(min: v123, max: v130)
+ var union = VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v080),
+ VersionRange(min: v123, max: v130)
]);
- expect(union.allowsAll(new VersionRange(min: v003, max: v080)), isTrue);
- expect(union.allowsAll(new VersionRange(min: v010, max: v072)), isTrue);
- expect(union.allowsAll(new VersionRange(min: v010, max: v124)), isFalse);
+ expect(union.allowsAll(VersionRange(min: v003, max: v080)), isTrue);
+ expect(union.allowsAll(VersionRange(min: v010, max: v072)), isTrue);
+ expect(union.allowsAll(VersionRange(min: v010, max: v124)), isFalse);
});
group('for a union,', () {
- var union = new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v080),
- new VersionRange(min: v123, max: v130)
+ var union = VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v080),
+ VersionRange(min: v123, max: v130)
]);
test('returns true if every constraint matches a different constraint',
() {
expect(
- union.allowsAll(new VersionConstraint.unionOf([
- new VersionRange(min: v010, max: v072),
- new VersionRange(min: v124, max: v130)
+ union.allowsAll(VersionConstraint.unionOf([
+ VersionRange(min: v010, max: v072),
+ VersionRange(min: v124, max: v130)
])),
isTrue);
});
test('returns true if every constraint matches the same constraint', () {
expect(
- union.allowsAll(new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v010),
- new VersionRange(min: v072, max: v080)
+ union.allowsAll(VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v010),
+ VersionRange(min: v072, max: v080)
])),
isTrue);
});
test("returns false if there's an unmatched constraint", () {
expect(
- union.allowsAll(new VersionConstraint.unionOf([
- new VersionRange(min: v010, max: v072),
- new VersionRange(min: v124, max: v130),
- new VersionRange(min: v140, max: v200)
+ union.allowsAll(VersionConstraint.unionOf([
+ VersionRange(min: v010, max: v072),
+ VersionRange(min: v124, max: v130),
+ VersionRange(min: v140, max: v200)
])),
isFalse);
});
test("returns false if a constraint isn't fully matched", () {
expect(
- union.allowsAll(new VersionConstraint.unionOf([
- new VersionRange(min: v010, max: v114),
- new VersionRange(min: v124, max: v130)
+ union.allowsAll(VersionConstraint.unionOf([
+ VersionRange(min: v010, max: v114),
+ VersionRange(min: v124, max: v130)
])),
isFalse);
});
@@ -280,9 +277,9 @@
group('allowsAny()', () {
test('for a version, returns true if any component allows the version', () {
- var union = new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v080),
- new VersionRange(min: v123, max: v130),
+ var union = VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v080),
+ VersionRange(min: v123, max: v130),
v200
]);
@@ -296,38 +293,38 @@
test(
'for a version range, returns true if any component allows part of '
'the range', () {
- var union = new VersionConstraint.unionOf(
- [new VersionRange(min: v003, max: v080), v123]);
+ var union =
+ VersionConstraint.unionOf([VersionRange(min: v003, max: v080), v123]);
- expect(union.allowsAny(new VersionRange(min: v010, max: v114)), isTrue);
- expect(union.allowsAny(new VersionRange(min: v114, max: v124)), isTrue);
- expect(union.allowsAny(new VersionRange(min: v124, max: v130)), isFalse);
+ expect(union.allowsAny(VersionRange(min: v010, max: v114)), isTrue);
+ expect(union.allowsAny(VersionRange(min: v114, max: v124)), isTrue);
+ expect(union.allowsAny(VersionRange(min: v124, max: v130)), isFalse);
});
group('for a union,', () {
- var union = new VersionConstraint.unionOf([
- new VersionRange(min: v010, max: v080),
- new VersionRange(min: v123, max: v130)
+ var union = VersionConstraint.unionOf([
+ VersionRange(min: v010, max: v080),
+ VersionRange(min: v123, max: v130)
]);
test('returns true if any constraint matches', () {
expect(
- union.allowsAny(new VersionConstraint.unionOf(
- [v072, new VersionRange(min: v200, max: v300)])),
+ union.allowsAny(VersionConstraint.unionOf(
+ [v072, VersionRange(min: v200, max: v300)])),
isTrue);
expect(
- union.allowsAny(new VersionConstraint.unionOf(
- [v003, new VersionRange(min: v124, max: v300)])),
+ union.allowsAny(VersionConstraint.unionOf(
+ [v003, VersionRange(min: v124, max: v300)])),
isTrue);
});
test("returns false if no constraint matches", () {
expect(
- union.allowsAny(new VersionConstraint.unionOf([
+ union.allowsAny(VersionConstraint.unionOf([
v003,
- new VersionRange(min: v130, max: v140),
- new VersionRange(min: v140, max: v200)
+ VersionRange(min: v130, max: v140),
+ VersionRange(min: v140, max: v200)
])),
isFalse);
});
@@ -337,83 +334,83 @@
group("intersect()", () {
test("with an overlapping version, returns that version", () {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v010, max: v080),
- new VersionRange(min: v123, max: v140)
+ VersionConstraint.unionOf([
+ VersionRange(min: v010, max: v080),
+ VersionRange(min: v123, max: v140)
]).intersect(v072),
equals(v072));
});
test("with a non-overlapping version, returns an empty constraint", () {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v010, max: v080),
- new VersionRange(min: v123, max: v140)
+ VersionConstraint.unionOf([
+ VersionRange(min: v010, max: v080),
+ VersionRange(min: v123, max: v140)
]).intersect(v300),
isEmpty);
});
test("with an overlapping range, returns that range", () {
- var range = new VersionRange(min: v072, max: v080);
+ var range = VersionRange(min: v072, max: v080);
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v010, max: v080),
- new VersionRange(min: v123, max: v140)
+ VersionConstraint.unionOf([
+ VersionRange(min: v010, max: v080),
+ VersionRange(min: v123, max: v140)
]).intersect(range),
equals(range));
});
test("with a non-overlapping range, returns an empty constraint", () {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v010, max: v080),
- new VersionRange(min: v123, max: v140)
- ]).intersect(new VersionRange(min: v080, max: v123)),
+ VersionConstraint.unionOf([
+ VersionRange(min: v010, max: v080),
+ VersionRange(min: v123, max: v140)
+ ]).intersect(VersionRange(min: v080, max: v123)),
isEmpty);
});
test("with a parially-overlapping range, returns the overlapping parts",
() {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v010, max: v080),
- new VersionRange(min: v123, max: v140)
- ]).intersect(new VersionRange(min: v072, max: v130)),
- equals(new VersionConstraint.unionOf([
- new VersionRange(min: v072, max: v080),
- new VersionRange(min: v123, max: v130)
+ VersionConstraint.unionOf([
+ VersionRange(min: v010, max: v080),
+ VersionRange(min: v123, max: v140)
+ ]).intersect(VersionRange(min: v072, max: v130)),
+ equals(VersionConstraint.unionOf([
+ VersionRange(min: v072, max: v080),
+ VersionRange(min: v123, max: v130)
])));
});
group("for a union,", () {
- var union = new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v080),
- new VersionRange(min: v123, max: v130)
+ var union = VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v080),
+ VersionRange(min: v123, max: v130)
]);
test("returns the overlapping parts", () {
expect(
- union.intersect(new VersionConstraint.unionOf([
+ union.intersect(VersionConstraint.unionOf([
v010,
- new VersionRange(min: v072, max: v124),
- new VersionRange(min: v124, max: v130)
+ VersionRange(min: v072, max: v124),
+ VersionRange(min: v124, max: v130)
])),
- equals(new VersionConstraint.unionOf([
+ equals(VersionConstraint.unionOf([
v010,
- new VersionRange(min: v072, max: v080),
- new VersionRange(min: v123, max: v124),
- new VersionRange(min: v124, max: v130)
+ VersionRange(min: v072, max: v080),
+ VersionRange(min: v123, max: v124),
+ VersionRange(min: v124, max: v130)
])));
});
test("drops parts that don't match", () {
expect(
- union.intersect(new VersionConstraint.unionOf([
+ union.intersect(VersionConstraint.unionOf([
v003,
- new VersionRange(min: v072, max: v080),
- new VersionRange(min: v080, max: v123)
+ VersionRange(min: v072, max: v080),
+ VersionRange(min: v080, max: v123)
])),
- equals(new VersionRange(min: v072, max: v080)));
+ equals(VersionRange(min: v072, max: v080)));
});
});
});
@@ -421,67 +418,65 @@
group("difference()", () {
test("ignores ranges that don't intersect", () {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v072, max: v080),
- new VersionRange(min: v123, max: v130)
- ]).difference(new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v010),
- new VersionRange(min: v080, max: v123),
- new VersionRange(min: v140)
+ VersionConstraint.unionOf([
+ VersionRange(min: v072, max: v080),
+ VersionRange(min: v123, max: v130)
+ ]).difference(VersionConstraint.unionOf([
+ VersionRange(min: v003, max: v010),
+ VersionRange(min: v080, max: v123),
+ VersionRange(min: v140)
])),
- equals(new VersionConstraint.unionOf([
- new VersionRange(min: v072, max: v080),
- new VersionRange(min: v123, max: v130)
+ equals(VersionConstraint.unionOf([
+ VersionRange(min: v072, max: v080),
+ VersionRange(min: v123, max: v130)
])));
});
test("removes overlapping portions", () {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v010, max: v080),
- new VersionRange(min: v123, max: v130)
- ]).difference(new VersionConstraint.unionOf([
- new VersionRange(min: v003, max: v072),
- new VersionRange(min: v124)
- ])),
- equals(new VersionConstraint.unionOf([
- new VersionRange(
+ VersionConstraint.unionOf([
+ VersionRange(min: v010, max: v080),
+ VersionRange(min: v123, max: v130)
+ ]).difference(VersionConstraint.unionOf(
+ [VersionRange(min: v003, max: v072), VersionRange(min: v124)])),
+ equals(VersionConstraint.unionOf([
+ VersionRange(
min: v072.firstPreRelease, max: v080, includeMin: true),
- new VersionRange(min: v123, max: v124, includeMax: true)
+ VersionRange(min: v123, max: v124, includeMax: true)
])));
});
test("removes multiple portions from the same range", () {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v010, max: v114),
- new VersionRange(min: v130, max: v200)
- ]).difference(new VersionConstraint.unionOf([v072, v080])),
- equals(new VersionConstraint.unionOf([
- new VersionRange(
+ VersionConstraint.unionOf([
+ VersionRange(min: v010, max: v114),
+ VersionRange(min: v130, max: v200)
+ ]).difference(VersionConstraint.unionOf([v072, v080])),
+ equals(VersionConstraint.unionOf([
+ VersionRange(
min: v010, max: v072, alwaysIncludeMaxPreRelease: true),
- new VersionRange(
+ VersionRange(
min: v072, max: v080, alwaysIncludeMaxPreRelease: true),
- new VersionRange(min: v080, max: v114),
- new VersionRange(min: v130, max: v200)
+ VersionRange(min: v080, max: v114),
+ VersionRange(min: v130, max: v200)
])));
});
test("removes the same range from multiple ranges", () {
expect(
- new VersionConstraint.unionOf([
- new VersionRange(min: v010, max: v072),
- new VersionRange(min: v080, max: v123),
- new VersionRange(min: v124, max: v130),
- new VersionRange(min: v200, max: v234),
- new VersionRange(min: v250, max: v300)
- ]).difference(new VersionRange(min: v114, max: v201)),
- equals(new VersionConstraint.unionOf([
- new VersionRange(min: v010, max: v072),
- new VersionRange(min: v080, max: v114, includeMax: true),
- new VersionRange(
+ VersionConstraint.unionOf([
+ VersionRange(min: v010, max: v072),
+ VersionRange(min: v080, max: v123),
+ VersionRange(min: v124, max: v130),
+ VersionRange(min: v200, max: v234),
+ VersionRange(min: v250, max: v300)
+ ]).difference(VersionRange(min: v114, max: v201)),
+ equals(VersionConstraint.unionOf([
+ VersionRange(min: v010, max: v072),
+ VersionRange(min: v080, max: v114, includeMax: true),
+ VersionRange(
min: v201.firstPreRelease, max: v234, includeMin: true),
- new VersionRange(min: v250, max: v300)
+ VersionRange(min: v250, max: v300)
])));
});
});