public void TestModification() { var col = new IgniteSessionStateItemCollection(); // Populate and check. col["key"] = "val"; col["1"] = 1; Assert.AreEqual("val", col["key"]); Assert.AreEqual(1, col["1"]); Assert.AreEqual(2, col.Count); Assert.IsTrue(col.Dirty); CollectionAssert.AreEquivalent(new[] {"key", "1"}, col); CollectionAssert.AreEquivalent(new[] {"key", "1"}, col.Keys); // Modify using index. col[0] = "val1"; col[1] = 2; Assert.AreEqual("val1", col["key"]); Assert.AreEqual(2, col["1"]); // Modify using key. col["1"] = 3; col["key"] = "val2"; Assert.AreEqual("val2", col["key"]); Assert.AreEqual(3, col["1"]); // CopyTo. var keys = new string[5]; col.CopyTo(keys, 2); Assert.AreEqual(new[] {null, null, "key", "1", null}, keys); // Remove. col["2"] = 2; col["3"] = 3; col.Remove("invalid"); Assert.AreEqual(4, col.Count); col.Remove("1"); Assert.AreEqual(new[] { "key", "2", "3" }, col.OfType<string>()); Assert.AreEqual(null, col["1"]); Assert.AreEqual("val2", col["key"]); Assert.AreEqual("val2", col[0]); Assert.AreEqual(2, col["2"]); Assert.AreEqual(2, col[1]); Assert.AreEqual(3, col["3"]); Assert.AreEqual(3, col[2]); // RemoveAt. col.RemoveAt(0); Assert.AreEqual(new[] { "2", "3" }, col.OfType<string>()); // Clear. Assert.AreEqual(2, col.Count); col.Clear(); Assert.AreEqual(0, col.Count); // Set dirty. var col1 = new IgniteSessionStateItemCollection {Dirty = true}; Assert.IsTrue(col1.Dirty); }