| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 
|  | 2 // for details. All rights reserved. Use of this source code is governed by a | 
|  | 3 // BSD-style license that can be found in the LICENSE file. | 
|  | 4 | 
|  | 5 library pub_semver.test.version_constraint_test; | 
|  | 6 | 
|  | 7 import 'package:test/test.dart'; | 
|  | 8 | 
|  | 9 import 'package:pub_semver/pub_semver.dart'; | 
|  | 10 | 
|  | 11 import 'utils.dart'; | 
|  | 12 | 
|  | 13 main() { | 
|  | 14   test('any', () { | 
|  | 15     expect(VersionConstraint.any.isAny, isTrue); | 
|  | 16     expect(VersionConstraint.any, allows( | 
|  | 17         new Version.parse('0.0.0-blah'), | 
|  | 18         new Version.parse('1.2.3'), | 
|  | 19         new Version.parse('12345.678.90'))); | 
|  | 20   }); | 
|  | 21 | 
|  | 22   test('empty', () { | 
|  | 23     expect(VersionConstraint.empty.isEmpty, isTrue); | 
|  | 24     expect(VersionConstraint.empty.isAny, isFalse); | 
|  | 25     expect(VersionConstraint.empty, doesNotAllow( | 
|  | 26         new Version.parse('0.0.0-blah'), | 
|  | 27         new Version.parse('1.2.3'), | 
|  | 28         new Version.parse('12345.678.90'))); | 
|  | 29   }); | 
|  | 30 | 
|  | 31   group('parse()', () { | 
|  | 32     test('parses an exact version', () { | 
|  | 33       var constraint = new VersionConstraint.parse('1.2.3-alpha'); | 
|  | 34 | 
|  | 35       expect(constraint is Version, isTrue); | 
|  | 36       expect(constraint, equals(new Version(1, 2, 3, pre: 'alpha'))); | 
|  | 37     }); | 
|  | 38 | 
|  | 39     test('parses "any"', () { | 
|  | 40       var constraint = new VersionConstraint.parse('any'); | 
|  | 41 | 
|  | 42       expect(constraint is VersionConstraint, isTrue); | 
|  | 43       expect(constraint, allows( | 
|  | 44           new Version.parse('0.0.0'), | 
|  | 45           new Version.parse('1.2.3'), | 
|  | 46           new Version.parse('12345.678.90'))); | 
|  | 47     }); | 
|  | 48 | 
|  | 49     test('parses a ">" minimum version', () { | 
|  | 50       var constraint = new VersionConstraint.parse('>1.2.3'); | 
|  | 51 | 
|  | 52       expect(constraint, allows( | 
|  | 53           new Version.parse('1.2.3+foo'), | 
|  | 54           new Version.parse('1.2.4'))); | 
|  | 55       expect(constraint, doesNotAllow( | 
|  | 56           new Version.parse('1.2.1'), | 
|  | 57           new Version.parse('1.2.3-build'), | 
|  | 58           new Version.parse('1.2.3'))); | 
|  | 59     }); | 
|  | 60 | 
|  | 61     test('parses a ">=" minimum version', () { | 
|  | 62       var constraint = new VersionConstraint.parse('>=1.2.3'); | 
|  | 63 | 
|  | 64       expect(constraint, allows( | 
|  | 65           new Version.parse('1.2.3'), | 
|  | 66           new Version.parse('1.2.3+foo'), | 
|  | 67           new Version.parse('1.2.4'))); | 
|  | 68       expect(constraint, doesNotAllow( | 
|  | 69           new Version.parse('1.2.1'), | 
|  | 70           new Version.parse('1.2.3-build'))); | 
|  | 71     }); | 
|  | 72 | 
|  | 73     test('parses a "<" maximum version', () { | 
|  | 74       var constraint = new VersionConstraint.parse('<1.2.3'); | 
|  | 75 | 
|  | 76       expect(constraint, allows( | 
|  | 77           new Version.parse('1.2.1'), | 
|  | 78           new Version.parse('1.2.2+foo'))); | 
|  | 79       expect(constraint, doesNotAllow( | 
|  | 80           new Version.parse('1.2.3'), | 
|  | 81           new Version.parse('1.2.3+foo'), | 
|  | 82           new Version.parse('1.2.4'))); | 
|  | 83     }); | 
|  | 84 | 
|  | 85     test('parses a "<=" maximum version', () { | 
|  | 86       var constraint = new VersionConstraint.parse('<=1.2.3'); | 
|  | 87 | 
|  | 88       expect(constraint, allows( | 
|  | 89           new Version.parse('1.2.1'), | 
|  | 90           new Version.parse('1.2.3-build'), | 
|  | 91           new Version.parse('1.2.3'))); | 
|  | 92       expect(constraint, doesNotAllow( | 
|  | 93           new Version.parse('1.2.3+foo'), | 
|  | 94           new Version.parse('1.2.4'))); | 
|  | 95     }); | 
|  | 96 | 
|  | 97     test('parses a series of space-separated constraints', () { | 
|  | 98       var constraint = new VersionConstraint.parse('>1.0.0 >=1.2.3 <1.3.0'); | 
|  | 99 | 
|  | 100       expect(constraint, allows( | 
|  | 101           new Version.parse('1.2.3'), | 
|  | 102           new Version.parse('1.2.5'))); | 
|  | 103       expect(constraint, doesNotAllow( | 
|  | 104           new Version.parse('1.2.3-pre'), | 
|  | 105           new Version.parse('1.3.0'), | 
|  | 106           new Version.parse('3.4.5'))); | 
|  | 107     }); | 
|  | 108 | 
|  | 109     test('ignores whitespace around comparison operators', () { | 
|  | 110       var constraint = new VersionConstraint.parse(' >1.0.0>=1.2.3 < 1.3.0'); | 
|  | 111 | 
|  | 112       expect(constraint, allows( | 
|  | 113           new Version.parse('1.2.3'), | 
|  | 114           new Version.parse('1.2.5'))); | 
|  | 115       expect(constraint, doesNotAllow( | 
|  | 116           new Version.parse('1.2.3-pre'), | 
|  | 117           new Version.parse('1.3.0'), | 
|  | 118           new Version.parse('3.4.5'))); | 
|  | 119     }); | 
|  | 120 | 
|  | 121     test('does not allow "any" to be mixed with other constraints', () { | 
|  | 122       expect(() => new VersionConstraint.parse('any 1.0.0'), | 
|  | 123           throwsFormatException); | 
|  | 124     }); | 
|  | 125 | 
|  | 126     test('parses a "^" version', () { | 
|  | 127       expect(new VersionConstraint.parse('^0.0.3'), equals( | 
|  | 128           new VersionConstraint.compatibleWith(v003))); | 
|  | 129 | 
|  | 130       expect(new VersionConstraint.parse('^0.7.2'), equals( | 
|  | 131           new VersionConstraint.compatibleWith(v072))); | 
|  | 132 | 
|  | 133       expect(new VersionConstraint.parse('^1.2.3'), equals( | 
|  | 134           new VersionConstraint.compatibleWith(v123))); | 
|  | 135 | 
|  | 136       var min = new Version.parse('0.7.2-pre+1'); | 
|  | 137       expect(new VersionConstraint.parse('^0.7.2-pre+1'), equals( | 
|  | 138           new VersionConstraint.compatibleWith(min))); | 
|  | 139     }); | 
|  | 140 | 
|  | 141     test('does not allow "^" to be mixed with other constraints', () { | 
|  | 142       expect(() => new VersionConstraint.parse('>=1.2.3 ^1.0.0'), | 
|  | 143           throwsFormatException); | 
|  | 144       expect(() => new VersionConstraint.parse('^1.0.0 <1.2.3'), | 
|  | 145           throwsFormatException); | 
|  | 146     }); | 
|  | 147 | 
|  | 148     test('ignores whitespace around "^"', () { | 
|  | 149       var constraint = new VersionConstraint.parse(' ^ 1.2.3 '); | 
|  | 150 | 
|  | 151       expect(constraint, equals( | 
|  | 152           new VersionConstraint.compatibleWith(v123))); | 
|  | 153     }); | 
|  | 154 | 
|  | 155     test('throws FormatException on a bad string', () { | 
|  | 156       var bad = [ | 
|  | 157          "", "   ",               // Empty string. | 
|  | 158          "foo",                   // Bad text. | 
|  | 159          ">foo",                  // Bad text after operator. | 
|  | 160          "^foo",                  // Bad text after "^". | 
|  | 161          "1.0.0 foo", "1.0.0foo", // Bad text after version. | 
|  | 162          "anything",              // Bad text after "any". | 
|  | 163          "<>1.0.0",               // Multiple operators. | 
|  | 164          "1.0.0<"                 // Trailing operator. | 
|  | 165       ]; | 
|  | 166 | 
|  | 167       for (var text in bad) { | 
|  | 168         expect(() => new VersionConstraint.parse(text), | 
|  | 169             throwsFormatException); | 
|  | 170       } | 
|  | 171     }); | 
|  | 172   }); | 
|  | 173 | 
|  | 174   group('compatibleWith()', () { | 
|  | 175     test('returns the range of compatible versions', () { | 
|  | 176       var constraint = new VersionConstraint.compatibleWith(v072); | 
|  | 177 | 
|  | 178       expect(constraint, equals(new VersionRange(min: v072, includeMin: true, | 
|  | 179           max: v072.nextBreaking))); | 
|  | 180     }); | 
|  | 181 | 
|  | 182     test('toString() uses "^"', () { | 
|  | 183       var constraint = new VersionConstraint.compatibleWith(v072); | 
|  | 184 | 
|  | 185       expect(constraint.toString(), equals('^0.7.2')); | 
|  | 186     }); | 
|  | 187   }); | 
|  | 188 } | 
| OLD | NEW | 
|---|