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

Side by Side Diff: test/version_range_test.dart

Issue 607663002: Harvest from pub. Mostly a straight copy, except: (Closed) Base URL: https://github.com/dart-lang/pub_semver.git@master
Patch Set: Revise! Created 6 years, 2 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
« no previous file with comments | « test/version_constraint_test.dart ('k') | test/version_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_range_test;
6
7 import 'package:unittest/unittest.dart';
8
9 import 'package:pub_semver/pub_semver.dart';
10
11 import 'utils.dart';
12
13 main() {
14 group('constructor', () {
15 test('takes a min and max', () {
16 var range = new VersionRange(min: v123, max: v124);
17 expect(range.isAny, isFalse);
18 expect(range.min, equals(v123));
19 expect(range.max, equals(v124));
20 });
21
22 test('allows omitting max', () {
23 var range = new VersionRange(min: v123);
24 expect(range.isAny, isFalse);
25 expect(range.min, equals(v123));
26 expect(range.max, isNull);
27 });
28
29 test('allows omitting min and max', () {
30 var range = new VersionRange();
31 expect(range.isAny, isTrue);
32 expect(range.min, isNull);
33 expect(range.max, isNull);
34 });
35
36 test('takes includeMin', () {
37 var range = new VersionRange(min: v123, includeMin: true);
38 expect(range.includeMin, isTrue);
39 });
40
41 test('includeMin defaults to false if omitted', () {
42 var range = new VersionRange(min: v123);
43 expect(range.includeMin, isFalse);
44 });
45
46 test('takes includeMax', () {
47 var range = new VersionRange(max: v123, includeMax: true);
48 expect(range.includeMax, isTrue);
49 });
50
51 test('includeMax defaults to false if omitted', () {
52 var range = new VersionRange(max: v123);
53 expect(range.includeMax, isFalse);
54 });
55
56 test('throws if min > max', () {
57 expect(() => new VersionRange(min: v124, max: v123), throwsArgumentError);
58 });
59 });
60
61 group('allows()', () {
62 test('version must be greater than min', () {
63 var range = new VersionRange(min: v123);
64
65 expect(range, allows(
66 new Version.parse('1.3.3'),
67 new Version.parse('2.3.3')));
68 expect(range, doesNotAllow(
69 new Version.parse('1.2.2'),
70 new Version.parse('1.2.3')));
71 });
72
73 test('version must be min or greater if includeMin', () {
74 var range = new VersionRange(min: v123, includeMin: true);
75
76 expect(range, allows(
77 new Version.parse('1.2.3'),
78 new Version.parse('1.3.3'),
79 new Version.parse('2.3.3')));
80 expect(range, doesNotAllow(new Version.parse('1.2.2')));
81 });
82
83 test('pre-release versions of inclusive min are excluded', () {
84 var range = new VersionRange(min: v123, includeMin: true);
85
86 expect(range, allows(new Version.parse('1.2.4-dev')));
87 expect(range, doesNotAllow(new Version.parse('1.2.3-dev')));
88 });
89
90 test('version must be less than max', () {
91 var range = new VersionRange(max: v234);
92
93 expect(range, allows(new Version.parse('2.3.3')));
94 expect(range, doesNotAllow(
95 new Version.parse('2.3.4'),
96 new Version.parse('2.4.3')));
97 });
98
99 test('pre-release versions of non-pre-release max are excluded', () {
100 var range = new VersionRange(max: v234);
101
102 expect(range, allows(new Version.parse('2.3.3')));
103 expect(range, doesNotAllow(
104 new Version.parse('2.3.4-dev'),
105 new Version.parse('2.3.4')));
106 });
107
108 test('pre-release versions of pre-release max are included', () {
109 var range = new VersionRange(max: new Version.parse('2.3.4-dev.2'));
110
111 expect(range, allows(
112 new Version.parse('2.3.4-dev.1')));
113 expect(range, doesNotAllow(
114 new Version.parse('2.3.4-dev.2'),
115 new Version.parse('2.3.4-dev.3')));
116 });
117
118 test('version must be max or less if includeMax', () {
119 var range = new VersionRange(min: v123, max: v234, includeMax: true);
120
121 expect(range, allows(
122 new Version.parse('2.3.3'),
123 new Version.parse('2.3.4'),
124 // Pre-releases of the max are allowed.
125 new Version.parse('2.3.4-dev')));
126 expect(range, doesNotAllow(new Version.parse('2.4.3')));
127 });
128
129 test('has no min if one was not set', () {
130 var range = new VersionRange(max: v123);
131
132 expect(range, allows(new Version.parse('0.0.0')));
133 expect(range, doesNotAllow(new Version.parse('1.2.3')));
134 });
135
136 test('has no max if one was not set', () {
137 var range = new VersionRange(min: v123);
138
139 expect(range, allows(
140 new Version.parse('1.3.3'),
141 new Version.parse('999.3.3')));
142 expect(range, doesNotAllow(new Version.parse('1.2.3')));
143 });
144
145 test('allows any version if there is no min or max', () {
146 var range = new VersionRange();
147
148 expect(range, allows(
149 new Version.parse('0.0.0'),
150 new Version.parse('999.99.9')));
151 });
152 });
153
154 group('intersect()', () {
155 test('two overlapping ranges', () {
156 var a = new VersionRange(min: v123, max: v250);
157 var b = new VersionRange(min: v200, max: v300);
158 var intersect = a.intersect(b);
159 expect(intersect.min, equals(v200));
160 expect(intersect.max, equals(v250));
161 expect(intersect.includeMin, isFalse);
162 expect(intersect.includeMax, isFalse);
163 });
164
165 test('a non-overlapping range allows no versions', () {
166 var a = new VersionRange(min: v114, max: v124);
167 var b = new VersionRange(min: v200, max: v250);
168 expect(a.intersect(b).isEmpty, isTrue);
169 });
170
171 test('adjacent ranges allow no versions if exclusive', () {
172 var a = new VersionRange(min: v114, max: v124, includeMax: false);
173 var b = new VersionRange(min: v124, max: v200, includeMin: true);
174 expect(a.intersect(b).isEmpty, isTrue);
175 });
176
177 test('adjacent ranges allow version if inclusive', () {
178 var a = new VersionRange(min: v114, max: v124, includeMax: true);
179 var b = new VersionRange(min: v124, max: v200, includeMin: true);
180 expect(a.intersect(b), equals(v124));
181 });
182
183 test('with an open range', () {
184 var open = new VersionRange();
185 var a = new VersionRange(min: v114, max: v124);
186 expect(open.intersect(open), equals(open));
187 expect(a.intersect(open), equals(a));
188 });
189
190 test('returns the version if the range allows it', () {
191 expect(new VersionRange(min: v114, max: v124).intersect(v123),
192 equals(v123));
193 expect(new VersionRange(min: v123, max: v124).intersect(v114).isEmpty,
194 isTrue);
195 });
196 });
197
198 test('isEmpty', () {
199 expect(new VersionRange().isEmpty, isFalse);
200 expect(new VersionRange(min: v123, max: v124).isEmpty, isFalse);
201 });
202 }
OLDNEW
« no previous file with comments | « test/version_constraint_test.dart ('k') | test/version_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698