1 //
2 // System.UIntPtrTest.cs - Unit test for UIntPtr
3 //
4 // Author
5 //	Sebastien Pouliot  <sebastien@ximian.com>
6 //
7 // Copyright (C) 2004 Novell (http://www.novell.com)
8 //
9 
10 using System;
11 using NUnit.Framework;
12 
13 namespace MonoTests.System  {
14 
15 	[TestFixture]
16 	public class UIntPtrTest  {
17 
18 		[Test]
19 		[ExpectedException (typeof (OverflowException))]
Test64on32()20 		public void Test64on32 ()
21 		{
22 			if (UIntPtr.Size > 4)
23 				throw new OverflowException ("Test only applicable to 32bits machines");
24 
25 			ulong addr = UInt32.MaxValue;
26 			UIntPtr p = new UIntPtr (addr + 1);
27 		}
28 
29 		[Test]
TestUlongOn32()30 		public void TestUlongOn32 ()
31 		{
32 			// int64 can be used (as a type) with a 32bits address
33 			ulong max32 = UInt32.MaxValue;
34 			UIntPtr p32max = new UIntPtr (max32);
35 
36 			ulong min32 = UInt32.MinValue;
37 			UIntPtr p32min = new UIntPtr (min32);
38 		}
39 
40 		[Test]
Test64on64()41 		public void Test64on64 ()
42 		{
43 			// for 64 bits machines
44 			if (UIntPtr.Size > 4) {
45 				UIntPtr pmax = new UIntPtr (UInt64.MaxValue);
46 				Assert.AreEqual (UInt64.MaxValue, (ulong) pmax, "Max");
47 
48 				UIntPtr pmin = new UIntPtr (UInt64.MinValue);
49 				Assert.AreEqual (UInt64.MinValue, (ulong) pmin, "Min");
50 			}
51 		}
52 
53 		[Test]
ToString()54 		public void ToString ()
55 		{
56 			// for 64 bits machines
57 			if (UIntPtr.Size > 4) {
58 				Assert.AreEqual (UInt64.MaxValue.ToString (), new UIntPtr (UInt64.MaxValue).ToString (), "#1");
59 			}
60 			else {
61 				Assert.AreEqual (UInt32.MaxValue.ToString (), new UIntPtr (UInt32.MaxValue).ToString (), "#2");
62 			}
63 		}
64 	}
65 }