public void DataKey_Equals ()
{
var dict = new OrderedDictionary ();
dict.Add ("key", "value");
dict.Add ("key1", "value1");
var key1 = new DataKey (dict);
dict = new OrderedDictionary ();
dict.Add ("key", "value");
dict.Add ("key1", "value1");
var key2 = new DataKey (dict);
Assert.IsTrue (key1.Equals (key2), "#A1-1");
Assert.IsTrue (key2.Equals (key1), "#A1-2");
dict = new OrderedDictionary ();
dict.Add ("key", "value");
dict.Add ("key1", "value1");
key1 = new DataKey (dict);
dict = new OrderedDictionary ();
dict.Add ("key2", "value2");
dict.Add ("key1", "value1");
key2 = new DataKey (dict);
Assert.IsFalse (key1.Equals (key2), "#A2-1");
Assert.IsFalse (key2.Equals (key1), "#A2-2");
dict = new OrderedDictionary ();
key1 = new DataKey (dict);
dict = new OrderedDictionary ();
dict.Add ("key1", "value1");
key2 = new DataKey (dict);
Assert.IsFalse (key1.Equals (key2), "#A3-1");
Assert.IsFalse (key2.Equals (key1), "#A3-2");
dict = new OrderedDictionary ();
key1 = new DataKey (dict);
dict = new OrderedDictionary ();
key2 = new DataKey (dict);
Assert.IsTrue (key1.Equals (key2), "#A4-1");
Assert.IsTrue (key2.Equals (key1), "#A4-2");
dict = new OrderedDictionary ();
key1 = new DataKey (null);
key2 = new DataKey (dict);
Assert.IsTrue (key1.Equals (key2), "#A5-1");
// Throws NREX on .NET
//Assert.IsTrue (key2.Equals (key1), "#A5-2");
key1 = new DataKey (null);
key2 = new DataKey (null);
Assert.IsTrue (key1.Equals (key2), "#A6-1");
Assert.IsTrue (key2.Equals (key1), "#A6-2");
dict = new OrderedDictionary ();
dict.Add ("key", "value");
dict.Add ("key1", "value1");
key1 = new DataKey (dict, new string[] { "key" });
dict = new OrderedDictionary ();
dict.Add ("key", "value");
dict.Add ("key1", "value1");
key2 = new DataKey (dict, new string[] { "key1" });
Assert.IsFalse (key1.Equals (key2), "#A7-1");
Assert.IsFalse (key2.Equals (key1), "#A7-2");
Assert.IsFalse (key1.Equals ((DataKey) null), "#A8");
dict = new OrderedDictionary ();
dict.Add ("key", "value");
dict.Add ("key1", "value1");
key1 = new DataKey (dict);
key2 = new DataKey (null);
// Throws NREX on .NET
//Assert.IsFalse (key1.Equals (key2), "#A8-1");
Assert.IsTrue (key2.Equals (key1), "#A8-2");
key1 = new DataKey (null);
Assert.IsFalse (key1.Equals ((DataKey) null), "#A9");
dict = new OrderedDictionary ();
key1 = new DataKey (dict, new string [] { "key" });
dict = new OrderedDictionary ();
key2 = new DataKey (dict, new string [] { "key1" });
Assert.IsFalse (key1.Equals (key2), "#A10-1");
Assert.IsFalse (key2.Equals (key1), "#A10-2");
dict = new OrderedDictionary ();
dict.Add ("KEY", "value");
dict.Add ("key1", "value1");
key1 = new DataKey (dict);
dict = new OrderedDictionary ();
dict.Add ("key", "value");
dict.Add ("key1", "value1");
key2 = new DataKey (dict);
Assert.IsFalse (key1.Equals (key2), "#A11-1");
Assert.IsFalse (key2.Equals (key1), "#A11-2");
dict = new OrderedDictionary ();
dict.Add ("key", "VALUE");
dict.Add ("key1", "value1");
key1 = new DataKey (dict);
dict = new OrderedDictionary ();
dict.Add ("key", "value");
dict.Add ("key1", "value1");
key2 = new DataKey (dict);
Assert.IsFalse (key1.Equals (key2), "#A12-1");
Assert.IsFalse (key2.Equals (key1), "#A12-2");
dict = new OrderedDictionary ();
dict.Add ("key", "value");
dict.Add ("key1", "value1");
key1 = new DataKey (dict);
dict = new OrderedDictionary ();
dict.Add ("key", "value");
dict.Add ("key1", "value1");
key2 = new DataKey (dict, new string [] { "key1" });
Assert.IsFalse (key1.Equals (key2), "#A13-1");
Assert.IsFalse (key2.Equals (key1), "#A13-2");
dict = new OrderedDictionary ();
key1 = new DataKey (dict, new string [] { "key" });
dict = new OrderedDictionary ();
key2 = new DataKey (dict, new string [] { "KEY" });
Assert.IsFalse (key1.Equals (key2), "#A14-1");
Assert.IsFalse (key2.Equals (key1), "#A14-2");
key1 = new DataKey (null, new string [] { "key" });
key2 = new DataKey (null, new string [] { "key" });
Assert.IsTrue (key1.Equals (key2), "#A15-1");
Assert.IsTrue (key2.Equals (key1), "#A15-2");
key1 = new DataKey (null, new string [] { "KEY" });
key2 = new DataKey (null, new string [] { "key" });
Assert.IsFalse (key1.Equals (key2), "#A16-1");
Assert.IsFalse (key2.Equals (key1), "#A16-2");
dict = new OrderedDictionary ();
dict.Add ("key", "value");
dict.Add ("key1", "value1");
key2 = new DataKey (dict, new string [] { });
dict = new OrderedDictionary ();
dict.Add ("key", "value");
dict.Add ("key1", "value1");
key1 = new DataKey (dict);
Assert.IsFalse (key1.Equals (key2), "#A17-1");
Assert.IsFalse (key2.Equals (key1), "#A17-2");
}