| Index: test/version_constraint_test.dart
|
| diff --git a/test/version_constraint_test.dart b/test/version_constraint_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..df8c099096f85dae1c76ef1476202ad3caef2af8
|
| --- /dev/null
|
| +++ b/test/version_constraint_test.dart
|
| @@ -0,0 +1,143 @@
|
| +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +library pub_semver.test.version_constraint_test;
|
| +
|
| +import 'package:unittest/unittest.dart';
|
| +
|
| +import 'package:pub_semver/pub_semver.dart';
|
| +
|
| +import 'utils.dart';
|
| +
|
| +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')));
|
| + });
|
| +
|
| + test('empty', () {
|
| + expect(VersionConstraint.empty.isEmpty, isTrue);
|
| + 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')));
|
| + });
|
| +
|
| + group('parse()', () {
|
| + test('parses an exact version', () {
|
| + var constraint = new VersionConstraint.parse('1.2.3-alpha');
|
| +
|
| + expect(constraint is Version, isTrue);
|
| + expect(constraint, equals(new Version(1, 2, 3, pre: 'alpha')));
|
| + });
|
| +
|
| + test('parses "any"', () {
|
| + var constraint = new 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')));
|
| + });
|
| +
|
| + test('parses a ">" minimum version', () {
|
| + var constraint = new VersionConstraint.parse('>1.2.3');
|
| +
|
| + expect(constraint, allows(
|
| + 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'),
|
| + new Version.parse('1.2.3')));
|
| + });
|
| +
|
| + test('parses a ">=" minimum version', () {
|
| + var constraint = new 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')));
|
| + });
|
| +
|
| + test('parses a "<" maximum version', () {
|
| + var constraint = new VersionConstraint.parse('<1.2.3');
|
| +
|
| + expect(constraint, allows(
|
| + new Version.parse('1.2.1'),
|
| + new 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')));
|
| + });
|
| +
|
| + test('parses a "<=" maximum version', () {
|
| + var constraint = new 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')));
|
| + });
|
| +
|
| + test('parses a series of space-separated constraints', () {
|
| + var constraint = new 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, doesNotAllow(
|
| + new Version.parse('1.2.3-pre'),
|
| + new Version.parse('1.3.0'),
|
| + new Version.parse('3.4.5')));
|
| + });
|
| +
|
| + test('ignores whitespace around operators', () {
|
| + var constraint = new 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, doesNotAllow(
|
| + new Version.parse('1.2.3-pre'),
|
| + new Version.parse('1.3.0'),
|
| + new 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);
|
| + });
|
| +
|
| + test('throws FormatException on a bad string', () {
|
| + var bad = [
|
| + "", " ", // Empty string.
|
| + "foo", // Bad text.
|
| + ">foo", // Bad text after operator.
|
| + "1.0.0 foo", "1.0.0foo", // Bad text after version.
|
| + "anything", // Bad text after "any".
|
| + "<>1.0.0", // Multiple operators.
|
| + "1.0.0<" // Trailing operator.
|
| + ];
|
| +
|
| + for (var text in bad) {
|
| + expect(() => new VersionConstraint.parse(text),
|
| + throwsFormatException);
|
| + }
|
| + });
|
| + });
|
| +}
|
|
|