public void GetInner_Call_On_InnerObject_Returns_InnerObject()
        {
            // Arrange
            DummyAggregatedClass dummyInnerObject = new DummyAggregatedClass();
            IBaseInterface       dummyBase        = dummyInnerObject as IBaseInterface;

            // Act
            DummyAggregatedClass innerObject = Decorator.GetInner(dummyBase) as DummyAggregatedClass;

            // Assert
            Assert.Same(dummyInnerObject, innerObject);
        }
        public void GetInner_Returns_Inner_Object_From_ObjectWrapper_Which_Wraps_Itself()
        {
            // Arrange
            DummyAggregatedClass dummyInnerObject = new DummyAggregatedClass();
            DummyBaseWrapper     dummyBaseWrapper = new DummyBaseWrapper(dummyInnerObject);
            IBaseInterface       dummyBase        = dummyBaseWrapper as IBaseInterface;

            // Act
            DummyBaseWrapper innerObject = Decorator.GetInner(dummyBase) as DummyBaseWrapper;

            // Assert
            Assert.Same(dummyBaseWrapper, innerObject);
        }
        public void GetInner_Returns_InnerMost_Object_From_ObjectWrapper()
        {
            // Arrange
            DummyAggregatedClass    dummyInnerObject        = new DummyAggregatedClass();
            DummyObjectWrapper      dummyObjectWrapper      = new DummyObjectWrapper(dummyInnerObject);
            DummyDoubleLayerWrapper dummyDoubleLayerWrapper = new DummyDoubleLayerWrapper(dummyObjectWrapper);
            IBaseInterface          dummyBase = dummyDoubleLayerWrapper as IBaseInterface;

            // Act
            DummyAggregatedClass innerObject = Decorator.GetInner(dummyBase) as DummyAggregatedClass;

            // Assert
            Assert.Same(dummyInnerObject, innerObject);
        }