1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
// KeyedCollectionTest.cs - NUnit Test Cases for System.Collections.ObjectModel.KeyedCollection
//
// Carlo Kok (ck@carlo-kok.com)
//
// (C) Carlo Kok
//
#if NET_2_0
using NUnit.Framework;
using System;
using System.Globalization;
using System.Collections.Generic;
using System.Collections.ObjectModel;
namespace MonoTests.System.Collections.ObjectModel
{
[TestFixture]
public class KeyedCollectionTest
{
private class CaseInsensitiveComparer : IEqualityComparer<string>
{
public CaseInsensitiveComparer () { }
#region IEqualityComparer<string> Members
public bool Equals (string x, string y)
{
return String.Compare (x, y, true,
CultureInfo.InvariantCulture) == 0;
}
public int GetHashCode (string obj)
{
return obj.ToUpper (CultureInfo.InvariantCulture).GetHashCode ();
}
#endregion
}
private class StrKeyCollection : KeyedCollection<string, string>
{
public StrKeyCollection (
IEqualityComparer<string> comparer,
int dictionaryCreationThreshold):
base (comparer, dictionaryCreationThreshold)
{
}
protected override string GetKeyForItem (string item)
{
return "Key:" + item;
}
public IDictionary<string, string> GetDictionary()
{
return Dictionary;
}
}
public KeyedCollectionTest ()
{
}
[Test]
public void TestDelete ()
{
StrKeyCollection collection =
new StrKeyCollection (EqualityComparer<string>.Default, 2);
collection.Add ("One"); // Key:First
collection.Add ("Two"); // Key:Two
Assert.IsTrue (collection.Remove ("Key:One"));
collection.Add ("Four"); // Key:Four
collection.Insert (2, "Three"); // Key:Three
Assert.IsTrue (collection.Remove ("Key:Three"));
Assert.IsFalse (collection.Remove ("Unknown"));
Assert.AreEqual (collection.GetDictionary ().Count, 2);
Assert.AreEqual (collection.Count, 2, "Collection count not equal to 2");
// check if all items are ordered correctly
Assert.AreEqual (collection [0], "Two");
Assert.AreEqual (collection [1], "Four");
Assert.AreEqual (collection ["Key:Two"], "Two");
Assert.AreEqual (collection ["Key:Four"], "Four");
try {
collection ["Key:One"].ToString();
Assert.Fail ("Unknown key should fail");
} catch (KeyNotFoundException e) {
e.ToString(); // avoid warning
// oke
}
try {
collection ["Key:One"].ToString();
Assert.Fail ("Unknown key should fail");
} catch (KeyNotFoundException e) {
e.ToString (); // avoid warning
// oke
}
}
[Test]
public void TestInsert ()
{
StrKeyCollection collection =
new StrKeyCollection(EqualityComparer<string>.Default, 2);
Assert.IsNull (collection.GetDictionary (),
"Dictionary created too early"); // There can't be a dictionary yet
collection.Add ("One"); // Key:First
Assert.IsNull (collection.GetDictionary(),
"Dictionary created too early"); // There can't be a dictionary yet
collection.Add ("Two"); // Key:Two
Assert.IsNull (collection.GetDictionary (),
"Dictionary created too early"); // There can't be a dictionary yet
collection.Add ("Four"); // Key:Four
Assert.IsNotNull(collection.GetDictionary (),
"Dictionary created too late"); // There must be a dictionary
collection.Insert (2, "Three"); // Key:Three
Assert.AreEqual (collection.Count, 4,
"Collection count not equal to 4");
// check if all items are ordered correctly
Assert.AreEqual (collection [0], "One");
Assert.AreEqual (collection [1], "Two");
Assert.AreEqual (collection [2], "Three");
Assert.AreEqual (collection [3], "Four");
Assert.AreEqual (collection ["Key:One"], "One");
Assert.AreEqual (collection ["Key:Two"], "Two");
Assert.AreEqual (collection ["Key:Three"], "Three");
Assert.AreEqual (collection ["Key:Four"], "Four");
Assert.AreEqual (collection.GetDictionary ().Count, 4);
try {
collection ["UnkownKey"].ToString();
Assert.Fail ("Unknown key should fail");
} catch(KeyNotFoundException e) {
e.ToString(); // avoid warning
// oke
}
}
}
}
#endif
|