1 //
2 // GuidTest.cs - NUnit Test Cases for the System.Guid struct
3 //
4 // Authors:
5 //	Duco Fijma (duco@lorentz.xs4all.nl)
6 //	Sebastien Pouliot  <sebastien@ximian.com>
7 //
8 // (C) 2002 Duco Fijma
9 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
10 //
11 
12 using NUnit.Framework;
13 using System;
14 
15 namespace MonoTests.System {
16 
17 	[TestFixture]
18 	public class GuidTest {
19 
20 		[Test]
21 		[ExpectedException (typeof (ArgumentNullException))]
Constructor_ByteArray_Null()22 		public void Constructor_ByteArray_Null ()
23 		{
24 			new Guid ((byte[]) null);
25 		}
26 
27 		[Test]
28 		[ExpectedException (typeof (ArgumentException))]
Constructor_ByteArray_InvalidLength()29 		public void Constructor_ByteArray_InvalidLength ()
30 		{
31 			new Guid (new byte[] {0x00, 0x01, 0x02});
32 		}
33 
34 		[Test]
Constructor_ByteArray()35 		public void Constructor_ByteArray ()
36 		{
37 			Guid g =  new Guid (new byte[] {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f});
38 			Assert.AreEqual ("03020100-0504-0706-0809-0a0b0c0d0e0f", g.ToString ());
39 		}
40 
41 		[Test]
42 		[ExpectedException (typeof (ArgumentNullException))]
Constructor_String_Null()43 		public void Constructor_String_Null ()
44 		{
45 			new Guid ((string) null);
46 		}
47 
48 		[Test]
Constructor_String()49 		public void Constructor_String ()
50 		{
51 			Guid g0 = new Guid ("000102030405060708090a0b0c0d0e0f");
52 			Guid g1 = new Guid ("00010203-0405-0607-0809-0a0b0c0d0e0f");
53 			Guid g2 = new Guid ("{00010203-0405-0607-0809-0A0B0C0D0E0F}");
54 			Guid g3 = new Guid ("{0x00010203,0x0405,0x0607,{0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}}");
55 			Guid g4 = new Guid ("(00010203-0405-0607-0809-0A0B0C0D0E0F)");
56 			Guid g5 = new Guid ("\n  \r  \n 00010203-0405-0607-0809-0a0b0c0d0e0f \r\n");
57 			Guid g6 = new Guid ("\t {\t 0x00000001 , 0x0002 , \t 0x0003 \t , { 0x04 , 0x05 , \t 0x06\t,\t0x07 , 0x08 , 0x09 , 0x0a , 0x0b } \t }\t ");
58 			string expected = "00010203-0405-0607-0809-0a0b0c0d0e0f";
59 			Assert.AreEqual (expected, g0.ToString (), "A0");
60 			Assert.AreEqual (expected, g1.ToString (), "A1");
61 			Assert.AreEqual (expected, g2.ToString (), "A2");
62 			Assert.AreEqual (expected, g3.ToString (), "A3");
63 			Assert.AreEqual (expected, g4.ToString (), "A4");
64 			Assert.AreEqual (expected, g5.ToString (), "A5");
65 			Assert.AreEqual ("00000001-0002-0003-0405-060708090a0b", g6.ToString (), "A6");
66 		}
67 
68 		[Test]
69 		[ExpectedException (typeof (FormatException))]
Constructor_String_Invalid()70 		public void Constructor_String_Invalid ()
71 		{
72 			new Guid ("invalid");
73 		}
74 
75 		[Test]
76 		[ExpectedException (typeof (FormatException))]
Constructor_String_MissingAllSeparators()77 		public void Constructor_String_MissingAllSeparators ()
78 		{
79 			new Guid ("{000102030405060708090A0B0C0D0E0F}");	// missing all -
80 		}
81 
82 		[Test]
83 		[ExpectedException (typeof (FormatException))]
Constructor_String_MissingSeparator()84 		public void Constructor_String_MissingSeparator ()
85 		{
86 			new Guid ("000102030405-0607-0809-0a0b0c0d0e0f");	// missing first -
87 		}
88 
89 		[Test]
90 		[ExpectedException (typeof (FormatException))]
Constructor_String_Mismatch()91 		public void Constructor_String_Mismatch ()
92 		{
93 			new Guid ("(000102030405-0607-0809-0a0b0c0d0e0f}");	// open (, close }
94 		}
95 
96 		[Test]
Constructor_Int32_2xInt16_8xByte()97 		public void Constructor_Int32_2xInt16_8xByte ()
98 		{
99 			Guid g1 = new Guid (0x00010203, (short) 0x0405, (short) 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
100 			Guid g2 = new Guid (unchecked ((int) 0xffffffff), unchecked ((short) 0xffff), unchecked((short) 0xffff), 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff);
101 			Guid g3 = new Guid (0x00010203u, (ushort) 0x0405u, (ushort) 0x0607u, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
102 			Guid g4 = new Guid (0xffffffffu, (ushort) 0xffffu, (ushort) 0xffffu, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff);
103 
104 			Assert.AreEqual ("00010203-0405-0607-0809-0a0b0c0d0e0f", g1.ToString (), "A1");
105 			Assert.AreEqual ("ffffffff-ffff-ffff-ffff-ffffffffffff", g2.ToString (), "A2");
106 			Assert.AreEqual ("00010203-0405-0607-0809-0a0b0c0d0e0f", g1.ToString (), "A3");
107 			Assert.AreEqual ("ffffffff-ffff-ffff-ffff-ffffffffffff", g2.ToString (), "A4");
108 		}
109 
110 		[Test]
Constructor_UInt32_2xUInt16_8xByte()111 		public void Constructor_UInt32_2xUInt16_8xByte ()
112 		{
113 			Guid g1 = new Guid (0x00010203u, (ushort) 0x0405u, (ushort) 0x0607u, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
114 			Guid g2 = new Guid (0xffffffffu, (ushort) 0xffffu, (ushort) 0xffffu, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff);
115 
116 			Assert.AreEqual ("00010203-0405-0607-0809-0a0b0c0d0e0f", g1.ToString (), "A1");
117 			Assert.AreEqual ("ffffffff-ffff-ffff-ffff-ffffffffffff", g2.ToString (), "A2");
118 		}
119 
120 		[Test]
Constructor_Int32_2xInt16_ByteArray()121 		public void Constructor_Int32_2xInt16_ByteArray ()
122 		{
123 			Guid g1 = new Guid (0x00010203, (short) 0x0405, (short) 0x0607, new byte[] { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f });
124 			Guid g2 = new Guid (unchecked ((int) 0xffffffff), unchecked ((short) 0xffff), unchecked((short) 0xffff), new byte[] { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff });
125 
126 			Assert.AreEqual ("00010203-0405-0607-0809-0a0b0c0d0e0f", g1.ToString (), "A1");
127 			Assert.AreEqual ("ffffffff-ffff-ffff-ffff-ffffffffffff", g2.ToString (), "A2");
128 		}
129 
130 		[Test]
Empty()131 		public void Empty ()
132 		{
133 			Assert.AreEqual ("00000000-0000-0000-0000-000000000000", Guid.Empty.ToString (), "ToString");
134 			Assert.AreEqual (new byte [16], Guid.Empty.ToByteArray (), "ToByteArray");
135 		}
136 
137 		[Test]
NewGuid()138 		public void NewGuid ()
139 		{
140 			Guid g1 = Guid.NewGuid ();
141 			Guid g2 = Guid.NewGuid ();
142 			Assert.IsFalse (g1 == g2);
143 		}
144 
145 		[Test]
NewGuid_Stressed()146 		public void NewGuid_Stressed ()
147 		{
148 			for (int i = 0; i < 256; i++) {
149 				Guid g = Guid.NewGuid ();
150 				Assert.AreNotEqual (0, g.CompareTo (Guid.Empty), i.ToString ());
151 			}
152 		}
153 
154 #pragma warning disable 1718
155 		[Test]
EqualityOp()156 		public void EqualityOp ()
157 		{
158 			Guid g1 = new Guid (0x00010203, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
159 			Guid g2 = new Guid (0x00010203, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
160 			Guid g3 = new Guid (0x11223344, 0x5566, 0x6677, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff);
161 
162 			Assert.IsTrue (g1 == g1, "A1");
163 			Assert.IsTrue (g1 == g2, "A2");
164 			Assert.IsFalse (g1 == g3, "A3");
165 		}
166 
167 		[Test]
InequalityOp()168 		public void InequalityOp ()
169 		{
170 			Guid g1 = new Guid (0x00010203, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
171 			Guid g2 = new Guid (0x00010203, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
172 			Guid g3 = new Guid (0x11223344, 0x5566, 0x6677, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff);
173 
174 			Assert.IsFalse (g1 != g1, "A1");
175 			Assert.IsFalse (g1 != g2, "A2");
176 			Assert.IsTrue (g1 != g3, "A3");
177 		}
178 #pragma warning restore 1718
179 
180 		[Test]
EqualsObject()181 		public void EqualsObject ()
182 		{
183 			Guid g1 = new Guid (0x00010203, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
184 			Guid g2 = new Guid (0x00010203, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
185 			Guid g3 = new Guid (0x11223344, 0x5566, 0x6677, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff);
186 			// cast everything to object so the test still works under 2.0
187 			Assert.IsTrue (g1.Equals ((object)g1), "A1");
188 			Assert.IsTrue (g1.Equals ((object)g2), "A2");
189 			Assert.IsFalse (g1.Equals ((object)g3), "A3");
190 			Assert.IsFalse (g1.Equals ((object)null), "A4");
191 			Assert.IsFalse (g1.Equals ((object)"This is not a Guid!"), "A5");
192 		}
193 
194 
195 		[Test]
EqualsGuid()196 		public void EqualsGuid ()
197 		{
198 			Guid g1 = new Guid (0x00010203, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
199 			Guid g2 = new Guid (0x00010203, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
200 			Guid g3 = new Guid (0x11223344, 0x5566, 0x6677, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff);
201 
202 			Assert.IsTrue (g1.Equals (g1), "A1");
203 			Assert.IsTrue (g1.Equals (g2), "A2");
204 			Assert.IsFalse (g1.Equals (g3), "A3");
205 			Assert.IsFalse (g1.Equals (null), "A4");
206 			Assert.IsFalse (g1.Equals ("This is not a Guid!"), "A5");
207 		}
208 
209 		[Test]
CompareToObject()210 		public void CompareToObject ()
211 		{
212 			Guid g1 = new Guid (0x00010203, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
213 			Guid g2 = new Guid (0x00010204, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
214 			Guid g3 = new Guid (0x00010203, 0x0405, 0x0607, 0x09, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
215 			Guid g4 = new Guid (0x00010203, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x1f);
216 			// cast everything to object so the test still works under 2.0
217 			Assert.IsTrue (g1.CompareTo ((object)g2) < 0, "A1");
218 			Assert.IsTrue (g1.CompareTo ((object)g3) < 0, "A2");
219 			Assert.IsTrue (g1.CompareTo ((object)g4) < 0, "A3");
220 			Assert.IsTrue (g2.CompareTo ((object)g1) > 0, "A4");
221 			Assert.IsTrue (g3.CompareTo ((object)g1) > 0, "A5");
222 			Assert.IsTrue (g4.CompareTo ((object)g1) > 0, "A6");
223 			Assert.IsTrue (g1.CompareTo ((object)g1) == 0, "A7");
224 			Assert.IsTrue (g1.CompareTo ((object)null) > 0, "A8");
225 		}
226 
227 		[Test]
228 		[ExpectedException (typeof (ArgumentException))]
CompareToObject_Invalid()229 		public void CompareToObject_Invalid ()
230 		{
231 			Guid.Empty.CompareTo ("Say what?");
232 		}
233 
234 		[Test]
CompareToGuid()235 		public void CompareToGuid ()
236 		{
237 			Guid g1 = new Guid (0x00010203, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
238 			Guid g2 = new Guid (0x00010204, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
239 			Guid g3 = new Guid (0x00010203, 0x0405, 0x0607, 0x09, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
240 			Guid g4 = new Guid (0x00010203, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x1f);
241 
242 			Assert.IsTrue (g1.CompareTo (g2) < 0, "A1");
243 			Assert.IsTrue (g1.CompareTo (g3) < 0, "A2");
244 			Assert.IsTrue (g1.CompareTo (g4) < 0, "A3");
245 			Assert.IsTrue (g2.CompareTo (g1) > 0, "A4");
246 			Assert.IsTrue (g3.CompareTo (g1) > 0, "A5");
247 			Assert.IsTrue (g4.CompareTo (g1) > 0, "A6");
248 			Assert.IsTrue (g1.CompareTo (g1) == 0, "A7");
249 		}
250 
251 		[Test]
CompareToGuid_2()252 		public void CompareToGuid_2 ()
253 		{
254 			var g1 = new Guid ("d1c5088bc188464fb77b0fd2be2d005e");
255 			var g2 = new Guid ("d2c5088bc188464fb77b0fd2be2d005e");
256 			var g3 = new Guid ("00c5088bc188464fb77b0fd2be2d005e");
257 
258 			Assert.AreEqual (-1, g1.CompareTo (g2), "#1");
259 			Assert.AreEqual (1, g1.CompareTo (g3), "#2");
260 			Assert.AreEqual (1, g1.CompareTo (Guid.Empty), "#3");
261 		}
262 
263 		[Test]
GetHashCode_Same()264 		public void GetHashCode_Same ()
265 		{
266 			Guid copy = new Guid (Guid.Empty.ToString ());
267 			Assert.AreEqual (Guid.Empty.GetHashCode (), copy.GetHashCode (), "GetHashCode");
268 		}
269 
270 		[Test]
GetHashCode_Different()271 		public void GetHashCode_Different ()
272 		{
273 			Guid g = Guid.NewGuid ();
274 			Assert.IsFalse (Guid.Empty.GetHashCode () == g.GetHashCode (), "GetHashCode");
275 		}
276 
277 		[Test]
ToByteArray()278 		public void ToByteArray ()
279 		{
280 			Guid g1 = new Guid (0x00010203, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
281 			byte[] expected = new byte[] { 0x03, 0x02, 0x01, 0x00, 0x05, 0x04, 0x07, 0x06, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F };
282 			Assert.AreEqual (expected, g1.ToByteArray (), "ToByteArray");
283 		}
284 
285 		[Test]
ToString_AllFormats()286 		public void ToString_AllFormats ()
287 		{
288 			Guid g = new Guid (0x00010203, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
289 			Assert.AreEqual ("00010203-0405-0607-0809-0a0b0c0d0e0f", g.ToString (), "A1");
290 			Assert.AreEqual ("000102030405060708090a0b0c0d0e0f", g.ToString ("N"), "A2");
291 			Assert.AreEqual ("00010203-0405-0607-0809-0a0b0c0d0e0f", g.ToString ("D"), "A3");
292 			Assert.AreEqual ("{00010203-0405-0607-0809-0a0b0c0d0e0f}", g.ToString ("B"), "A4");
293 			Assert.AreEqual ("(00010203-0405-0607-0809-0a0b0c0d0e0f)", g.ToString ("P"), "A5");
294 			Assert.AreEqual ("00010203-0405-0607-0809-0a0b0c0d0e0f", g.ToString (""), "A6");
295 			Assert.AreEqual ("00010203-0405-0607-0809-0a0b0c0d0e0f", g.ToString ((string)null), "A7");
296 			Assert.AreEqual ("{00010203-0405-0607-0809-0a0b0c0d0e0f}", g.ToString ("B", null), "A10");
297 			Assert.AreEqual ("{0x00010203,0x0405,0x0607,{0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}}", g.ToString ("x"), "A11");
298 			Assert.AreEqual ("{0x00010203,0x0405,0x0607,{0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}}", g.ToString ("X"), "A11");
299 		}
300 
301 
302 		[Test]
303 		[ExpectedException (typeof (FormatException))]
ToString_InvalidFormat()304 		public void ToString_InvalidFormat ()
305 		{
306 			new Guid (0x00010203, 0x0405, 0x0607, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f).ToString ("This is invalid");
307 		}
308 
309 		[Test]
310 		[ExpectedException (typeof (FormatException))]
ParseExtraJunkN()311 		public void ParseExtraJunkN ()
312 		{
313 			new Guid ("000102030405060708090a0b0c0d0e0faaaaaa");
314 		}
315 
316 		[Test]
317 		[ExpectedException (typeof (FormatException))]
ParseExtraJunkD()318 		public void ParseExtraJunkD ()
319 		{
320 			new Guid ("00010203-0405-0607-0809-0a0b0c0d0e0faaaaaa");
321 		}
322 
323 		[Test]
324 		[ExpectedException (typeof (FormatException))]
ParseExtraJunkB()325 		public void ParseExtraJunkB ()
326 		{
327 			new Guid ("{00010203-0405-0607-0809-0A0B0C0D0E0F}aaaa");
328 		}
329 
330 		[Test]
331 		[ExpectedException (typeof (FormatException))]
ParseExtraJunkP()332 		public void ParseExtraJunkP ()
333 		{
334 			new Guid ("(00010203-0405-0607-0809-0A0B0C0D0E0F)aaaa");
335 		}
336 
337 		[Test]
338 		[ExpectedException (typeof (FormatException))]
ParseExtraJunkX()339 		public void ParseExtraJunkX ()
340 		{
341 			new Guid ("{0x00010203,0x0405,0x0607,{0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}}aaaa");
342 		}
343 
344 
345 		/*
346 			N = new Guid ("000102030405060708090a0b0c0d0e0f");
347 			D = new Guid ("00010203-0405-0607-0809-0a0b0c0d0e0f");
348 			B = new Guid ("{00010203-0405-0607-0809-0A0B0C0D0E0F}");
349 			P = new Guid ("(00010203-0405-0607-0809-0A0B0C0D0E0F)");
350 			X = new Guid ("{0x00010203,0x0405,0x0607,{0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}}");
351 
352 			string expected = "00010203-0405-0607-0809-0a0b0c0d0e0f";
353 		*/
354 
355 		[Test]
ParseExact()356 		public void ParseExact ()
357 		{
358 			const string expected = "00010203-0405-0607-0809-0a0b0c0d0e0f";
359 
360 			var guid = Guid.ParseExact ("000102030405060708090a0b0c0d0e0f", "N");
361 			Assert.AreEqual (expected, guid.ToString ());
362 
363 			guid = Guid.ParseExact ("00010203-0405-0607-0809-0a0b0c0d0e0f", "D");
364 			Assert.AreEqual (expected, guid.ToString ());
365 
366 			guid = Guid.ParseExact ("00010203-0405-0607-0809-0a0b0c0d0e0f", "d");
367 			Assert.AreEqual (expected, guid.ToString ());
368 
369 			guid = Guid.ParseExact ("{00010203-0405-0607-0809-0A0B0C0D0E0F}", "B");
370 			Assert.AreEqual (expected, guid.ToString ());
371 
372 			guid = Guid.ParseExact ("{00010203-0405-0607-0809-0A0B0C0D0E0F}", "b");
373 			Assert.AreEqual (expected, guid.ToString ());
374 
375 			guid = Guid.ParseExact ("(00010203-0405-0607-0809-0A0B0C0D0E0F)", "P");
376 			Assert.AreEqual (expected, guid.ToString ());
377 
378 			guid = Guid.ParseExact ("{0x00010203,0x0405,0x0607,{0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}}", "X");
379 			Assert.AreEqual (expected, guid.ToString ());
380 
381 			guid = Guid.ParseExact ("\t {\t 0x00000001 , 0x0002 , \t 0x0003 \t , { 0x04 , 0x05 , \t 0x06\t,\t0x07 , 0x08 , 0x09 , 0x0a , 0x0b } \t }\t ", "X");
382 			Assert.AreEqual ("00000001-0002-0003-0405-060708090a0b", guid.ToString (), "#8");
383 		}
384 
385 		[Test]
Parse()386 		public void Parse ()
387 		{
388 			var guid = Guid.Parse ("\t {\t 0x00000001 , 0x0002 , \t 0x0003 \t , { 0x04 , 0x05 , \t 0x06\t,\t0x07 , 0x08 , 0x09 , 0x0a , 0x0b } \t }\t ");
389 			Assert.AreEqual ("00000001-0002-0003-0405-060708090a0b", guid.ToString (), "#1");
390 		}
391 
392 		[Test]
393 		[ExpectedException (typeof (FormatException))]
ParseError_1()394 		public void ParseError_1 ()
395 		{
396 			Guid.Parse("08888888-0444-444-0444-012121212121");
397 		}
398 
399 		[Test]
400 		[ExpectedException (typeof (FormatException))]
ParseExactN()401 		public void ParseExactN ()
402 		{
403 			Guid.ParseExact ("00010203-0405-0607-0809-0a0b0c0d0e0f", "N");
404 		}
405 
406 		[Test]
407 		[ExpectedException (typeof (FormatException))]
ParseExactD()408 		public void ParseExactD ()
409 		{
410 			Guid.ParseExact ("{0x00010203,0x0405,0x0607,{0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}}", "D");
411 		}
412 
413 		[Test]
TryParse()414 		public void TryParse()
415 		{
416 			Guid guid;
417 			Assert.IsFalse (Guid.TryParse(null, out guid), "A1");
418 			Assert.AreEqual (Guid.Empty, guid, "A2");
419 			Assert.IsFalse (Guid.TryParse("", out guid), "A3");
420 			Assert.AreEqual (Guid.Empty, guid, "A4");
421 			Assert.IsFalse (Guid.TryParse("foobar", out guid), "A5");
422 			Assert.AreEqual (Guid.Empty, guid, "A6");
423 			Assert.IsFalse (Guid.TryParse ("08888888-0444-444-0444-012121212121", out guid), "A7");
424 		}
425 
426 		[Test]
TryParseExact()427 		public void TryParseExact()
428 		{
429 			Guid guid;
430 			Assert.IsFalse (Guid.TryParseExact(null, null, out guid), "A1");
431 			Assert.AreEqual (Guid.Empty, guid, "A2");
432 			Assert.IsFalse (Guid.TryParseExact("", null, out guid), "A3");
433 			Assert.AreEqual (Guid.Empty, guid, "A4");
434 			Assert.IsFalse (Guid.TryParseExact("foobar", null, out guid), "A5");
435 			Assert.AreEqual (Guid.Empty, guid, "A6");
436 		}
437 	}
438 }
439