Merge pull request #2396 from akoeplinger/flaky-osx-socket-test
[mono.git] / mcs / class / System / Test / System.CodeDom / CodeExpressionCollectionTest.cs
1 //
2 // CodeExpressionCollectionTest.cs 
3 //      - Unit tests for System.CodeDom.CodeExpressionCollection
4 //
5 // Author:
6 //      Gert Driesen  <drieseng@users.sourceforge.net>
7 //
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
9 //
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
17 // 
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
20 // 
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //
29
30 using NUnit.Framework;
31
32 using System;
33 using System.Collections;
34 using System.CodeDom;
35
36 namespace MonoTests.System.CodeDom {
37         [TestFixture]
38         public class CodeExpressionCollectionTest {
39                 [Test]
40                 public void Constructor0 ()
41                 {
42                         CodeExpressionCollection coll = new CodeExpressionCollection ();
43                         Assert.IsFalse (((IList) coll).IsFixedSize, "#1");
44                         Assert.IsFalse (((IList) coll).IsReadOnly, "#2");
45                         Assert.AreEqual (0, coll.Count, "#3");
46                         Assert.IsFalse (((ICollection) coll).IsSynchronized, "#4");
47                 }
48
49                 [Test]
50                 public void Constructor1 ()
51                 {
52                         CodeExpression exp1 = new CodeExpression ();
53                         CodeExpression exp2 = new CodeExpression ();
54
55                         CodeExpression[] expressions = new CodeExpression[] { exp1, exp2 };
56                         CodeExpressionCollection coll = new CodeExpressionCollection (
57                                 expressions);
58
59                         Assert.AreEqual (2, coll.Count, "#1");
60                         Assert.AreEqual (0, coll.IndexOf (exp1), "#2");
61                         Assert.AreEqual (1, coll.IndexOf (exp2), "#3");
62                 }
63
64                 [Test]
65                 [ExpectedException (typeof (ArgumentNullException))]
66                 public void Constructor1_NullItem ()
67                 {
68                         CodeExpression[] expressions = new CodeExpression[] { 
69                                 new CodeExpression (), null };
70
71                         CodeExpressionCollection coll = new CodeExpressionCollection (
72                                 expressions);
73                 }
74
75                 [Test]
76                 [ExpectedException (typeof (ArgumentNullException))]
77                 public void Constructor1_Null () {
78                         CodeExpressionCollection coll = new CodeExpressionCollection (
79                                 (CodeExpression[]) null);
80                 }
81
82                 [Test]
83                 public void Constructor2 ()
84                 {
85                         CodeExpression exp1 = new CodeExpression ();
86                         CodeExpression exp2 = new CodeExpression ();
87
88                         CodeExpressionCollection c = new CodeExpressionCollection ();
89                         c.Add (exp1);
90                         c.Add (exp2);
91
92                         CodeExpressionCollection coll = new CodeExpressionCollection (c);
93                         Assert.AreEqual (2, coll.Count, "#1");
94                         Assert.AreEqual (0, coll.IndexOf (exp1), "#2");
95                         Assert.AreEqual (1, coll.IndexOf (exp2), "#3");
96                 }
97
98                 [Test]
99                 [ExpectedException (typeof (ArgumentNullException))]
100                 public void Constructor2_Null ()
101                 {
102                         CodeExpressionCollection coll = new CodeExpressionCollection (
103                                 (CodeExpressionCollection) null);
104                 }
105
106                 [Test]
107                 public void Add ()
108                 {
109                         CodeExpression exp1 = new CodeExpression ();
110                         CodeExpression exp2 = new CodeExpression ();
111
112                         CodeExpressionCollection coll = new CodeExpressionCollection ();
113                         Assert.AreEqual (0, coll.Add (exp1), "#1");
114                         Assert.AreEqual (1, coll.Count, "#2");
115                         Assert.AreEqual (0, coll.IndexOf (exp1), "#3");
116
117                         Assert.AreEqual (1, coll.Add (exp2), "#4");
118                         Assert.AreEqual (2, coll.Count, "#5");
119                         Assert.AreEqual (1, coll.IndexOf (exp2), "#6");
120                 }
121
122                 [Test]
123                 [ExpectedException (typeof (ArgumentNullException))]
124                 public void Add_Null () {
125                         CodeExpressionCollection coll = new CodeExpressionCollection ();
126                         coll.Add ((CodeExpression) null);
127                 }
128
129                 [Test]
130                 public void Insert ()
131                 {
132                         CodeExpression exp1 = new CodeExpression ();
133                         CodeExpression exp2 = new CodeExpression ();
134
135                         CodeExpressionCollection coll = new CodeExpressionCollection ();
136                         coll.Add (exp1);
137                         Assert.AreEqual (1, coll.Count, "#1");
138                         Assert.AreEqual (0, coll.IndexOf (exp1), "#2");
139                         coll.Insert (0, exp2);
140                         Assert.AreEqual (2, coll.Count, "#3");
141                         Assert.AreEqual (1, coll.IndexOf (exp1), "#4");
142                         Assert.AreEqual (0, coll.IndexOf (exp2), "#5");
143                 }
144
145                 [Test]
146                 [ExpectedException (typeof (ArgumentNullException))]
147                 public void Insert_Null ()
148                 {
149                         CodeExpressionCollection coll = new CodeExpressionCollection ();
150                         coll.Insert (0, (CodeExpression) null);
151                 }
152
153                 [Test]
154                 public void AddRange ()
155                 {
156                         CodeExpression exp1 = new CodeExpression ();
157                         CodeExpression exp2 = new CodeExpression ();
158                         CodeExpression exp3 = new CodeExpression ();
159
160                         CodeExpressionCollection coll1 = new CodeExpressionCollection ();
161                         coll1.Add (exp1);
162                         coll1.Add (exp2);
163
164                         CodeExpressionCollection coll2 = new CodeExpressionCollection ();
165                         coll2.Add (exp3);
166                         coll2.AddRange (coll1);
167                         Assert.AreEqual (3, coll2.Count, "#1");
168                         Assert.AreEqual (1, coll2.IndexOf (exp1), "#2");
169                         Assert.AreEqual (2, coll2.IndexOf (exp2), "#3");
170                         Assert.AreEqual (0, coll2.IndexOf (exp3), "#4");
171
172                         CodeExpressionCollection coll3 = new CodeExpressionCollection ();
173                         coll3.Add (exp3);
174                         coll3.AddRange (new CodeExpression[] { exp1, exp2 });
175                         Assert.AreEqual (3, coll2.Count, "#5");
176                         Assert.AreEqual (1, coll2.IndexOf (exp1), "#6");
177                         Assert.AreEqual (2, coll2.IndexOf (exp2), "#7");
178                         Assert.AreEqual (0, coll2.IndexOf (exp3), "#8");
179                 }
180
181                 [Test]
182                 [ExpectedException (typeof (ArgumentNullException))]
183                 public void AddRange_Null_Array ()
184                 {
185                         CodeExpressionCollection coll = new CodeExpressionCollection ();
186                         coll.AddRange ((CodeExpression[]) null);
187                 }
188
189                 [Test]
190                 [ExpectedException (typeof (ArgumentNullException))]
191                 public void AddRange_Null_Collection ()
192                 {
193                         CodeExpressionCollection coll = new CodeExpressionCollection ();
194                         coll.AddRange ((CodeExpressionCollection) null);
195                 }
196
197                 [Test]
198                 public void AddRange_Self ()
199                 {
200                         CodeExpressionCollection coll = new CodeExpressionCollection ();
201                         coll.Add (new CodeExpression ());
202                         Assert.AreEqual (1, coll.Count, "#1");
203                         coll.AddRange (coll);
204                         Assert.AreEqual (2, coll.Count, "#2");
205                 }
206
207                 [Test]
208                 public void Remove ()
209                 {
210                         CodeExpression ce1 = new CodeExpression ();
211                         CodeExpression ce2 = new CodeExpression ();
212
213                         CodeExpressionCollection coll = new CodeExpressionCollection ();
214                         coll.Add (ce1);
215                         coll.Add (ce2);
216                         Assert.AreEqual (2, coll.Count, "#1");
217                         Assert.AreEqual (0, coll.IndexOf (ce1), "#2");
218                         Assert.AreEqual (1, coll.IndexOf (ce2), "#3");
219                         coll.Remove (ce1);
220                         Assert.AreEqual (1, coll.Count, "#4");
221                         Assert.AreEqual (-1, coll.IndexOf (ce1), "#5");
222                         Assert.AreEqual (0, coll.IndexOf (ce2), "#6");
223                 }
224
225                 [Test]
226                 [ExpectedException (typeof (ArgumentException))]
227                 public void Remove_NotInCollection ()
228                 {
229                         CodeExpressionCollection coll = new CodeExpressionCollection ();
230                         coll.Remove (new CodeExpression ());
231                 }
232
233                 [Test]
234                 [ExpectedException (typeof (ArgumentNullException))]
235                 public void Remove_Null ()
236                 {
237                         CodeExpressionCollection coll = new CodeExpressionCollection ();
238                         coll.Remove ((CodeExpression) null);
239                 }
240         }
241 }