* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / tests / gtest-247.cs
1 using System;
2 using System.Diagnostics;
3 using SCG = System.Collections.Generic;
4
5 public abstract class EnumerableBase<T> : SCG.IEnumerable<T>
6 {
7         public abstract SCG.IEnumerator<T> GetEnumerator ();
8
9         System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator ()
10         {
11                 return GetEnumerator ();
12         }
13 }
14
15 public abstract class CollectionValueBase<T> : EnumerableBase<T>
16 {
17         protected virtual void raiseItemsAdded (T item, int count)
18         { }
19
20         protected class RaiseForRemoveAllHandler
21         {
22                 CircularQueue<T> wasRemoved;
23         }
24
25         public override abstract SCG.IEnumerator<T> GetEnumerator();
26 }
27
28 public class CircularQueue<T> : EnumerableBase<T>
29 {
30         public override SCG.IEnumerator<T> GetEnumerator()
31         {
32                 yield break;
33         }
34
35         public virtual void Enqueue (T item)
36         { }
37 }
38
39 public class HashSet<T> : CollectionValueBase<T>
40 {
41         private bool searchoradd (ref T item, bool add, bool update, bool raise)
42         {
43                 return true;
44         }
45
46         public virtual void RemoveAll<U>(SCG.IEnumerable<U> items) where U : T
47         {
48                 RaiseForRemoveAllHandler raiseHandler = new RaiseForRemoveAllHandler ();
49         }
50
51         public virtual void AddAll<U> (SCG.IEnumerable<U> items)
52                 where U : T
53         {
54                 CircularQueue<T> wasAdded = new CircularQueue<T> ();
55
56                 foreach (T item in wasAdded)
57                         raiseItemsAdded (item, 1);
58         }
59
60         public override SCG.IEnumerator<T> GetEnumerator()
61         {
62                 yield break;
63         }
64 }
65
66 class X
67 {
68         static void Main ()
69         { }
70 }