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>); }
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); } }