public void RuleTable_Concat() { var tbl1 = new RuleTable <int, string, object>(d => Expression.Constant(1), (d, s) => d); tbl1.Add <int>("foo", x => x); var tbl2 = new RuleTable <int, string, object>(d => Expression.Constant(1), (d, s) => d); tbl2.Add <int>("bar", x => x); var res = tbl1.Concat(tbl2); var e1 = res.GetEnumerator(); var e2 = ((IEnumerable)res).GetEnumerator(); Assert.IsTrue(e1.MoveNext()); Assert.IsTrue(e2.MoveNext()); var c1 = e1.Current; var c2 = (Rule <int, string, object>)e2.Current; Assert.AreEqual("foo", c1.Name); Assert.AreEqual("foo", c2.Name); Assert.IsTrue(e1.MoveNext()); Assert.IsTrue(e2.MoveNext()); var c3 = e1.Current; var c4 = (Rule <int, string, object>)e2.Current; Assert.AreEqual("bar", c3.Name); Assert.AreEqual("bar", c4.Name); Assert.IsFalse(e1.MoveNext()); Assert.IsFalse(e2.MoveNext()); Assert.ThrowsException <NotSupportedException>(() => res.Add <int>(x => x)); }