| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library version_test; | 5 library version_test; |
| 6 | 6 |
| 7 import '../../../pkg/unittest/unittest.dart'; | 7 import '../../../pkg/unittest/unittest.dart'; |
| 8 import '../../pub/utils.dart'; | 8 import '../../pub/utils.dart'; |
| 9 import '../../pub/version.dart'; | 9 import '../../pub/version.dart'; |
| 10 | 10 |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 }); | 87 }); |
| 88 | 88 |
| 89 test('intersect()', () { | 89 test('intersect()', () { |
| 90 // Intersecting the same version returns the version. | 90 // Intersecting the same version returns the version. |
| 91 expect(v123.intersect(v123), equals(v123)); | 91 expect(v123.intersect(v123), equals(v123)); |
| 92 | 92 |
| 93 // Intersecting a different version allows no versions. | 93 // Intersecting a different version allows no versions. |
| 94 expect(v123.intersect(v114).isEmpty); | 94 expect(v123.intersect(v114).isEmpty); |
| 95 | 95 |
| 96 // Intersecting a range returns the version if the range allows it. | 96 // Intersecting a range returns the version if the range allows it. |
| 97 expect(v123.intersect(new VersionRange(v114, v124)), equals(v123)); | 97 expect(v123.intersect(new VersionRange(min: v114, max: v124)), |
| 98 equals(v123)); |
| 98 | 99 |
| 99 // Intersecting a range allows no versions if the range doesn't allow it. | 100 // Intersecting a range allows no versions if the range doesn't allow it. |
| 100 expect(v114.intersect(new VersionRange(v123, v124)).isEmpty); | 101 expect(v114.intersect(new VersionRange(min: v123, max: v124)).isEmpty); |
| 101 }); | 102 }); |
| 102 | 103 |
| 103 test('isEmpty', () { | 104 test('isEmpty', () { |
| 104 expect(!v123.isEmpty); | 105 expect(!v123.isEmpty); |
| 105 }); | 106 }); |
| 106 | 107 |
| 107 test('parse()', () { | 108 test('parse()', () { |
| 108 expect(new Version.parse('0.0.0'), equals(new Version(0, 0, 0))); | 109 expect(new Version.parse('0.0.0'), equals(new Version(0, 0, 0))); |
| 109 expect(new Version.parse('12.34.56'), equals(new Version(12, 34, 56))); | 110 expect(new Version.parse('12.34.56'), equals(new Version(12, 34, 56))); |
| 110 | 111 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 expect(new Version(1, 2, 3, build: 'build.1').toString(), equals( | 143 expect(new Version(1, 2, 3, build: 'build.1').toString(), equals( |
| 143 '1.2.3+build.1')); | 144 '1.2.3+build.1')); |
| 144 expect(new Version(1, 2, 3, pre: 'pre', build: 'bui').toString(), equals( | 145 expect(new Version(1, 2, 3, pre: 'pre', build: 'bui').toString(), equals( |
| 145 '1.2.3-pre+bui')); | 146 '1.2.3-pre+bui')); |
| 146 }); | 147 }); |
| 147 }); | 148 }); |
| 148 | 149 |
| 149 group('VersionRange', () { | 150 group('VersionRange', () { |
| 150 group('constructor', () { | 151 group('constructor', () { |
| 151 test('takes a min and max', () { | 152 test('takes a min and max', () { |
| 152 var range = new VersionRange(v123, v124); | 153 var range = new VersionRange(min: v123, max: v124); |
| 153 expect(range.min, equals(v123)); | 154 expect(range.min, equals(v123)); |
| 154 expect(range.max, equals(v124)); | 155 expect(range.max, equals(v124)); |
| 155 }); | 156 }); |
| 156 | 157 |
| 157 test('allows omitting max', () { | 158 test('allows omitting max', () { |
| 158 var range = new VersionRange(v123); | 159 var range = new VersionRange(min: v123); |
| 159 expect(range.min, equals(v123)); | 160 expect(range.min, equals(v123)); |
| 160 expect(range.max, isNull); | 161 expect(range.max, isNull); |
| 161 }); | 162 }); |
| 162 | 163 |
| 163 test('allows omitting min and max', () { | 164 test('allows omitting min and max', () { |
| 164 var range = new VersionRange(); | 165 var range = new VersionRange(); |
| 165 expect(range.min, isNull); | 166 expect(range.min, isNull); |
| 166 expect(range.max, isNull); | 167 expect(range.max, isNull); |
| 167 }); | 168 }); |
| 168 | 169 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 180 var range = new VersionRange(max: v123, includeMax: true); | 181 var range = new VersionRange(max: v123, includeMax: true); |
| 181 expect(range.includeMax); | 182 expect(range.includeMax); |
| 182 }); | 183 }); |
| 183 | 184 |
| 184 test('includeMax defaults to false if omitted', () { | 185 test('includeMax defaults to false if omitted', () { |
| 185 var range = new VersionRange(max: v123); | 186 var range = new VersionRange(max: v123); |
| 186 expect(range.includeMax, isFalse); | 187 expect(range.includeMax, isFalse); |
| 187 }); | 188 }); |
| 188 | 189 |
| 189 test('throws if min > max', () { | 190 test('throws if min > max', () { |
| 190 throwsIllegalArg(() => new VersionRange(v124, v123)); | 191 throwsIllegalArg(() => new VersionRange(min: v124, max: v123)); |
| 191 }); | 192 }); |
| 192 }); | 193 }); |
| 193 | 194 |
| 194 group('allows()', () { | 195 group('allows()', () { |
| 195 test('version must be greater than min', () { | 196 test('version must be greater than min', () { |
| 196 var range = new VersionRange(v123, v234); | 197 var range = new VersionRange(min: v123, max: v234); |
| 197 | 198 |
| 198 expect(!range.allows(new Version.parse('1.2.2'))); | 199 expect(!range.allows(new Version.parse('1.2.2'))); |
| 199 expect(!range.allows(new Version.parse('1.2.3'))); | 200 expect(!range.allows(new Version.parse('1.2.3'))); |
| 200 expect(range.allows(new Version.parse('1.3.3'))); | 201 expect(range.allows(new Version.parse('1.3.3'))); |
| 201 expect(range.allows(new Version.parse('2.3.3'))); | 202 expect(range.allows(new Version.parse('2.3.3'))); |
| 202 }); | 203 }); |
| 203 | 204 |
| 204 test('version must be min or greater if includeMin', () { | 205 test('version must be min or greater if includeMin', () { |
| 205 var range = new VersionRange(v123, v234, includeMin: true); | 206 var range = new VersionRange(min: v123, max: v234, includeMin: true); |
| 206 | 207 |
| 207 expect(!range.allows(new Version.parse('1.2.2'))); | 208 expect(!range.allows(new Version.parse('1.2.2'))); |
| 208 expect(range.allows(new Version.parse('1.2.3'))); | 209 expect(range.allows(new Version.parse('1.2.3'))); |
| 209 expect(range.allows(new Version.parse('1.3.3'))); | 210 expect(range.allows(new Version.parse('1.3.3'))); |
| 210 expect(range.allows(new Version.parse('2.3.3'))); | 211 expect(range.allows(new Version.parse('2.3.3'))); |
| 211 }); | 212 }); |
| 212 | 213 |
| 213 test('version must be less than max', () { | 214 test('version must be less than max', () { |
| 214 var range = new VersionRange(v123, v234); | 215 var range = new VersionRange(min: v123, max: v234); |
| 215 | 216 |
| 216 expect(range.allows(new Version.parse('2.3.3'))); | 217 expect(range.allows(new Version.parse('2.3.3'))); |
| 217 expect(!range.allows(new Version.parse('2.3.4'))); | 218 expect(!range.allows(new Version.parse('2.3.4'))); |
| 218 expect(!range.allows(new Version.parse('2.4.3'))); | 219 expect(!range.allows(new Version.parse('2.4.3'))); |
| 219 }); | 220 }); |
| 220 | 221 |
| 221 test('version must be max or less if includeMax', () { | 222 test('version must be max or less if includeMax', () { |
| 222 var range = new VersionRange(v123, v234, includeMax: true); | 223 var range = new VersionRange(min: v123, max: v234, includeMax: true); |
| 223 | 224 |
| 224 expect(range.allows(new Version.parse('2.3.3'))); | 225 expect(range.allows(new Version.parse('2.3.3'))); |
| 225 expect(range.allows(new Version.parse('2.3.4'))); | 226 expect(range.allows(new Version.parse('2.3.4'))); |
| 226 expect(!range.allows(new Version.parse('2.4.3'))); | 227 expect(!range.allows(new Version.parse('2.4.3'))); |
| 227 }); | 228 }); |
| 228 | 229 |
| 229 test('has no min if one was not set', () { | 230 test('has no min if one was not set', () { |
| 230 var range = new VersionRange(max: v123); | 231 var range = new VersionRange(max: v123); |
| 231 | 232 |
| 232 expect(range.allows(new Version.parse('0.0.0'))); | 233 expect(range.allows(new Version.parse('0.0.0'))); |
| 233 expect(!range.allows(new Version.parse('1.2.3'))); | 234 expect(!range.allows(new Version.parse('1.2.3'))); |
| 234 }); | 235 }); |
| 235 | 236 |
| 236 test('has no max if one was not set', () { | 237 test('has no max if one was not set', () { |
| 237 var range = new VersionRange(v123); | 238 var range = new VersionRange(min: v123); |
| 238 | 239 |
| 239 expect(!range.allows(new Version.parse('1.2.3'))); | 240 expect(!range.allows(new Version.parse('1.2.3'))); |
| 240 expect(range.allows(new Version.parse('1.3.3'))); | 241 expect(range.allows(new Version.parse('1.3.3'))); |
| 241 expect(range.allows(new Version.parse('999.3.3'))); | 242 expect(range.allows(new Version.parse('999.3.3'))); |
| 242 }); | 243 }); |
| 243 | 244 |
| 244 test('allows any version if there is no min or max', () { | 245 test('allows any version if there is no min or max', () { |
| 245 var range = new VersionRange(); | 246 var range = new VersionRange(); |
| 246 | 247 |
| 247 expect(range.allows(new Version.parse('0.0.0'))); | 248 expect(range.allows(new Version.parse('0.0.0'))); |
| 248 expect(range.allows(new Version.parse('999.99.9'))); | 249 expect(range.allows(new Version.parse('999.99.9'))); |
| 249 }); | 250 }); |
| 250 }); | 251 }); |
| 251 | 252 |
| 252 group('intersect()', () { | 253 group('intersect()', () { |
| 253 test('two overlapping ranges', () { | 254 test('two overlapping ranges', () { |
| 254 var a = new VersionRange(v123, v250); | 255 var a = new VersionRange(min: v123, max: v250); |
| 255 var b = new VersionRange(v200, v300); | 256 var b = new VersionRange(min: v200, max: v300); |
| 256 var intersect = a.intersect(b); | 257 var intersect = a.intersect(b); |
| 257 expect(intersect.min, equals(v200)); | 258 expect(intersect.min, equals(v200)); |
| 258 expect(intersect.max, equals(v250)); | 259 expect(intersect.max, equals(v250)); |
| 259 expect(intersect.includeMin, isFalse); | 260 expect(intersect.includeMin, isFalse); |
| 260 expect(intersect.includeMax, isFalse); | 261 expect(intersect.includeMax, isFalse); |
| 261 }); | 262 }); |
| 262 | 263 |
| 263 test('a non-overlapping range allows no versions', () { | 264 test('a non-overlapping range allows no versions', () { |
| 264 var a = new VersionRange(v114, v124); | 265 var a = new VersionRange(min: v114, max: v124); |
| 265 var b = new VersionRange(v200, v250); | 266 var b = new VersionRange(min: v200, max: v250); |
| 266 expect(a.intersect(b).isEmpty); | 267 expect(a.intersect(b).isEmpty); |
| 267 }); | 268 }); |
| 268 | 269 |
| 269 test('adjacent ranges allow no versions if exclusive', () { | 270 test('adjacent ranges allow no versions if exclusive', () { |
| 270 var a = new VersionRange(v114, v124, includeMax: false); | 271 var a = new VersionRange(min: v114, max: v124, includeMax: false); |
| 271 var b = new VersionRange(v124, v200, includeMin: true); | 272 var b = new VersionRange(min: v124, max: v200, includeMin: true); |
| 272 expect(a.intersect(b).isEmpty); | 273 expect(a.intersect(b).isEmpty); |
| 273 }); | 274 }); |
| 274 | 275 |
| 275 test('adjacent ranges allow version if inclusive', () { | 276 test('adjacent ranges allow version if inclusive', () { |
| 276 var a = new VersionRange(v114, v124, includeMax: true); | 277 var a = new VersionRange(min: v114, max: v124, includeMax: true); |
| 277 var b = new VersionRange(v124, v200, includeMin: true); | 278 var b = new VersionRange(min: v124, max: v200, includeMin: true); |
| 278 expect(a.intersect(b), equals(v124)); | 279 expect(a.intersect(b), equals(v124)); |
| 279 }); | 280 }); |
| 280 | 281 |
| 281 test('with an open range', () { | 282 test('with an open range', () { |
| 282 var open = new VersionRange(); | 283 var open = new VersionRange(); |
| 283 var a = new VersionRange(v114, v124); | 284 var a = new VersionRange(min: v114, max: v124); |
| 284 expect(open.intersect(open), equals(open)); | 285 expect(open.intersect(open), equals(open)); |
| 285 expect(a.intersect(open), equals(a)); | 286 expect(a.intersect(open), equals(a)); |
| 286 }); | 287 }); |
| 287 | 288 |
| 288 test('returns the version if the range allows it', () { | 289 test('returns the version if the range allows it', () { |
| 289 expect(new VersionRange(v114, v124).intersect(v123), equals(v123)); | 290 expect(new VersionRange(min: v114, max: v124).intersect(v123), |
| 290 expect(new VersionRange(v123, v124).intersect(v114).isEmpty); | 291 equals(v123)); |
| 292 expect(new VersionRange(min: v123, max: v124).intersect(v114).isEmpty); |
| 291 }); | 293 }); |
| 292 }); | 294 }); |
| 293 | 295 |
| 294 test('isEmpty', () { | 296 test('isEmpty', () { |
| 295 expect(new VersionRange().isEmpty, isFalse); | 297 expect(new VersionRange().isEmpty, isFalse); |
| 296 expect(new VersionRange(v123, v124).isEmpty, isFalse); | 298 expect(new VersionRange(min: v123, max: v124).isEmpty, isFalse); |
| 297 }); | 299 }); |
| 298 }); | 300 }); |
| 299 | 301 |
| 300 group('VersionConstraint', () { | 302 group('VersionConstraint', () { |
| 301 test('empty', () { | 303 test('empty', () { |
| 302 expect(new VersionConstraint.empty().isEmpty); | 304 expect(new VersionConstraint.empty().isEmpty); |
| 303 }); | 305 }); |
| 304 | 306 |
| 305 group('parse()', () { | 307 group('parse()', () { |
| 306 test('parses an exact version', () { | 308 test('parses an exact version', () { |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 | 424 |
| 423 Matcher allows(List<Version> versions) => | 425 Matcher allows(List<Version> versions) => |
| 424 new VersionConstraintMatcher(versions, true); | 426 new VersionConstraintMatcher(versions, true); |
| 425 | 427 |
| 426 Matcher doesNotAllow(List<Version> versions) => | 428 Matcher doesNotAllow(List<Version> versions) => |
| 427 new VersionConstraintMatcher(versions, false); | 429 new VersionConstraintMatcher(versions, false); |
| 428 | 430 |
| 429 throwsIllegalArg(function) { | 431 throwsIllegalArg(function) { |
| 430 expect(function, throwsA((e) => e is ArgumentError)); | 432 expect(function, throwsA((e) => e is ArgumentError)); |
| 431 } | 433 } |
| OLD | NEW |