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

Side by Side Diff: mojo/public/dart/third_party/pub_semver/test/version_test.dart

Issue 1346773002: Stop running pub get at gclient sync time and fix build bugs (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 3 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
(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_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('none', () {
15 expect(Version.none.toString(), equals('0.0.0'));
16 });
17
18 test('prioritize()', () {
19 // A correctly sorted list of versions in order of increasing priority.
20 var versions = [
21 '1.0.0-alpha',
22 '2.0.0-alpha',
23 '1.0.0',
24 '1.0.0+build',
25 '1.0.1',
26 '1.1.0',
27 '2.0.0'
28 ];
29
30 // Ensure that every pair of versions is prioritized in the order that it
31 // appears in the list.
32 for (var i = 0; i < versions.length; i++) {
33 for (var j = 0; j < versions.length; j++) {
34 var a = new Version.parse(versions[i]);
35 var b = new Version.parse(versions[j]);
36 expect(Version.prioritize(a, b), equals(i.compareTo(j)));
37 }
38 }
39 });
40
41 test('antiprioritize()', () {
42 // A correctly sorted list of versions in order of increasing antipriority.
43 var versions = [
44 '2.0.0-alpha',
45 '1.0.0-alpha',
46 '2.0.0',
47 '1.1.0',
48 '1.0.1',
49 '1.0.0+build',
50 '1.0.0'
51 ];
52
53 // Ensure that every pair of versions is prioritized in the order that it
54 // appears in the list.
55 for (var i = 0; i < versions.length; i++) {
56 for (var j = 0; j < versions.length; j++) {
57 var a = new Version.parse(versions[i]);
58 var b = new Version.parse(versions[j]);
59 expect(Version.antiprioritize(a, b), equals(i.compareTo(j)));
60 }
61 }
62 });
63
64 group('constructor', () {
65 test('throws on negative numbers', () {
66 expect(() => new Version(-1, 1, 1), throwsArgumentError);
67 expect(() => new Version(1, -1, 1), throwsArgumentError);
68 expect(() => new Version(1, 1, -1), throwsArgumentError);
69 });
70 });
71
72 group('comparison', () {
73 // A correctly sorted list of versions.
74 var versions = [
75 '1.0.0-alpha',
76 '1.0.0-alpha.1',
77 '1.0.0-beta.2',
78 '1.0.0-beta.11',
79 '1.0.0-rc.1',
80 '1.0.0-rc.1+build.1',
81 '1.0.0',
82 '1.0.0+0.3.7',
83 '1.3.7+build',
84 '1.3.7+build.2.b8f12d7',
85 '1.3.7+build.11.e0f985a',
86 '2.0.0',
87 '2.1.0',
88 '2.2.0',
89 '2.11.0',
90 '2.11.1'
91 ];
92
93 test('compareTo()', () {
94 // Ensure that every pair of versions compares in the order that it
95 // appears in the list.
96 for (var i = 0; i < versions.length; i++) {
97 for (var j = 0; j < versions.length; j++) {
98 var a = new Version.parse(versions[i]);
99 var b = new Version.parse(versions[j]);
100 expect(a.compareTo(b), equals(i.compareTo(j)));
101 }
102 }
103 });
104
105 test('operators', () {
106 for (var i = 0; i < versions.length; i++) {
107 for (var j = 0; j < versions.length; j++) {
108 var a = new Version.parse(versions[i]);
109 var b = new Version.parse(versions[j]);
110 expect(a < b, equals(i < j));
111 expect(a > b, equals(i > j));
112 expect(a <= b, equals(i <= j));
113 expect(a >= b, equals(i >= j));
114 expect(a == b, equals(i == j));
115 expect(a != b, equals(i != j));
116 }
117 }
118 });
119
120 test('equality', () {
121 expect(new Version.parse('01.2.3'), equals(new Version.parse('1.2.3')));
122 expect(new Version.parse('1.02.3'), equals(new Version.parse('1.2.3')));
123 expect(new Version.parse('1.2.03'), equals(new Version.parse('1.2.3')));
124 expect(new Version.parse('1.2.3-01'),
125 equals(new Version.parse('1.2.3-1')));
126 expect(new Version.parse('1.2.3+01'),
127 equals(new Version.parse('1.2.3+1')));
128 });
129 });
130
131 test('allows()', () {
132 expect(v123, allows(v123));
133 expect(v123, doesNotAllow(
134 new Version.parse('2.2.3'),
135 new Version.parse('1.3.3'),
136 new Version.parse('1.2.4'),
137 new Version.parse('1.2.3-dev'),
138 new Version.parse('1.2.3+build')));
139 });
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
157 test('intersect()', () {
158 // Intersecting the same version returns the version.
159 expect(v123.intersect(v123), equals(v123));
160
161 // Intersecting a different version allows no versions.
162 expect(v123.intersect(v114).isEmpty, isTrue);
163
164 // Intersecting a range returns the version if the range allows it.
165 expect(v123.intersect(new VersionRange(min: v114, max: v124)),
166 equals(v123));
167
168 // Intersecting a range allows no versions if the range doesn't allow it.
169 expect(v114.intersect(new VersionRange(min: v123, max: v124)).isEmpty,
170 isTrue);
171 });
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
207 test('isEmpty', () {
208 expect(v123.isEmpty, isFalse);
209 });
210
211 test('nextMajor', () {
212 expect(v123.nextMajor, equals(v200));
213 expect(v114.nextMajor, equals(v200));
214 expect(v200.nextMajor, equals(v300));
215
216 // Ignores pre-release if not on a major version.
217 expect(new Version.parse('1.2.3-dev').nextMajor, equals(v200));
218
219 // Just removes it if on a major version.
220 expect(new Version.parse('2.0.0-dev').nextMajor, equals(v200));
221
222 // Strips build suffix.
223 expect(new Version.parse('1.2.3+patch').nextMajor, equals(v200));
224 });
225
226 test('nextMinor', () {
227 expect(v123.nextMinor, equals(v130));
228 expect(v130.nextMinor, equals(v140));
229
230 // Ignores pre-release if not on a minor version.
231 expect(new Version.parse('1.2.3-dev').nextMinor, equals(v130));
232
233 // Just removes it if on a minor version.
234 expect(new Version.parse('1.3.0-dev').nextMinor, equals(v130));
235
236 // Strips build suffix.
237 expect(new Version.parse('1.2.3+patch').nextMinor, equals(v130));
238 });
239
240 test('nextPatch', () {
241 expect(v123.nextPatch, equals(v124));
242 expect(v200.nextPatch, equals(v201));
243
244 // Just removes pre-release version if present.
245 expect(new Version.parse('1.2.4-dev').nextPatch, equals(v124));
246
247 // Strips build suffix.
248 expect(new Version.parse('1.2.3+patch').nextPatch, equals(v124));
249 });
250
251 test('nextBreaking', () {
252 expect(v123.nextBreaking, equals(v200));
253 expect(v072.nextBreaking, equals(v080));
254 expect(v003.nextBreaking, equals(v010));
255
256 // Removes pre-release version if present.
257 expect(new Version.parse('1.2.3-dev').nextBreaking, equals(v200));
258
259 // Strips build suffix.
260 expect(new Version.parse('1.2.3+patch').nextBreaking, equals(v200));
261 });
262
263 test('parse()', () {
264 expect(new Version.parse('0.0.0'), equals(new Version(0, 0, 0)));
265 expect(new Version.parse('12.34.56'), equals(new Version(12, 34, 56)));
266
267 expect(new Version.parse('1.2.3-alpha.1'),
268 equals(new Version(1, 2, 3, pre: 'alpha.1')));
269 expect(new Version.parse('1.2.3-x.7.z-92'),
270 equals(new Version(1, 2, 3, pre: 'x.7.z-92')));
271
272 expect(new Version.parse('1.2.3+build.1'),
273 equals(new Version(1, 2, 3, build: 'build.1')));
274 expect(new Version.parse('1.2.3+x.7.z-92'),
275 equals(new Version(1, 2, 3, build: 'x.7.z-92')));
276
277 expect(new Version.parse('1.0.0-rc-1+build-1'),
278 equals(new Version(1, 0, 0, pre: 'rc-1', build: 'build-1')));
279
280 expect(() => new Version.parse('1.0'), throwsFormatException);
281 expect(() => new Version.parse('1.2.3.4'), throwsFormatException);
282 expect(() => new Version.parse('1234'), throwsFormatException);
283 expect(() => new Version.parse('-2.3.4'), throwsFormatException);
284 expect(() => new Version.parse('1.3-pre'), throwsFormatException);
285 expect(() => new Version.parse('1.3+build'), throwsFormatException);
286 expect(() => new Version.parse('1.3+bu?!3ild'), throwsFormatException);
287 });
288
289 group('toString()', () {
290 test('returns the version string', () {
291 expect(new Version(0, 0, 0).toString(), equals('0.0.0'));
292 expect(new Version(12, 34, 56).toString(), equals('12.34.56'));
293
294 expect(new Version(1, 2, 3, pre: 'alpha.1').toString(),
295 equals('1.2.3-alpha.1'));
296 expect(new Version(1, 2, 3, pre: 'x.7.z-92').toString(),
297 equals('1.2.3-x.7.z-92'));
298
299 expect(new Version(1, 2, 3, build: 'build.1').toString(),
300 equals('1.2.3+build.1'));
301 expect(new Version(1, 2, 3, pre: 'pre', build: 'bui').toString(),
302 equals('1.2.3-pre+bui'));
303 });
304
305 test('preserves leading zeroes', () {
306 expect(new Version.parse('001.02.0003-01.dev+pre.002').toString(),
307 equals('001.02.0003-01.dev+pre.002'));
308 });
309 });
310 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698