Ejemplo n.º 1
0
        public void IfIsATest()
        {
            Base s1 = new Sub1();
            Base s2 = new Sub2();
            Base s3 = new Sub3();

            s1.IfIsA((Sub1 s) => { s.Value = 2; });
            Assert.AreEqual(2, ((Sub1)s1).Value);
            s2.IfIsA((Sub1 s) => { s.Value = 3; });
            Assert.AreEqual(42, ((Sub2)s2).Value);

            Assert.AreEqual(2, s1.IfIsA((Sub1 s) => s.Value));
            Assert.AreEqual(0, s1.IfIsA((Sub2 s) => s.Value));

            Assert.AreEqual(2, s1.IfIsA((Sub1 s) => s.Value,
                                        (Sub2 s) => s.Value));
            Assert.AreEqual(42, s2.IfIsA((Sub1 s) => s.Value,
                                         (Sub2 s) => s.Value));
            Assert.AreEqual(0, s3.IfIsA((Sub1 s) => s.Value,
                                        (Sub2 s) => s.Value));
        }