Merge pull request #1899 from saper/resgencond
[mono.git] / mcs / class / Mono.Parallel / Test / Mono.Collections.Concurrent / ConcurrentSkipListTests.cs
1 // ConcurrentSkipListTests.cs
2 //
3 // Copyright (c) 2008 Jérémie "Garuma" Laval
4 //
5 // Permission is hereby granted, free of charge, to any person obtaining a copy
6 // of this software and associated documentation files (the "Software"), to deal
7 // in the Software without restriction, including without limitation the rights
8 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 // copies of the Software, and to permit persons to whom the Software is
10 // furnished to do so, subject to the following conditions:
11 //
12 // The above copyright notice and this permission notice shall be included in
13 // all copies or substantial portions of the Software.
14 //
15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 // THE SOFTWARE.
22 //
23 //
24
25 using System;
26 using System.Threading;
27 using System.Collections.Concurrent;
28 using Mono.Collections.Concurrent;
29
30 using NUnit;
31 using NUnit.Framework;
32
33 namespace MonoTests.Mono.Collections.Concurrent
34 {
35         [TestFixtureAttribute]
36         public class ConcurrentSkipListTests
37         {
38                 ConcurrentSkipList<int> skiplist;
39
40                 [SetUpAttribute]
41                 public void Setup()
42                 {
43                         skiplist = new ConcurrentSkipList<int>();
44                 }
45
46                 void AddStuff()
47                 {
48                         skiplist.TryAdd(1);
49                         skiplist.TryAdd(2);
50                         skiplist.TryAdd(3);
51                         skiplist.TryAdd(4);
52                 }
53
54                 [TestAttribute]
55                 public void AddTestCase()
56                 {
57                         Assert.IsTrue(skiplist.TryAdd(1), "#1");
58                         Assert.AreEqual(1, skiplist.Count, "#2");
59                 }
60
61                 [TestAttribute]
62                 public void RemoveTestCase()
63                 {
64                         Assert.IsFalse(skiplist.Remove(2), "#1");
65                         Assert.IsFalse(skiplist.Remove(3), "#2");
66                         
67                         AddStuff();
68                         int count = skiplist.Count;
69                         Assert.IsTrue(skiplist.Remove(1), "#3");
70                         Assert.IsFalse(skiplist.Remove(1), "#4");
71                         Assert.IsTrue(skiplist.Remove(4), "#5");
72                         Assert.AreEqual(count - 2, skiplist.Count, "#6");
73                 }
74                 
75                 [Test]
76                 public void ContainsTestCase()
77                 {
78                         AddStuff();
79                         Assert.IsTrue(skiplist.Contains(1), "#1");
80                         Assert.IsTrue(skiplist.Contains(2), "#2");
81                         Assert.IsTrue(skiplist.Contains(3), "#3");
82                         Assert.IsTrue(skiplist.Contains(4), "#4");
83                 }
84
85                 [TestAttribute]
86                 public void EnumerateTestCase()
87                 {
88                         AddStuff();
89                         
90                         string s = string.Empty;
91                         foreach (int i in skiplist)
92                                 s += i.ToString();
93
94                         Assert.AreEqual("1234", s);
95                 }
96
97                 [TestAttribute]
98                 public void ToArrayTestCase()
99                 {
100                         int[] expected = new int[] { 1, 2, 3, 4 };
101                         AddStuff();
102                         int[] array = skiplist.ToArray();
103                         CollectionAssert.AreEqual(expected, array, "#1");
104
105                         Array.Clear(array, 0, array.Length);
106                         skiplist.CopyTo(array, 0);
107                         CollectionAssert.AreEqual(expected, array, "#2");
108                 }
109                  
110         }
111 }