67870d3edb2f564023335dfe08b2caf7086bc8d8
[mono.git] / mcs / class / corlib / Test / System / ObjectTest.cs
1 // ObjectTest.cs - NUnit Test Cases for the System.Object struct\r
2 //\r
3 // David Brandt (bucky@keystreams.com)\r
4 //\r
5 // (C) Ximian, Inc.  http://www.ximian.com\r
6 // \r
7 \r
8 using NUnit.Framework;\r
9 using System;\r
10 using System.Globalization;\r
11 \r
12 namespace MonoTests.System\r
13 {\r
14 \r
15 public class ObjectTest : TestCase\r
16 {\r
17         public ObjectTest() {}\r
18 \r
19         protected override void SetUp() \r
20         {\r
21         }\r
22 \r
23         protected override void TearDown() \r
24         {\r
25         }\r
26 \r
27         public void TestCtor() {\r
28                 Object o = new Object();\r
29                 AssertNotNull("Can I at least get an _Object_, please?", o);\r
30         }\r
31 \r
32         public void TestEquals1() {\r
33                 {\r
34                         Object x = new Object();\r
35                         Object y = new Object();\r
36                         Assert("Object should equal itself",\r
37                                x.Equals(x));\r
38                         Assert("object should not equal null",\r
39                                !x.Equals(null));\r
40                         Assert("Different objects should not equal 1",\r
41                                !x.Equals(y));\r
42                         Assert("Different objects should not equal 2",\r
43                                !y.Equals(x));\r
44                 }\r
45                 {\r
46                         double x = Double.NaN;\r
47                         double y = Double.NaN;\r
48                         Assert("NaNs should always equal each other",\r
49                                ((Object)x).Equals(y));\r
50                 }\r
51         }\r
52         public void TestEquals2() {\r
53                 {\r
54                         Object x = new Object();\r
55                         Object y = new Object();\r
56                         Assert("Object should equal itself",\r
57                                Object.Equals(x,x));\r
58                         Assert("object should not equal null",\r
59                                !Object.Equals(x,null));\r
60                         Assert("null should not equal object",\r
61                                !Object.Equals(null,x));\r
62                         Assert("Different objects should not equal 1",\r
63                                !Object.Equals(x,y));\r
64                         Assert("Different objects should not equal 2",\r
65                                !Object.Equals(y,x));\r
66                         Assert("null should not equal null",\r
67                                Object.Equals(null,null));\r
68                 }\r
69                 {\r
70                         double x = Double.NaN;\r
71                         double y = Double.NaN;\r
72                         Assert("NaNs should always equal each other",\r
73                                Object.Equals(x,y));\r
74                 }\r
75         }\r
76 \r
77         public void TestGetHashCode() {\r
78                 Object x = new Object();\r
79                 AssertEquals("Object's hash code should not change",\r
80                              x.GetHashCode(), x.GetHashCode());\r
81         }\r
82 \r
83         public void TestGetType() {\r
84                 Object x = new Object();\r
85                 AssertNotNull("Should get a type for Object", x.GetType());\r
86                 AssertEquals("Bad name for Object type", "System.Object",\r
87                              x.GetType().ToString());\r
88         }\r
89 \r
90         public void TestReferenceEquals() {\r
91                 Object x = new Object();\r
92                 Object y = new Object();\r
93                 Assert("Object should equal itself",\r
94                        Object.ReferenceEquals(x,x));\r
95                 Assert("object should not equal null",\r
96                        !Object.ReferenceEquals(x,null));\r
97                 Assert("null should not equal object",\r
98                        !Object.ReferenceEquals(null,x));\r
99                 Assert("Different objects should not equal 1",\r
100                        !Object.ReferenceEquals(x,y));\r
101                 Assert("Different objects should not equal 2",\r
102                        !Object.ReferenceEquals(y,x));\r
103                 Assert("null should not equal null",\r
104                        Object.ReferenceEquals(null,null));\r
105         }\r
106 \r
107         public void TestToString() {\r
108                 Object x = new Object();\r
109                 Object y = new Object();\r
110                 AssertEquals("All Objects should have same string rep",\r
111                              x.ToString(), y.ToString());\r
112         }\r
113 }\r
114 }\r