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

Side by Side Diff: test/version_test.dart

Issue 1127783002: Add more set-like version constraint operations. (Closed) Base URL: git@github.com:dart-lang/pub_semver@master
Patch Set: Code review changes Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 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 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 pub_semver.test.version_test; 5 library pub_semver.test.version_test;
6 6
7 import 'package:test/test.dart'; 7 import 'package:test/test.dart';
8 8
9 import 'package:pub_semver/pub_semver.dart'; 9 import 'package:pub_semver/pub_semver.dart';
10 10
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 test('allows()', () { 131 test('allows()', () {
132 expect(v123, allows(v123)); 132 expect(v123, allows(v123));
133 expect(v123, doesNotAllow( 133 expect(v123, doesNotAllow(
134 new Version.parse('2.2.3'), 134 new Version.parse('2.2.3'),
135 new Version.parse('1.3.3'), 135 new Version.parse('1.3.3'),
136 new Version.parse('1.2.4'), 136 new Version.parse('1.2.4'),
137 new Version.parse('1.2.3-dev'), 137 new Version.parse('1.2.3-dev'),
138 new Version.parse('1.2.3+build'))); 138 new Version.parse('1.2.3+build')));
139 }); 139 });
140 140
141 test('allowsAll()', () {
142 expect(v123.allowsAll(v123), isTrue);
143 expect(v123.allowsAll(v003), isFalse);
144 expect(v123.allowsAll(new VersionRange(min: v114, max: v124)), isFalse);
145 expect(v123.allowsAll(VersionConstraint.any), isFalse);
146 expect(v123.allowsAll(VersionConstraint.empty), isTrue);
147 });
148
149 test('allowsAny()', () {
150 expect(v123.allowsAny(v123), isTrue);
151 expect(v123.allowsAny(v003), isFalse);
152 expect(v123.allowsAny(new VersionRange(min: v114, max: v124)), isTrue);
153 expect(v123.allowsAny(VersionConstraint.any), isTrue);
154 expect(v123.allowsAny(VersionConstraint.empty), isFalse);
155 });
156
141 test('intersect()', () { 157 test('intersect()', () {
142 // Intersecting the same version returns the version. 158 // Intersecting the same version returns the version.
143 expect(v123.intersect(v123), equals(v123)); 159 expect(v123.intersect(v123), equals(v123));
144 160
145 // Intersecting a different version allows no versions. 161 // Intersecting a different version allows no versions.
146 expect(v123.intersect(v114).isEmpty, isTrue); 162 expect(v123.intersect(v114).isEmpty, isTrue);
147 163
148 // Intersecting a range returns the version if the range allows it. 164 // Intersecting a range returns the version if the range allows it.
149 expect(v123.intersect(new VersionRange(min: v114, max: v124)), 165 expect(v123.intersect(new VersionRange(min: v114, max: v124)),
150 equals(v123)); 166 equals(v123));
151 167
152 // Intersecting a range allows no versions if the range doesn't allow it. 168 // Intersecting a range allows no versions if the range doesn't allow it.
153 expect(v114.intersect(new VersionRange(min: v123, max: v124)).isEmpty, 169 expect(v114.intersect(new VersionRange(min: v123, max: v124)).isEmpty,
154 isTrue); 170 isTrue);
155 }); 171 });
156 172
173 group('union()', () {
174 test("with the same version returns the version", () {
175 expect(v123.union(v123), equals(v123));
176 });
177
178 test("with a different version returns a version that matches both", () {
179 var result = v123.union(v080);
180 expect(result, allows(v123));
181 expect(result, allows(v080));
182
183 // Nothing in between should match.
184 expect(result, doesNotAllow(v114));
185 });
186
187 test("with a range returns the range if it contains the version", () {
188 var range = new VersionRange(min: v114, max: v124);
189 expect(v123.union(range), equals(range));
190 });
191
192 test("with a range with the version on the edge, expands the range", () {
193 expect(v124.union(new VersionRange(min: v114, max: v124)),
194 equals(new VersionRange(min: v114, max: v124, includeMax: true)));
195 expect(v114.union(new VersionRange(min: v114, max: v124)),
196 equals(new VersionRange(min: v114, max: v124, includeMin: true)));
197 });
198
199 test("with a range allows both the range and the version if the range "
200 "doesn't contain the version", () {
201 var result = v123.union(new VersionRange(min: v003, max: v114));
202 expect(result, allows(v123));
203 expect(result, allows(v010));
204 });
205 });
206
157 test('isEmpty', () { 207 test('isEmpty', () {
158 expect(v123.isEmpty, isFalse); 208 expect(v123.isEmpty, isFalse);
159 }); 209 });
160 210
161 test('nextMajor', () { 211 test('nextMajor', () {
162 expect(v123.nextMajor, equals(v200)); 212 expect(v123.nextMajor, equals(v200));
163 expect(v114.nextMajor, equals(v200)); 213 expect(v114.nextMajor, equals(v200));
164 expect(v200.nextMajor, equals(v300)); 214 expect(v200.nextMajor, equals(v300));
165 215
166 // Ignores pre-release if not on a major version. 216 // Ignores pre-release if not on a major version.
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 expect(new Version(1, 2, 3, pre: 'pre', build: 'bui').toString(), 301 expect(new Version(1, 2, 3, pre: 'pre', build: 'bui').toString(),
252 equals('1.2.3-pre+bui')); 302 equals('1.2.3-pre+bui'));
253 }); 303 });
254 304
255 test('preserves leading zeroes', () { 305 test('preserves leading zeroes', () {
256 expect(new Version.parse('001.02.0003-01.dev+pre.002').toString(), 306 expect(new Version.parse('001.02.0003-01.dev+pre.002').toString(),
257 equals('001.02.0003-01.dev+pre.002')); 307 equals('001.02.0003-01.dev+pre.002'));
258 }); 308 });
259 }); 309 });
260 } 310 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698