2 // System.Runtime.Versioning.FrameworkNameTest class
5 // Marek Habersack <mhabersack@novell.com>
7 // Copyright (C) 2009 Novell, Inc (http://novell.com)
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 #if NET_4_0 && !MOBILE
32 using System.Runtime.Versioning;
35 using NUnit.Framework;
37 namespace MonoTests.System.Runtime.Versioning
40 public class FrameworkNameTest
42 void Throws<TEx> (string message, Action code)
45 Exception exception = null;
49 } catch (Exception ex) {
50 if (ex.GetType () != typeof (TEx)) {
57 if (exception != null)
58 Assert.Fail ("{0}{1}Expected exception {2}, got {3}",
59 message, Environment.NewLine, typeof (TEx), exception.GetType ());
61 Assert.Fail ("{0}{1}Expected exception {2}",
62 message, Environment.NewLine, typeof (TEx));
67 public void Constructor_String ()
71 Throws <ArgumentNullException> ("#A1", () => {
72 fn = new FrameworkName (null);
75 Throws<ArgumentException> ("#A1-1", () => {
76 fn = new FrameworkName (String.Empty);
79 Throws <ArgumentException> ("#A1-2", () => {
80 fn = new FrameworkName (".NETFramework");
83 Throws <ArgumentException> ("#A1-3", () => {
84 fn = new FrameworkName (".NETFramework,Ver=test");
87 Throws <ArgumentException> ("#A1-4", () => {
88 fn = new FrameworkName (".NETFramework,Version=A");
91 Throws <ArgumentException> ("#A1-5", () => {
92 fn = new FrameworkName ("Version=1.2,.NETFramework");
95 Throws <ArgumentException> ("#A1-6", () => {
96 fn = new FrameworkName (".NETFramework,Version=vA");
99 Throws <ArgumentException> ("#A1-7", () => {
100 fn = new FrameworkName (".NETFramework,Version=A.B");
103 Throws <ArgumentException> ("#A1-8", () => {
104 fn = new FrameworkName (".NETFramework,Version=vA.B");
107 Throws <ArgumentException> ("#A1-9", () => {
108 fn = new FrameworkName (".NETFramework,Version=VA.B");
111 Throws <ArgumentException> ("#A1-10", () => {
112 fn = new FrameworkName (".NETFramework,Version=vA.B.C");
115 Throws <ArgumentException> ("#A1-11", () => {
116 fn = new FrameworkName (".NETFramework,Version=vA.B.C.D");
119 Throws <ArgumentException> ("#A1-12", () => {
120 fn = new FrameworkName (".NETFramework,Version=2");
123 Throws <ArgumentException> ("#A1-13", () => {
124 fn = new FrameworkName (".NETFramework,Version=v2");
127 Throws <ArgumentException> ("#A1-14", () => {
128 fn = new FrameworkName (".NETFramework,Version=v2.0.1.A");
131 Throws <ArgumentException> ("#A1-15", () => {
132 fn = new FrameworkName (".NETFramework,Version=v2.0.1.0,Some=value");
135 Throws <ArgumentException> ("#A1-16", () => {
136 fn = new FrameworkName (".NETFramework,Version=v2.0.1.0,Profile=profile name, Extra=value");
139 Throws <ArgumentException> ("#A1-17", () => {
140 fn = new FrameworkName (".NETFramework,Profile=profile name");
143 Throws <ArgumentException> ("#A1-18", () => {
144 fn = new FrameworkName ("Profile=profile name,.NETFramework,Version=v2.0.1.0");
147 Throws <ArgumentException> ("#A1-19", () => {
148 var n = new FrameworkName (".NETFramework, ,Version=v2.0.1.0");
151 Throws <ArgumentException> ("#A1-20", () => {
152 fn = new FrameworkName (".NETFramework,Version=v2..0.1.0");
155 Throws <ArgumentException> ("#A1-21", () => {
156 fn = new FrameworkName (".NETFramework,Version=v.0.1.0");
159 Throws <ArgumentException> ("#A1-22", () => {
160 fn = new FrameworkName (".NETFramework,Version=v1.-2.1.0");
163 Throws <ArgumentException> ("#A1-23", () => {
164 fn = new FrameworkName (".NETFramework,Version=v0.0.0.0.0");
167 Throws <ArgumentException> ("#A1-24", () => {
168 fn = new FrameworkName (".NETFramework,Version=vA.0.0.0,Version=v1.2.3.4");
171 Throws <ArgumentException> ("#A1-25", () => {
172 fn = new FrameworkName (".NETFramework,Version=v0.0.0.0,Version=vA.2.3.4");
175 Throws <ArgumentException> ("#A1-26", () => {
176 fn = new FrameworkName ("Version=1.2,profile=test profile");
179 Throws<ArgumentException> ("#A1-27", () => {
180 fn = new FrameworkName (".NETFramework,Version=");
183 fn = new FrameworkName (".NETFramework=test,Version=3.5");
184 Assert.AreEqual (".NETFramework=test", fn.Identifier, "#A2-1");
185 Assert.IsTrue (fn.Version == new Version (3, 5), "#A2-2");
186 Assert.AreEqual (String.Empty, fn.Profile, "#A2-3");
187 Assert.AreEqual (".NETFramework=test,Version=v3.5", fn.FullName, "#A3-4");
189 fn = new FrameworkName (".NETFramework,Version=2.0");
190 Assert.AreEqual (".NETFramework", fn.Identifier, "#A3-1");
191 Assert.IsTrue (fn.Version == new Version (2, 0), "#A3-2");
192 Assert.AreEqual (String.Empty, fn.Profile, "#A3-3");
193 Assert.AreEqual (".NETFramework,Version=v2.0", fn.FullName, "#A3-4");
195 fn = new FrameworkName (".NETFramework,Version=v2.0");
196 Assert.AreEqual (".NETFramework", fn.Identifier, "#A4-1");
197 Assert.IsTrue (fn.Version == new Version (2, 0), "#A4-2");
198 Assert.AreEqual (String.Empty, fn.Profile, "#A4-3");
199 Assert.AreEqual (".NETFramework,Version=v2.0", fn.FullName, "#A4-4");
201 fn = new FrameworkName (".NETFramework,Version=v0.1");
202 Assert.AreEqual (".NETFramework", fn.Identifier, "#A5-1");
203 Assert.IsTrue (fn.Version == new Version (0, 1), "#A5-2");
204 Assert.AreEqual (String.Empty, fn.Profile, "#A5-3");
205 Assert.AreEqual (".NETFramework,Version=v0.1", fn.FullName, "#A5-4");
207 fn = new FrameworkName (".NETFramework,Version=v10.1");
208 Assert.AreEqual (".NETFramework", fn.Identifier, "#A6-1");
209 Assert.IsTrue (fn.Version == new Version (10, 1), "#A6-2");
210 Assert.AreEqual (String.Empty, fn.Profile, "#A6-3");
211 Assert.AreEqual (".NETFramework,Version=v10.1", fn.FullName, "#A6-4");
213 fn = new FrameworkName (".NETFramework,Version=V2.0");
214 Assert.AreEqual (".NETFramework", fn.Identifier, "#A7-1");
215 Assert.IsTrue (fn.Version == new Version (2, 0), "#A7-2");
216 Assert.AreEqual (String.Empty, fn.Profile, "#A7-3");
217 Assert.AreEqual (".NETFramework,Version=v2.0", fn.FullName, "#A7-4");
219 fn = new FrameworkName (".NETFramework,Version=v2.0.1");
220 Assert.AreEqual (".NETFramework", fn.Identifier, "#A8-1");
221 Assert.IsTrue (fn.Version == new Version (2, 0, 1), "#A8-2");
222 Assert.AreEqual (String.Empty, fn.Profile, "#A8-3");
223 Assert.AreEqual (".NETFramework,Version=v2.0.1", fn.FullName, "#A8-4");
225 fn = new FrameworkName (".NETFramework,Version=v2.0.1.0");
226 Assert.AreEqual (".NETFramework", fn.Identifier, "#A9-1");
227 Assert.IsTrue (fn.Version == new Version (2, 0, 1, 0), "#A9-2");
228 Assert.AreEqual (String.Empty, fn.Profile, "#A9-3");
229 Assert.AreEqual (".NETFramework,Version=v2.0.1.0", fn.FullName, "#A9-4");
231 fn = new FrameworkName (".NETFramework,Version=v2.0.1.0,Profile=profile name");
232 Assert.AreEqual (".NETFramework", fn.Identifier, "#A10-1");
233 Assert.IsTrue (fn.Version == new Version (2, 0, 1, 0), "#A10-2");
234 Assert.AreEqual ("profile name", fn.Profile, "#A10-3");
235 Assert.AreEqual (".NETFramework,Version=v2.0.1.0,Profile=profile name", fn.FullName, "#A10-4");
237 fn = new FrameworkName (".NETFramework,Version=v2. 0.1.0");
238 Assert.AreEqual (".NETFramework", fn.Identifier, "#A11-1");
239 Assert.IsTrue (fn.Version == new Version (2, 0, 1, 0), "#A11-2");
240 Assert.AreEqual (String.Empty, fn.Profile, "#A11-3");
241 Assert.AreEqual (".NETFramework,Version=v2.0.1.0", fn.FullName, "#A11-4");
243 fn = new FrameworkName (".NETFramework,Version=v0.0.0.0");
244 Assert.AreEqual (".NETFramework", fn.Identifier, "#A12-1");
245 Assert.IsTrue (fn.Version == new Version (0, 0, 0, 0), "#A12-2");
246 Assert.AreEqual (String.Empty, fn.Profile, "#A12-3");
247 Assert.AreEqual (".NETFramework,Version=v0.0.0.0", fn.FullName, "#A12-4");
249 fn = new FrameworkName (".NETFramework,Version=v0.0.0.0,Version=v1.2.3.4");
250 Assert.AreEqual (".NETFramework", fn.Identifier, "#A13-1");
251 Assert.IsTrue (fn.Version == new Version (1, 2, 3, 4), "#A13-2");
252 Assert.AreEqual (String.Empty, fn.Profile, "#A13-3");
253 Assert.AreEqual (".NETFramework,Version=v1.2.3.4", fn.FullName, "#A13-4");
255 fn = new FrameworkName ("identifier,verSION=1.2,PRofiLE=test profile");
256 Assert.AreEqual ("identifier", fn.Identifier, "#A14-1");
257 Assert.IsTrue (fn.Version == new Version (1, 2), "#A14-2");
258 Assert.AreEqual ("test profile", fn.Profile, "#A14-3");
259 Assert.AreEqual ("identifier,Version=v1.2,Profile=test profile", fn.FullName, "#A14-4");
261 fn = new FrameworkName ("identifier,Version=2.0,Profile=");
262 Assert.AreEqual ("identifier", fn.Identifier, "#A15-1");
263 Assert.IsTrue (fn.Version == new Version (2, 0), "#A15-2");
264 Assert.AreEqual (String.Empty, fn.Profile, "#A15-3");
265 Assert.AreEqual ("identifier,Version=v2.0", fn.FullName, "#A15-4");
269 public void Constructor_String_Version ()
273 Throws <ArgumentNullException> ("#A1-1", () => {
274 fn = new FrameworkName (null, new Version (2, 0));
277 Throws <ArgumentNullException> ("#A1-2", () => {
278 fn = new FrameworkName ("identifier", null);
281 Throws <ArgumentException> ("#A1-3", () => {
282 fn = new FrameworkName (String.Empty, new Version (2, 0));
285 var v = new Version (1,2,3,4);
286 fn = new FrameworkName ("identifier", v);
287 Assert.AreEqual ("identifier", fn.Identifier, "#A2-1");
288 Assert.IsTrue (fn.Version == v, "#A2-2");
289 Assert.AreEqual (String.Empty, fn.Profile, "#A2-3");
290 Assert.AreEqual ("identifier,Version=v1.2.3.4", fn.FullName, "#A2-4");
292 fn = new FrameworkName ("identifier,v2.0", v);
293 Assert.AreEqual ("identifier,v2.0", fn.Identifier, "#A3-1");
294 Assert.IsTrue (fn.Version == v, "#A3-2");
295 Assert.AreEqual (String.Empty, fn.Profile, "#A3-3");
296 Assert.AreEqual ("identifier,v2.0,Version=v1.2.3.4", fn.FullName, "#A3-4");
298 fn = new FrameworkName ("identifier,Version=v2.0", v);
299 Assert.AreEqual ("identifier,Version=v2.0", fn.Identifier, "#A4-1");
300 Assert.IsTrue (fn.Version == v, "#A4-2");
301 Assert.AreEqual (String.Empty, fn.Profile, "#A4-3");
302 Assert.AreEqual ("identifier,Version=v2.0,Version=v1.2.3.4", fn.FullName, "#A4-4");
306 public void Constructor_String_Version_String ()
309 var v = new Version (1, 2, 3, 4);
311 Throws <ArgumentNullException> ("#A1-1", () => {
312 fn = new FrameworkName (null, new Version (2, 0), "profile");
315 Throws <ArgumentNullException> ("#A1-2", () => {
316 fn = new FrameworkName ("identifier", null, "profile");
319 Throws <ArgumentException> ("#A1-3", () => {
320 fn = new FrameworkName (String.Empty, new Version (2, 0), "profile");
323 fn = new FrameworkName ("identifier,Version=v2.0", v, "Profile name");
324 Assert.AreEqual ("identifier,Version=v2.0", fn.Identifier, "#A2-1");
325 Assert.IsTrue (fn.Version == v, "#A2-2");
326 Assert.AreEqual ("Profile name", fn.Profile, "#A2-3");
327 Assert.AreEqual ("identifier,Version=v2.0,Version=v1.2.3.4,Profile=Profile name", fn.FullName, "#A2-4");
329 fn = new FrameworkName ("identifier,v2.0,profile=test", v, "Profile name");
330 Assert.AreEqual ("identifier,v2.0,profile=test", fn.Identifier, "#A3-1");
331 Assert.IsTrue (fn.Version == v, "#A3-2");
332 Assert.AreEqual ("Profile name", fn.Profile, "#A3-3");
333 Assert.AreEqual ("identifier,v2.0,profile=test,Version=v1.2.3.4,Profile=Profile name", fn.FullName, "#A3-4");
335 fn = new FrameworkName ("identifier,v2.0,profile=test", v, null);
336 Assert.AreEqual ("identifier,v2.0,profile=test", fn.Identifier, "#A4-1");
337 Assert.IsTrue (fn.Version == v, "#A4-2");
338 Assert.AreEqual (String.Empty, fn.Profile, "#A4-3");
339 Assert.AreEqual ("identifier,v2.0,profile=test,Version=v1.2.3.4", fn.FullName, "#A4-4");
341 fn = new FrameworkName ("identifier,v2.0,profile=test", v, String.Empty);
342 Assert.AreEqual ("identifier,v2.0,profile=test", fn.Identifier, "#A5-1");
343 Assert.IsTrue (fn.Version == v, "#A5-2");
344 Assert.AreEqual (String.Empty, fn.Profile, "#A5-3");
345 Assert.AreEqual ("identifier,v2.0,profile=test,Version=v1.2.3.4", fn.FullName, "#A5-4");
349 public void EqualityOperator ()
351 var fn = new FrameworkName ("identifier,Version=v2.0");
353 Assert.IsTrue (fn == new FrameworkName ("identifier,Version=v2.0"), "#A1");
355 FrameworkName fn1 = null;
356 FrameworkName fn2 = null;
358 Assert.IsTrue (fn1 == fn2, "#A2");
359 Assert.IsFalse (fn == new FrameworkName ("identifier,Version=v2.1"), "#A3");
360 Assert.IsFalse (fn == null, "#A4");
364 public void InequalityOperator ()
366 var fn = new FrameworkName ("identifier,Version=v2.0");
368 Assert.IsFalse (fn != new FrameworkName ("identifier,Version=v2.0"), "#A1");
370 FrameworkName fn1 = null;
371 FrameworkName fn2 = null;
373 Assert.IsFalse (fn1 != fn2, "#A2");
374 Assert.IsTrue (fn != new FrameworkName ("identifier,Version=v2.1"), "#A3");
375 Assert.IsTrue (fn != null, "#A4");
379 public void ToStringTest ()
381 var fn = new FrameworkName (".NETFramework,Version=v2.0.1");
382 Assert.AreEqual (".NETFramework,Version=v2.0.1", fn.FullName, "#A1-1");
383 Assert.AreEqual (fn.FullName, fn.ToString (), "#A1-2");
385 fn = new FrameworkName (".NETFramework,Version=v2.0.1.0");
386 Assert.AreEqual (".NETFramework,Version=v2.0.1.0", fn.FullName, "#A2-1");
387 Assert.AreEqual (fn.FullName, fn.ToString (), "#A2-2");