public void TestGenericInstanceCreation()
        {
            ConcretePrototype template = new ConcretePrototype(42);

            IAbstractFactory <IProduct> factory = new PrototypeFactory <
                IProduct, ConcretePrototype
                >(template);

            IProduct factoryCreatedProduct = factory.CreateInstance();

            Assert.AreEqual(template.Value, factoryCreatedProduct.Value);
        }
        public void TestPrototypeDisposal()
        {
            ConcretePrototype template = new ConcretePrototype(42);

            PrototypeFactory <IProduct, ConcretePrototype> factory = new PrototypeFactory <
                IProduct, ConcretePrototype
                >(template);

            Assert.IsFalse(template.IsDisposed);
            factory.Dispose();
            Assert.IsTrue(template.IsDisposed);
        }