// TODO: add tests for Comparer and HashCodeProvider
using System;
using System.Collections;
using NUnit.Framework;
namespace MonoTests.System.Collections {
/// Hashtable test.
public class HashtableTest : TestCase {
public static ITest Suite {
get {
TestSuite suite = new TestSuite();
suite.AddTest(new TestSuite(typeof(HashtableTest)));
suite.AddTest(new TestSuite(typeof(HashtableTest2)));
return suite;
}
}
protected Hashtable ht;
private static Random rnd;
public HashtableTest(String name) : base(name) {}
protected override void SetUp() {
ht=new Hashtable();
rnd=new Random();
}
private void SetDefaultData() {
ht.Clear();
ht.Add("k1","another");
ht.Add("k2","yet");
ht.Add("k3","hashtable");
}
public void TestAddRemoveClear() {
ht.Clear();
Assert(ht.Count==0);
SetDefaultData();
Assert(ht.Count==3);
bool thrown=false;
try {
ht.Add("k2","cool");
} catch (ArgumentException) {thrown=true;}
Assert("Must throw ArgumentException!",thrown);
ht["k2"]="cool";
Assert(ht.Count==3);
Assert(ht["k2"].Equals("cool"));
}
public void TestCopyTo() {
SetDefaultData();
Object[] entries=new Object[ht.Count];
ht.CopyTo(entries,0);
Assert("Not an entry.",entries[0] is DictionaryEntry);
}
public void TestUnderHeavyLoad() {
ht.Clear();
int max=100000;
String[] cache=new String[max*2];
int n=0;
for (int i=0;i=r1 && i=r1 && i
/// Test hashtable with CaseInsensitiveHashCodeProvider
/// and CaseInsensitive comparer.
///
public void TestCaseInsensitive ()
{
// Not very meaningfull test, just to make
// sure that hcp is set properly set.
Hashtable ciHashtable = new Hashtable(11,1.0f,CaseInsensitiveHashCodeProvider.Default,CaseInsensitiveComparer.Default);
ciHashtable ["key1"] = "value";
ciHashtable ["key2"] = "VALUE";
Assert(ciHashtable ["key1"].Equals ("value"));
Assert(ciHashtable ["key2"].Equals ("VALUE"));
ciHashtable ["KEY1"] = "new_value";
Assert(ciHashtable ["key1"].Equals ("new_value"));
}
public void TestCopyConstructor ()
{
SetDefaultData ();
Hashtable htCopy = new Hashtable (ht);
Assert(ht.Count == htCopy.Count);
}
public void TestEnumerator ()
{
SetDefaultData ();
IEnumerator e = ht.GetEnumerator ();
while (e.MoveNext ()) {}
Assert (!e.MoveNext ());
}
}
}
}