Beispiel #1
0
        public void ClassTest()
        {
            Assert.IsTrue(typeof(Shape).IsAbstract);
            Assert.IsNotNull(typeof(Shape).GetMethod("AsString"));

            var circle = new Circle(2f);

            Assert.AreEqual("A circle with radius 2", circle.AsString());
            Assert.IsTrue(circle is Shape);

            Assert.IsTrue(typeof(ShapeDecorator).IsAbstract);
            Assert.IsTrue(typeof(ShapeDecorator).IsSubclassOf(typeof(Shape)));

            Assert.IsTrue(typeof(ShapeDecoratorCyclePolicy).IsAbstract);
            Assert.IsTrue(typeof(ShapeDecoratorCyclePolicy).GetMethod("TypeAdditionAllowed").IsAbstract);
            Assert.IsTrue(typeof(ShapeDecoratorCyclePolicy).GetMethod("ApplicationAllowed").IsAbstract);

            Assert.IsTrue(typeof(CyclesAllowedPolicy).IsSubclassOf(typeof(ShapeDecoratorCyclePolicy)));
            Assert.IsTrue(typeof(ThrowOnCyclePolicy).IsSubclassOf(typeof(ShapeDecoratorCyclePolicy)));
            Assert.IsTrue(typeof(AbsorbCyclePolicy).IsSubclassOf(typeof(ShapeDecoratorCyclePolicy)));

            var colored1 = new ColoredShapeThrowOnCycle(circle, "red");

            Assert.IsTrue(colored1 is ShapeDecorator <ColoredShapeThrowOnCycle, ThrowOnCyclePolicy>);
        }
Beispiel #2
0
        public void TestThrowOnCycle()
        {
            var circle   = new Circle(2);
            var colored1 = new ColoredShapeThrowOnCycle(circle, "red");

            try
            {
                var colored2 = new ColoredShapeThrowOnCycle(colored1, "blue");
                Assert.Fail();
            }
            catch (Exception e)
            {
                Assert.IsTrue(e is InvalidOperationException);
            }
        }