public void ReturnsPlanWiithPropertyPlans()
        {
            //Arrange
            var creator = new Genesis.Creator();

            //Act
            var plan = creator.CreatePlanFor(typeof(ComplexClass));

            //Assert
            Assert.AreEqual(5, plan.PropertyPlans.Count());
        }
        public void ReturnsAPlanUsingAGenericGenerator()
        {
            //Arrange
            var creator = new Genesis.Creator();

            //Act
            var plan = creator.CreatePlanFor(typeof(SimpleClass));

            //Assert
            Assert.AreEqual(typeof(IntelligentDesign), plan.GeneratorType);
        }
        public void ReturnsAPlan()
        {
            //Arrange
            var creator = new Genesis.Creator();

            //Act
            var plan = creator.CreatePlanFor(typeof(SimpleClass));

            //Assert
            Assert.IsNotNull(plan);
        }
        public void ReturnsAPlanForTheType()
        {
            //Arrange
            var creator = new Genesis.Creator();

            //Act
            var plan = creator.CreatePlanFor(typeof(SimpleClass));

            //Assert
            Assert.AreEqual(typeof(SimpleClass), plan.ForType);
        }
        public void ReturnsNull()
        {
            //Arrange
            var creator = new Genesis.Creator();

            //Act
            var design = creator.GetRegisteredDesignFor(typeof(SimpleClass));

            //Assert
            Assert.IsNull(design);
        }
        public void ReturnsPlanWiithGenericPropertyPlans()
        {
            //Arrange
            var creator = new Genesis.Creator();

            //Act
            var plan = creator.CreatePlanFor(typeof(ComplexClass));

            //Assert
            foreach (var propPlan in plan.PropertyPlans)
                Assert.AreEqual(propPlan.Plan.GeneratorType, typeof(IntelligentDesign));
        }
Example #7
0
        public void ReturnsRegisteredDesign()
        {
            //Arrange
            var creator = new Genesis.Creator();
            creator.RegisterDesign(new EmptyDesignForSimpleClass());

            //Act
            var design = creator.GetRegisteredDesignFor(typeof(SimpleClass));

            //Assert
            Assert.IsInstanceOfType(design, typeof(EmptyDesignForSimpleClass));
        }
Example #8
0
        public void ReturnsAPlanUsingTheSpecifiedGenerator()
        {
            //Arrange
            var creator = new Genesis.Creator();
            creator.RegisterDesign(new EmptyDesignForSimpleClass());

            //Act
            var plan = creator.CreatePlanFor(typeof(SimpleClass));

            //Assert
            Assert.AreEqual(typeof(EmptyDesignForSimpleClass), plan.GeneratorType);
        }
Example #9
0
        public void ReturnsNewObjectOfRegisteredType()
        {
            //Arrange
            var creator = new Genesis.Creator();
            creator.RegisterDesign(new EmptyDesignForSimpleClass());

            //Act
            var simpleClass = creator.Create(typeof(SimpleClass));

            //Assert
            Assert.IsInstanceOfType(simpleClass, typeof(SimpleClass));
        }
Example #10
0
        public void RegistersEachDesign()
        {
            //Arrange
            var creator = new Genesis.Creator();
            var designs = new List<IntelligentDesign>() { new EmptyDesignForSimpleClass(), new DesignForRecursiveClass() };

            //Act
            creator.RegisterDesigns(designs);

            //Assert
            var design = creator.GetRegisteredDesignFor(typeof(SimpleClass));
            Assert.IsInstanceOfType(design, typeof(EmptyDesignForSimpleClass));
            design = creator.GetRegisteredDesignFor(typeof(RecursiveClass));
            Assert.IsInstanceOfType(design, typeof(DesignForRecursiveClass));
        }
Example #11
0
        public void ReturnsPlanWiithSpecificMutationPropertyPlans()
        {
            //Arrange
            var creator = new Genesis.Creator();
            creator.RegisterDesign(new DesignForComplexClass());
            creator.RegisterDesign(new StringDesign());

            //Act
            var plan = creator.CreatePlanFor(typeof(ComplexClass));

            //Assert
            foreach (var propPlan in plan.PropertyPlans)
            {
                var mutationType = typeof(IntelligentMutation<>).MakeGenericType(new[] { propPlan.Property.PropertyType });
                Assert.AreEqual(propPlan.Plan.GeneratorType, mutationType);
            }
        }
Example #12
0
        public void ReturnsPopulatedObject()
        {
            //Arrange
            var creator = new Genesis.Creator();
            creator.RegisterDesign(new DesignForComplexClass());
            creator.RegisterDesign(new StringDesign());

            //Act
            var complexClass = creator.Create(typeof(ComplexClass)) as ComplexClass;

            //Assert
            Assert.AreEqual(DateTime.Parse("08/13/1977"), complexClass.Date);
            Assert.AreEqual(Guid.Parse("FBB49DE7-B6C3-4340-8595-45E19817147C"), complexClass.Id);
            Assert.AreEqual("My Complex Class", complexClass.Name);
            Assert.AreEqual(10, complexClass.Number);
            Assert.AreEqual("One", complexClass.Ids.ElementAt(0));
            Assert.AreEqual("Two", complexClass.Ids.ElementAt(1));
            Assert.AreEqual("Three", complexClass.Ids.ElementAt(2));
        }
Example #13
0
        public void ReturnsListOfPopulatedObject()
        {
            //Arrange
            var creator = new Genesis.Creator();
            creator.RegisterDesign(new DesignForComplexClass());

            //Act
            var complexClassList = creator.Create(typeof(IEnumerable<ComplexClass>)) as IEnumerable<ComplexClass>;

            foreach (var item in complexClassList)
            {
                Assert.AreEqual(DateTime.Parse("08/13/1977"), item.Date);
                Assert.AreEqual(Guid.Parse("FBB49DE7-B6C3-4340-8595-45E19817147C"), item.Id);
                Assert.AreEqual("My Complex Class", item.Name);
                Assert.AreEqual(10, item.Number);
                Assert.AreEqual("One", item.Ids.ElementAt(0));
                Assert.AreEqual("Two", item.Ids.ElementAt(1));
                Assert.AreEqual("Three", item.Ids.ElementAt(2));
            }
        }