+2003-06-13 Herve Poussineau <hpoussineau@fr.st>
+
+ * SortedList.cs: Can enumerate on DictionaryEntries, not only on
+ keys on values. Enumerate by default on DictionaryEntries.
+
2003-06-12 Duncan Mak <duncan@ximian.com>
* Hashtable.cs (constructor):
// \r
// Author:\r
// Sergey Chaban (serge@wildwestsoftware.com)\r
+// Duncan Mak (duncan@ximian.com)\r
+// Herve Poussineau (hpoussineau@fr.st\r
// \r
\r
\r
\r
private readonly static int INITIAL_SIZE = 16;\r
\r
- public enum EnumeratorMode : int {KEY_MODE = 0, VALUE_MODE}\r
+ public enum EnumeratorMode : int { KEY_MODE = 0, VALUE_MODE, ENTRY_MODE }\r
\r
private int inUse;\r
private int modificationCount;\r
\r
IEnumerator IEnumerable.GetEnumerator ()\r
{\r
- return new Enumerator (this, EnumeratorMode.KEY_MODE);\r
+ return new Enumerator (this, EnumeratorMode.ENTRY_MODE);\r
}\r
\r
\r
\r
public virtual IDictionaryEnumerator GetEnumerator ()\r
{\r
- return new Enumerator (this, EnumeratorMode.KEY_MODE);\r
+ return new Enumerator (this, EnumeratorMode.ENTRY_MODE);\r
}\r
\r
public virtual void Remove (object key)\r
\r
private object currentKey;\r
private object currentValue;\r
- \r
+\r
bool invalid = false;\r
\r
private readonly static string xstr = "SortedList.Enumerator: snapshot out of sync.";\r
}\r
\r
public Enumerator (SortedList host)\r
- : this (host, EnumeratorMode.KEY_MODE)\r
+ : this (host, EnumeratorMode.ENTRY_MODE)\r
{\r
}\r
\r
get {\r
if (invalid || pos >= size || pos == -1)\r
throw new InvalidOperationException (xstr);\r
- \r
- return (mode == EnumeratorMode.KEY_MODE)\r
- ? currentKey\r
- : currentValue;\r
+\r
+ switch (mode) {\r
+ case EnumeratorMode.KEY_MODE:\r
+ return currentKey;\r
+ case EnumeratorMode.VALUE_MODE:\r
+ return currentValue;\r
+ case EnumeratorMode.ENTRY_MODE:\r
+ return this.Entry;\r
+\r
+ default:\r
+ throw new NotSupportedException (mode + " is not a supported mode.");\r
+ }\r
}\r
}\r
}\r
+2003-06-14 Duncan Mak <duncan@ximian.com>
+
+ * SortedListTest.cs
+ (TestIndexer):
+ (TestEnumerator): Incorporated these two tests from Philippe
+ Lavoie <philippe.lavoie@cactus.ca>.
+
2003-06-12 Duncan Mak <duncan@ximian.com>
* HashtableTest.cs: Converted it to the new style of NUnit tests.
AssertEquals (1, -i);\r
}\r
\r
+ [Test]\r
+ public void TestIndexer ()\r
+ {\r
+ SortedList list = new SortedList ();\r
+\r
+ list.Add (1, new Queue ());\r
+ list.Add (2, new Hashtable ());\r
+ list.Add (3, new Stack ());\r
+\r
+ AssertEquals (typeof (Queue), list [1].GetType ());\r
+ AssertEquals (typeof (Hashtable), list [2].GetType ());\r
+ AssertEquals (typeof (Stack), list [3].GetType ()); \r
+ }\r
+\r
+ [Test]\r
+ public void TestEnumerator ()\r
+ {\r
+ SortedList list = new SortedList ();\r
+\r
+ list.Add (1, new Queue ());\r
+ list.Add (2, new Hashtable ());\r
+ list.Add (3, new Stack ());\r
+\r
+ foreach (DictionaryEntry d in list) {\r
+\r
+ int key = (int) d.Key;\r
+ Type value = d.Value.GetType ();\r
+\r
+ switch (key) {\r
+ case 1:\r
+ AssertEquals (typeof (Queue), value);\r
+ break;\r
+\r
+ case 2:\r
+ AssertEquals (typeof (Hashtable), value);\r
+ break;\r
+\r
+ case 3:\r
+ AssertEquals (typeof (Stack), value);\r
+ break;\r
+\r
+ default:\r
+ Fail ("This is incorrect: " + value.FullName);\r
+ break;\r
+ }\r
+ }\r
+ }\r
+\r
[Test]\r
public void TestRemove() {\r
SortedList sl1 = new SortedList(24);\r