public void SplitDictionary() { Dictionary<Int32, String> input1 = new Dictionary<int, string>(4) { { 1, "one" }, { 5, "five" }, { 9, "nine" }, { 0, "zero" } }; Dictionary<Int32, String> left_output1; Dictionary<Int32, String> right_output1; input1.SplitDictionary<Dictionary<Int32, String>, Int32, String>(1, CollectionTools.SplitterDisposition.ToLast, out left_output1, out right_output1); CollectionAssert.AreEqual(new Dictionary<Int32, String>(), left_output1); CollectionAssert.AreEqual(input1, right_output1); input1.SplitDictionary<Dictionary<Int32, String>, Int32, String>(1, CollectionTools.SplitterDisposition.ToFirst, out left_output1, out right_output1); CollectionAssert.AreEqual(new Dictionary<Int32, String>(1) { { 1, "one" } }, left_output1); CollectionAssert.AreEqual(new Dictionary<int, string>(3) { { 5, "five" }, { 9, "nine" }, { 0, "zero" } }, right_output1); input1.SplitDictionary<Dictionary<Int32, String>, Int32, String>(1, CollectionTools.SplitterDisposition.Reject, out left_output1, out right_output1); CollectionAssert.AreEqual(new Dictionary<Int32, String>(0), left_output1); CollectionAssert.AreEqual(new Dictionary<int, string>(3) { { 5, "five" }, { 9, "nine" }, { 0, "zero" } }, right_output1); TestDelegate td = new TestDelegate(delegate() { input1.SplitDictionary<Dictionary<Int32, String>, Int32, String>(100, CollectionTools.SplitterDisposition.ToFirst, out left_output1, out right_output1); }); Assert.Throws<ArgumentException>(td); }