Beispiel #1
0
        public void RuleTable_Extend()
        {
            var tbl = new RuleTable <int, string, object>(d => Expression.Constant(1), (d, s) => d);

            tbl.Add <int>("foo", x => x);

            var ext = tbl.Extend();

            ext.Add <int>("bar", x => x);

            var e1 = ext.GetEnumerator();
            var e2 = ((IEnumerable)ext).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());
        }