public void EnableTest()
        {
            // arrange
            var layerPart = new LayerPartTester <object, object>();
            var host      = new object();

            // act
            layerPart.Enable(host, null);

            // assert
            Assert.AreSame(host, layerPart.Host);
            Assert.IsTrue(layerPart.IsEnabled);
            Assert.IsTrue(layerPart.EnableWasCalled);
        }
        public void EnablePartTest()
        {
            // arrange
            var layerPart1 = new LayerPartTester <object, object>();

            layerPart1.Enable(null, null);
            var host = new object();

            // act
            var layerPart2 = layerPart1.TestEnablePart <LayerPartTester <object, object> >(host);

            // assert
            Assert.IsTrue(layerPart2.IsEnabled);
            Assert.AreSame(host, layerPart2.Host);
        }
        public void DoubleEnableTest()
        {
            // arrange
            InvalidOperationException expectedException = null;
            var layerPart = new LayerPartTester <object, object>();

            layerPart.Enable(new object(), null);

            // act
            try
            {
                // try to start the LayerPart a second time...
                layerPart.Enable(null, null);
            }
            catch (InvalidOperationException ex)
            {
                expectedException = ex;
            }


            // assert
            Assert.IsNotNull(expectedException);
            Assert.IsNotNull(layerPart.Host);
        }