public void GenerateFamilyCreatesElsaJohnsonAsGrandMother()
        {
            PersonGenerator generator   = new PersonGenerator();
            Person          grandMother = generator.GenerateFamily().Father.Mother;

            Assert.AreEqual("Elsa", grandMother.FirstName);
            Assert.AreEqual("Johnson", grandMother.LastName);
            Assert.AreEqual(65, grandMother.Age);

            // TestTools Code
            UnitTest test = Factory.CreateTest();
            TestVariable <PersonGenerator> _generator   = test.CreateVariable <PersonGenerator>(nameof(_generator));
            TestVariable <Person>          _grandMother = test.CreateVariable <Person>(nameof(_grandMother));

            test.Arrange(_generator, Expr(() => new PersonGenerator()));
            test.Arrange(_grandMother, Expr(_generator, g => g.GenerateFamily().Father.Mother));
            test.Assert.AreEqual(Const("Elsa"), Expr(_grandMother, p => p.FirstName));
            test.Assert.AreEqual(Const("Johnson"), Expr(_grandMother, p => p.LastName));
            test.Assert.AreEqual(Const(65), Expr(_grandMother, p => p.Age));
            test.Execute();
        }
        public void GenerateFamilyCreatesGustavRichAsGrandfather()
        {
            PersonGenerator generator   = new PersonGenerator();
            Person          grandFather = generator.GenerateFamily().Father.Father;

            Assert.AreEqual("Gustav", grandFather.FirstName);
            Assert.AreEqual("Rich", grandFather.LastName);
            Assert.AreEqual(66, grandFather.Age);

            // TestTools Code
            UnitTest test = Factory.CreateTest();
            TestVariable <PersonGenerator> _generator   = test.CreateVariable <PersonGenerator>(nameof(_generator));
            TestVariable <Person>          _grandFather = test.CreateVariable <Person>(nameof(_grandFather));

            test.Arrange(_generator, Expr(() => new PersonGenerator()));
            test.Arrange(_grandFather, Expr(_generator, g => g.GenerateFamily().Father.Father));
            test.Assert.AreEqual(Const("Gustav"), Expr(_grandFather, p => p.FirstName));
            test.Assert.AreEqual(Const("Rich"), Expr(_grandFather, p => p.LastName));
            test.Assert.AreEqual(Const(66), Expr(_grandFather, p => p.Age));
            test.Execute();
        }
        public void GenerateFamilyCreatesRobinRichAsFather()
        {
            PersonGenerator generator = new PersonGenerator();
            Person          father    = generator.GenerateFamily().Father;

            Assert.AreEqual("Warren", father.FirstName);
            Assert.AreEqual("Rich", father.LastName);
            Assert.AreEqual(36, father.Age);

            // TestTools Code
            UnitTest test = Factory.CreateTest();
            TestVariable <PersonGenerator> _generator = test.CreateVariable <PersonGenerator>(nameof(_generator));
            TestVariable <Person>          _father    = test.CreateVariable <Person>(nameof(_father));

            test.Arrange(_generator, Expr(() => new PersonGenerator()));
            test.Arrange(_father, Expr(_generator, g => g.GenerateFamily().Father));
            test.Assert.AreEqual(Const("Warren"), Expr(_father, p => p.FirstName));
            test.Assert.AreEqual(Const("Rich"), Expr(_father, p => p.LastName));
            test.Assert.AreEqual(Const(36), Expr(_father, p => p.Age));
            test.Execute();
        }
        public void GenerateFamilyCreatesAnnaRichAsMother()
        {
            PersonGenerator generator = new PersonGenerator();
            Person          mother    = generator.GenerateFamily().Mother;

            Assert.AreEqual("Anna", mother.FirstName);
            Assert.AreEqual("Smith", mother.LastName);
            Assert.AreEqual(38, mother.Age);

            // TestTools Code
            UnitTest test = Factory.CreateTest();
            TestVariable <PersonGenerator> _generator = test.CreateVariable <PersonGenerator>(nameof(_generator));
            TestVariable <Person>          _mother    = test.CreateVariable <Person>(nameof(_mother));

            test.Arrange(_generator, Expr(() => new PersonGenerator()));
            test.Arrange(_mother, Expr(_generator, g => g.GenerateFamily().Mother));
            test.Assert.AreEqual(Const("Anna"), Expr(_mother, p => p.FirstName));
            test.Assert.AreEqual(Const("Smith"), Expr(_mother, p => p.LastName));
            test.Assert.AreEqual(Const(38), Expr(_mother, p => p.Age));
            test.Execute();
        }
        public void GenerateFamilyCreatesRobinRichAsChild()
        {
            PersonGenerator generator = new PersonGenerator();
            Person          person    = generator.GenerateFamily();

            Assert.AreEqual("Robin", person.FirstName);
            Assert.AreEqual("Rich", person.LastName);
            Assert.AreEqual(10, person.Age);

            // TestTools Code
            UnitTest test = Factory.CreateTest();
            TestVariable <PersonGenerator> _generator = test.CreateVariable <PersonGenerator>(nameof(_generator));
            TestVariable <Person>          _child     = test.CreateVariable <Person>(nameof(_child));

            test.Arrange(_generator, Expr(() => new PersonGenerator()));
            test.Arrange(_child, Expr(_generator, g => g.GenerateFamily()));
            test.Assert.AreEqual(Const("Robin"), Expr(_child, p => p.FirstName));
            test.Assert.AreEqual(Const("Rich"), Expr(_child, p => p.LastName));
            test.Assert.AreEqual(Const(10), Expr(_child, p => p.Age));
            test.Execute();
        }