Merge pull request #900 from Blewzman/FixAggregateExceptionGetBaseException
[mono.git] / mcs / class / System / Test / System.ComponentModel / InvalidEnumArgumentExceptionTest.cs
1 //
2 // System.ComponentModel.InvalidEnumArgumentException test cases
3 //
4 // Authors:
5 //      Gert Driesen (drieseng@users.sourceforge.net)
6 //
7 // (c) 2007 Gert Driesen
8 //
9
10 using System;
11 using System.ComponentModel;
12 using System.Globalization;
13
14 using NUnit.Framework;
15
16 namespace MonoTests.System.ComponentModel
17 {
18         [TestFixture]
19         public class InvalidEnumArgumentExceptionTest
20         {
21                 [Test] // ctor ()
22                 public void Constructor0 ()
23                 {
24                         InvalidEnumArgumentException iea = new InvalidEnumArgumentException ();
25                         Assert.IsNull (iea.InnerException, "#1");
26                         Assert.IsNotNull (iea.Message, "#2");
27                         Assert.IsTrue (iea.Message.IndexOf (typeof (InvalidEnumArgumentException).FullName) != -1, "#3");
28                         Assert.IsNull (iea.ParamName, "#4");
29                 }
30
31                 [Test] // ctor (string)
32                 public void Constructor1 ()
33                 {
34                         InvalidEnumArgumentException iea;
35
36                         iea = new InvalidEnumArgumentException ("msg");
37                         Assert.IsNull (iea.InnerException, "#A1");
38                         Assert.IsNotNull (iea.Message, "#A2");
39                         Assert.AreEqual ("msg", iea.Message, "#A3");
40                         Assert.IsNull (iea.ParamName, "#A4");
41
42                         iea = new InvalidEnumArgumentException (string.Empty);
43                         Assert.IsNull (iea.InnerException, "#B1");
44                         Assert.IsNotNull (iea.Message, "#B2");
45                         Assert.AreEqual (string.Empty, iea.Message, "#B3");
46                         Assert.IsNull (iea.ParamName, "#B4");
47
48                         iea = new InvalidEnumArgumentException ((string) null);
49                         Assert.IsNull (iea.InnerException, "#C1");
50                         Assert.IsNotNull (iea.Message, "#C2");
51                         Assert.IsTrue (iea.Message.IndexOf (typeof (InvalidEnumArgumentException).FullName) != -1, "#C3");
52                         Assert.IsNull (iea.ParamName, "#C4");
53                 }
54
55                 // TODO: ctor (SerializationInfo, StreamingContext)
56
57 #if NET_2_0
58                 [Test] // ctor (string, Exception)
59                 public void Constructor3 ()
60                 {
61                         InvalidEnumArgumentException iea;
62                         Exception inner = new Exception ("INNER");
63
64                         iea = new InvalidEnumArgumentException ("msg", (Exception) null);
65                         Assert.IsNull (iea.InnerException, "#A1");
66                         Assert.IsNotNull (iea.Message, "#A2");
67                         Assert.AreEqual ("msg", iea.Message, "#A3");
68                         Assert.IsNull (iea.ParamName, "#A4");
69
70                         iea = new InvalidEnumArgumentException (string.Empty, inner);
71                         Assert.AreSame (inner, iea.InnerException, "#B1");
72                         Assert.IsNotNull (iea.Message, "#B2");
73                         Assert.AreEqual (string.Empty, iea.Message, "#B3");
74                         Assert.IsNull (iea.ParamName, "#B4");
75
76                         iea = new InvalidEnumArgumentException ((string) null, inner);
77                         Assert.AreSame (inner, iea.InnerException, "#C1");
78                         Assert.IsNotNull (iea.Message, "#C2");
79                         Assert.IsTrue (iea.Message.IndexOf (typeof (InvalidEnumArgumentException).FullName) != -1, "#C3");
80                         Assert.IsNull (iea.ParamName, "#C4");
81                 }
82 #endif
83
84                 [Test] // ctor (string, int, System.Type)
85                 public void Constructor4 ()
86                 {
87                         InvalidEnumArgumentException iea;
88                         Type enumClass = typeof (AttributeTargets);
89
90                         // The value of argument 'value' (667666) is invalid for
91                         // Enum type 'AttributeTargets'
92                         iea = new InvalidEnumArgumentException ("arg", 667666, enumClass);
93                         Assert.IsNull (iea.InnerException, "#A1");
94                         Assert.IsNotNull (iea.Message, "#A2");
95 #if NET_2_0
96                         Assert.IsTrue (iea.Message.IndexOf ("'arg'") != -1, "#A3");
97                         Assert.IsTrue (iea.Message.IndexOf ("(" + 667666.ToString (CultureInfo.CurrentCulture) + ")") != -1, "#A4");
98                         Assert.IsTrue (iea.Message.IndexOf ("'" + enumClass.Name + "'") != -1, "#A5");
99 #else
100                         Assert.IsTrue (iea.Message.IndexOf ("arg") != -1, "#A3");
101                         Assert.IsTrue (iea.Message.IndexOf (667666.ToString (CultureInfo.CurrentCulture)) != -1, "#A4");
102                         Assert.IsTrue (iea.Message.IndexOf (enumClass.Name) != -1, "#A5");
103 #endif
104                         Assert.IsNotNull (iea.ParamName, "#A6");
105                         Assert.AreEqual ("arg", iea.ParamName, "#A7");
106
107                         // The value of argument '' (0) is invalid for
108                         // Enum type 'AttributeTargets'
109                         iea = new InvalidEnumArgumentException (string.Empty, 0, enumClass);
110                         Assert.IsNull (iea.InnerException, "#B1");
111                         Assert.IsNotNull (iea.Message, "#B2");
112 #if NET_2_0
113                         Assert.IsTrue (iea.Message.IndexOf ("''") != -1, "#B3");
114                         Assert.IsTrue (iea.Message.IndexOf ("(" + 0.ToString (CultureInfo.CurrentCulture) + ")") != -1, "#B4");
115                         Assert.IsTrue (iea.Message.IndexOf ("'" + enumClass.Name + "'") != -1, "#B5");
116 #else
117                         Assert.IsTrue (iea.Message.IndexOf ("  ") != -1, "#B3");
118                         Assert.IsTrue (iea.Message.IndexOf (0.ToString (CultureInfo.CurrentCulture)) != -1, "#B4");
119                         Assert.IsTrue (iea.Message.IndexOf (enumClass.Name) != -1, "#B5");
120 #endif
121                         Assert.IsNotNull (iea.ParamName, "#B6");
122                         Assert.AreEqual (string.Empty, iea.ParamName, "#B7");
123
124                         // The value of argument '' (-56776) is invalid for Enum type
125                         // 'AttributeTargets'
126                         iea = new InvalidEnumArgumentException ((string) null, -56776, enumClass);
127                         Assert.IsNull (iea.InnerException, "#C1");
128                         Assert.IsNotNull (iea.Message, "#C2");
129 #if NET_2_0
130                         Assert.IsTrue (iea.Message.IndexOf ("''") != -1, "#C3");
131                         Assert.IsTrue (iea.Message.IndexOf ("(" + (-56776).ToString (CultureInfo.CurrentCulture) + ")") != -1, "#C4");
132                         Assert.IsTrue (iea.Message.IndexOf ("'" + enumClass.Name + "'") != -1, "#C5");
133 #else
134                         Assert.IsTrue (iea.Message.IndexOf ("  ") != -1, "#C3");
135                         Assert.IsTrue (iea.Message.IndexOf ((-56776).ToString (CultureInfo.CurrentCulture)) != -1, "#C4");
136                         Assert.IsTrue (iea.Message.IndexOf (enumClass.Name) != -1, "#C5");
137 #endif
138                         Assert.IsNull (iea.ParamName, "#C6");
139
140                         // The value of argument '' (0) is invalid for Enum type
141                         // 'AttributeTargets'
142                         iea = new InvalidEnumArgumentException ((string) null, 0, enumClass);
143                         Assert.IsNull (iea.InnerException, "#D1");
144                         Assert.IsNotNull (iea.Message, "#D2");
145 #if NET_2_0
146                         Assert.IsTrue (iea.Message.IndexOf ("''") != -1, "#D3");
147                         Assert.IsTrue (iea.Message.IndexOf ("(" + 0.ToString (CultureInfo.CurrentCulture) + ")") != -1, "#D4");
148                         Assert.IsTrue (iea.Message.IndexOf ("'" + enumClass.Name + "'") != -1, "#D5");
149 #else
150                         Assert.IsTrue (iea.Message.IndexOf ("  ") != -1, "#D3");
151                         Assert.IsTrue (iea.Message.IndexOf (0.ToString (CultureInfo.CurrentCulture)) != -1, "#D4");
152                         Assert.IsTrue (iea.Message.IndexOf (enumClass.Name) != -1, "#D5");
153 #endif
154                         Assert.IsNull (iea.ParamName, "#D6");
155                 }
156
157                 [Test] // ctor (string, int, System.Type)
158                 [ExpectedException (typeof (NullReferenceException))]
159                 public void Constructor4_EnumClass_Null ()
160                 {
161                         new InvalidEnumArgumentException ("param", 55, (Type) null);
162                 }
163         }
164 }