Example #1
0
        public void Dog_RequiredMemberTests()
        {
            Type type = typeof(Dog);
            Dog  dog  = (Dog)Activator.CreateInstance(type);

            FieldInfo fi = type.GetField("isSleeping", BindingFlags.NonPublic | BindingFlags.Instance);

            Assert.IsNotNull(fi, "Dog class needs the isSleeping variable.");
            Assert.AreEqual(typeof(bool), fi.FieldType, "isSleeping should be type: bool");

            PropertyInfo prop = type.GetProperty("IsSleeping");

            PropertyValidator.ValidateReadOnly(prop, "IsSleeping", typeof(bool));

            MethodInfo mi = type.GetMethod("MakeSound");

            Assert.IsNotNull(mi, "Dog class needs the MakeSound method.");
            Assert.AreEqual(typeof(string), mi.ReturnType, "MakeSound() method needs to return type: string");

            mi = type.GetMethod("Sleep");
            Assert.IsNotNull(mi, "Dog class needs the Sleep() method.");
            Assert.AreEqual(typeof(void), mi.ReturnType, "Sleep() method needs to return type: void");

            mi = type.GetMethod("WakeUp");
            Assert.IsNotNull(mi, "Dog class needs the WakeUp() method.");
            Assert.AreEqual(typeof(void), mi.ReturnType, "WakeUp() method needs to return type: void");
        }
Example #2
0
        public void ShoppingCart_RequiredMembers()
        {
            Type         type = typeof(ShoppingCart);
            ShoppingCart cart = (ShoppingCart)Activator.CreateInstance(type);

            PropertyInfo prop = type.GetProperty("TotalNumberOfItems");

            PropertyValidator.ValidateReadOnly(prop, "TotalNumberOfItems", typeof(int));

            prop = type.GetProperty("TotalAmountOwed");
            PropertyValidator.ValidateReadOnly(prop, "TotalAmountOwed", typeof(decimal));

            MethodInfo mi = type.GetMethod("GetAveragePricePerItem");

            Assert.IsNotNull(mi, "Shopping cart class needs the GetAveragePricePerItem method.");
            Assert.AreEqual(typeof(decimal), mi.ReturnType, "GetAveragePricePerItem() method needs to return type: double");
            Assert.AreEqual(0, mi.GetParameters().Length, "GetAveragePricePerItem() should have no parameters");

            mi = type.GetMethod("AddItems");
            Assert.IsNotNull(mi, "Shopping cart class needs the AddItems method.");
            Assert.AreEqual(typeof(void), mi.ReturnType, "AddItems() method needs to return type: void");
            Assert.AreEqual(2, mi.GetParameters().Length);

            mi = type.GetMethod("Empty");
            Assert.IsNotNull(mi, "Shopping cart class needs the Empty method.");
            Assert.AreEqual(typeof(void), mi.ReturnType, "Empty() method needs to return type: void");
            Assert.AreEqual(0, mi.GetParameters().Length);
        }
Example #3
0
        public void Employee_HasRequiredMembers()
        {
            Type type = typeof(Employee);

            PropertyInfo prop = type.GetProperty("EmployeeId");

            PropertyValidator.ValidateReadPrivateWrite(prop, "EmployeeId", typeof(int));

            prop = type.GetProperty("FirstName");
            PropertyValidator.ValidateReadPrivateWrite(prop, "FirstName", typeof(string));

            prop = type.GetProperty("LastName");
            PropertyValidator.ValidateReadWrite(prop, "LastName", typeof(string));

            prop = type.GetProperty("FullName");
            PropertyValidator.ValidateReadOnly(prop, "FullName", typeof(string));

            prop = type.GetProperty("Department");
            PropertyValidator.ValidateReadWrite(prop, "Department", typeof(string));

            prop = type.GetProperty("AnnualSalary");
            PropertyValidator.ValidateReadPrivateWrite(prop, "AnnualSalary", typeof(double));

            MethodInfo method = type.GetMethod("RaiseSalary");

            MethodValidator.ValidatePublicMethod(method, "RaiseSalary", typeof(void));
        }
Example #4
0
        public void Company_CheckRequiredMembers()
        {
            Type    type    = typeof(Company);
            Company company = (Company)Activator.CreateInstance(type, "ACME");

            PropertyInfo prop = type.GetProperty("Name");

            PropertyValidator.ValidateReadOnly(prop, "Name", typeof(string));

            prop = type.GetProperty("NumberOfEmployees");
            PropertyValidator.ValidateReadWrite(prop, "NumberOfEmployees", typeof(int));

            prop = type.GetProperty("Revenue");
            PropertyValidator.ValidateReadWrite(prop, "Revenue", typeof(decimal));

            prop = type.GetProperty("Expenses");
            PropertyValidator.ValidateReadWrite(prop, "Expenses", typeof(decimal));


            MethodInfo mi = type.GetMethod("GetCompanySize");

            Assert.IsNotNull(mi, "A method called GetCompanySize needs to be included");
            Assert.AreEqual(typeof(string), mi.ReturnType, "The GetCompanySize() method needs to be type: string");

            mi = type.GetMethod("GetProfit");
            Assert.IsNotNull(mi, "A method called GetProfit needs to be included");
            Assert.AreEqual(typeof(decimal), mi.ReturnType, "The GetProfit() method needs to be type: decimal");
        }
Example #5
0
        public void Calculator_RequiredMembers()
        {
            Type       type       = typeof(Calculator);
            Calculator calculator = (Calculator)Activator.CreateInstance(type, 0);

            PropertyInfo prop = type.GetProperty("Result");

            PropertyValidator.ValidateReadOnly(prop, "Result", typeof(int));

            MethodInfo mi = type.GetMethod("Add");

            Assert.IsNotNull(mi, "Calculator class needs the Add method.");
            Assert.AreEqual(typeof(int), mi.ReturnType, "Add(int addend) method needs to return type: int");
            Assert.AreEqual(1, mi.GetParameters().Length, "Add(int addend) should have 1 parameter");

            mi = type.GetMethod("Subtract");
            Assert.IsNotNull(mi, "Calculator class needs the Subtract method.");
            Assert.AreEqual(typeof(int), mi.ReturnType, "Subtract(int subtrahend) method needs to return type: int");
            Assert.AreEqual(1, mi.GetParameters().Length, "Subtract(int subtrahend) should have 1 parameter");

            mi = type.GetMethod("Multiply");
            Assert.IsNotNull(mi, "Calculator class needs the Multiply method.");
            Assert.AreEqual(typeof(int), mi.ReturnType, "Multiply(int multiplier) method needs to return type: int");
            Assert.AreEqual(1, mi.GetParameters().Length, "Multiply(int multiplier) should have 1 parameter");

            mi = type.GetMethod("Power");
            Assert.IsNotNull(mi, "Calculator class needs the Power method.");
            Assert.AreEqual(typeof(int), mi.ReturnType, "Power(int exponent) method needs to return type: int");
            Assert.AreEqual(1, mi.GetParameters().Length, "Power(int exponent) should have 1 parameter");

            mi = type.GetMethod("Reset");
            Assert.IsNotNull(mi, "Calculator class needs the Reset method.");
            Assert.AreEqual(typeof(void), mi.ReturnType, "Reset() method needs to return type: void");
            Assert.AreEqual(0, mi.GetParameters().Length, "Reset() should have no parameters");
        }
Example #6
0
        public void Elevator_HasRequiredMembers()
        {
            Type     type     = typeof(Elevator);
            Elevator elevator = (Elevator)Activator.CreateInstance(type, 3);

            PropertyInfo prop = type.GetProperty("CurrentLevel");

            PropertyValidator.ValidateReadOnly(prop, "CurrentLevel", typeof(int));

            prop = type.GetProperty("NumberOfLevels");
            PropertyValidator.ValidateReadOnly(prop, "NumberOfLevels", typeof(int));

            prop = type.GetProperty("DoorIsOpen");
            PropertyValidator.ValidateReadOnly(prop, "DoorIsOpen", typeof(bool));

            MethodInfo method = type.GetMethod("OpenDoor");

            MethodValidator.ValidatePublicMethod(method, "OpenDoor", typeof(void));

            method = type.GetMethod("CloseDoor");
            MethodValidator.ValidatePublicMethod(method, "CloseDoor", typeof(void));

            method = type.GetMethod("GoUp");
            MethodValidator.ValidatePublicMethod(method, "GoUp", typeof(void));
            Assert.AreEqual(1, method.GetParameters().Length, "GoUp should accept 1 parameter");

            method = type.GetMethod("GoDown");
            MethodValidator.ValidatePublicMethod(method, "GoDown", typeof(void));
            Assert.AreEqual(1, method.GetParameters().Length, "GoDown should accept 1 parameter");
        }
        public void Airplane_HasRequiredMembers()
        {
            Type     type     = typeof(Airplane);
            Airplane Airplane = (Airplane)Activator.CreateInstance(type, "ABC123", 2, 3);

            PropertyInfo prop = type.GetProperty("PlaneNumber");

            PropertyValidator.ValidateReadOnly(prop, "PlaneNumber", typeof(string));

            prop = type.GetProperty("BookedFirstClassSeats");
            PropertyValidator.ValidateReadOnly(prop, "BookedFirstClassSeats", typeof(int));

            prop = type.GetProperty("AvailableFirstClassSeats");
            PropertyValidator.ValidateReadOnly(prop, "AvailableFirstClassSeats", typeof(int));

            prop = type.GetProperty("TotalFirstClassSeats");
            PropertyValidator.ValidateReadOnly(prop, "TotalFirstClassSeats", typeof(int));


            prop = type.GetProperty("BookedCoachSeats");
            PropertyValidator.ValidateReadOnly(prop, "BookedCoachSeats", typeof(int));

            prop = type.GetProperty("AvailableCoachSeats");
            PropertyValidator.ValidateReadOnly(prop, "AvailableCoachSeats", typeof(int));

            prop = type.GetProperty("TotalCoachSeats");
            PropertyValidator.ValidateReadOnly(prop, "TotalCoachSeats", typeof(int));

            MethodInfo method = type.GetMethod("ReserveSeats");

            MethodValidator.ValidatePublicMethod(method, "ReserveSeats", typeof(bool));
        }
Example #8
0
        public void Calculator_ResultProperty()
        {
            Type       type       = typeof(Calculator);
            Calculator calculator = (Calculator)Activator.CreateInstance(type, 0);

            PropertyInfo prop = type.GetProperty("Result");

            PropertyValidator.ValidateReadOnly(prop, "Result", typeof(int));
        }
        public void ShoppingCart_TotalAmountOwedProperty()
        {
            Type         type = typeof(ShoppingCart);
            ShoppingCart cart = (ShoppingCart)Activator.CreateInstance(type);

            PropertyInfo prop = type.GetProperty("TotalAmountOwed");

            PropertyValidator.ValidateReadOnly(prop, "TotalAmountOwed", typeof(decimal));
        }
        public void ShoppingCart_TotalNumberOfItemsProperty()
        {
            Type         type = typeof(ShoppingCart);
            ShoppingCart cart = (ShoppingCart)Activator.CreateInstance(type);

            PropertyInfo prop = type.GetProperty("TotalNumberOfItems");

            PropertyValidator.ValidateReadOnly(prop, "TotalNumberOfItems", typeof(int));
        }
Example #11
0
        public void Company_NameProperty()
        {
            Type    type    = typeof(Company);
            Company company = (Company)Activator.CreateInstance(type, "ACME");

            PropertyInfo prop = type.GetProperty("Name");

            PropertyValidator.ValidateReadOnly(prop, "Name", typeof(string));
        }
        public void Dog_IsSleepingProperty()
        {
            Type type = typeof(Dog);
            Dog  dog  = (Dog)Activator.CreateInstance(type);


            PropertyInfo prop = type.GetProperty("IsSleeping");

            PropertyValidator.ValidateReadOnly(prop, "IsSleeping", typeof(bool));
        }
Example #13
0
        public void Company_CheckRequiredMembers()
        {
            Type    type    = typeof(Company);
            Company company = (Company)Activator.CreateInstance(type, "ACME");

            PropertyInfo prop = type.GetProperty("Name");

            PropertyValidator.ValidateReadOnly(prop, "Name", typeof(string));

            prop = type.GetProperty("NumberOfEmployees");
            PropertyValidator.ValidateReadWrite(prop, "NumberOfEmployees", typeof(int));

            prop = type.GetProperty("Revenue");
            PropertyValidator.ValidateReadWrite(prop, "Revenue", typeof(decimal));

            prop = type.GetProperty("Expenses");
            PropertyValidator.ValidateReadWrite(prop, "Expenses", typeof(decimal));

            FieldInfo fi = type.GetField("name", BindingFlags.NonPublic | BindingFlags.Instance);

            Assert.IsNotNull(fi, "A field called name needs to exist");
            Assert.AreEqual(typeof(string), fi.FieldType, "The name field needs to be type: string");

            fi = type.GetField("numberOfEmployees", BindingFlags.NonPublic | BindingFlags.Instance);
            Assert.IsNotNull(fi, "A field called numberOfEmployees needs to exist");
            Assert.AreEqual(typeof(int), fi.FieldType, "The numberOfEmployees field needs to be type: int");

            fi = type.GetField("revenue", BindingFlags.NonPublic | BindingFlags.Instance);
            Assert.IsNotNull(fi, "A field called revenue needs to exist");
            Assert.AreEqual(typeof(decimal), fi.FieldType, "The revenue field needs to be type: decimal");

            fi = type.GetField("expenses", BindingFlags.NonPublic | BindingFlags.Instance);
            Assert.IsNotNull(fi, "A field called expenses needs to exist");
            Assert.AreEqual(typeof(decimal), fi.FieldType, "The expenses field needs to be type: decimal");

            MethodInfo mi = type.GetMethod("GetCompanySize");

            Assert.IsNotNull(mi, "A method called GetCompanySize needs to be included");
            Assert.AreEqual(typeof(string), mi.ReturnType, "The GetCompanySize() method needs to be type: string");

            mi = type.GetMethod("GetProfit");
            Assert.IsNotNull(mi, "A method called GetProfit needs to be included");
            Assert.AreEqual(typeof(decimal), mi.ReturnType, "The GetProfit() method needs to be type: decimal");
        }
        public void Homework_HasRequiredProperties()
        {
            Type type = typeof(HomeworkAssignment);

            PropertyInfo[] properties = type.GetProperties();

            PropertyInfo prop = FindPropertyByName(properties, "EarnedMarks");

            PropertyValidator.ValidateReadWrite(prop, "EarnedMarks", typeof(int));

            prop = FindPropertyByName(properties, "PossibleMarks");
            PropertyValidator.ValidateReadWrite(prop, "PossibleMarks", typeof(int));

            prop = FindPropertyByName(properties, "SubmitterName");
            PropertyValidator.ValidateReadWrite(prop, "SubmitterName", typeof(string));


            prop = FindPropertyByName(properties, "LetterGrade");
            PropertyValidator.ValidateReadOnly(prop, "LetterGrade", typeof(string));
        }
Example #15
0
        public void FruitTree_HasRequiredMembers()
        {
            Type      type = typeof(FruitTree);
            FruitTree tree = (FruitTree)Activator.CreateInstance(type, "Apple", 3);

            PropertyInfo[] properties = type.GetProperties();

            PropertyInfo prop = FindPropertyByName(properties, "TypeOfFruit");

            PropertyValidator.ValidateReadOnly(prop, "TypeOfFruit", typeof(string));


            prop = FindPropertyByName(properties, "PiecesOfFruitLeft");
            PropertyValidator.ValidateReadPrivateWrite(prop, "PiecesOfFruitLeft", typeof(int));

            MethodInfo method = type.GetMethod("PickFruit");

            Assert.IsNotNull(method, "You do not have the PickFruit method");
            Assert.AreEqual(typeof(bool), method.ReturnType, "Your PickFruit method should return a bool");
            Assert.AreEqual(true, method.IsPublic, "PickFruit should be a public method");
        }
Example #16
0
        public void Homework_HasRequiredProperties()
        {
            Type type = typeof(HomeworkAssignment);
            HomeworkAssignment assignment = (HomeworkAssignment)Activator.CreateInstance(type, 100, "Default Name");

            PropertyInfo[] properties = type.GetProperties();

            PropertyInfo prop = FindPropertyByName(properties, "TotalMarks");

            PropertyValidator.ValidateReadWrite(prop, "TotalMarks", typeof(int));

            prop = FindPropertyByName(properties, "PossibleMarks");
            PropertyValidator.ValidateReadOnly(prop, "PossibleMarks", typeof(int));

            prop = FindPropertyByName(properties, "SubmitterName");
            PropertyValidator.ValidateReadOnly(prop, "SubmitterName", typeof(string));


            prop = FindPropertyByName(properties, "LetterGrade");
            PropertyValidator.ValidateReadOnly(prop, "LetterGrade", typeof(string));
        }
        public void Television_HasRequiredMembers()
        {
            Type       type = typeof(Television);
            Television tv   = (Television)Activator.CreateInstance(type);

            PropertyInfo prop = type.GetProperty("IsOn");

            PropertyValidator.ValidateReadOnly(prop, "IsOn", typeof(bool));

            prop = type.GetProperty("CurrentChannel");
            PropertyValidator.ValidateReadOnly(prop, "CurrentChannel", typeof(int));

            prop = type.GetProperty("CurrentVolume");
            PropertyValidator.ValidateReadOnly(prop, "CurrentVolume", typeof(int));

            MethodInfo method = type.GetMethod("TurnOff");

            MethodValidator.ValidatePublicMethod(method, "TurnOff", typeof(void));

            method = type.GetMethod("TurnOn");
            MethodValidator.ValidatePublicMethod(method, "TurnOn", typeof(void));

            method = type.GetMethod("ChangeChannel");
            MethodValidator.ValidatePublicMethod(method, "ChangeChannel", typeof(void));
            Assert.AreEqual(1, method.GetParameters().Length, "ChangeChannel should accept 1 parameter");

            method = type.GetMethod("ChannelUp");
            MethodValidator.ValidatePublicMethod(method, "ChannelUp", typeof(void));

            method = type.GetMethod("ChannelDown");
            MethodValidator.ValidatePublicMethod(method, "ChannelDown", typeof(void));

            method = type.GetMethod("RaiseVolume");
            MethodValidator.ValidatePublicMethod(method, "RaiseVolume", typeof(void));

            method = type.GetMethod("LowerVolume");
            MethodValidator.ValidatePublicMethod(method, "LowerVolume", typeof(void));
        }
Example #18
0
        public void Dog_RequiredMemberTests()
        {
            Type type = typeof(Dog);
            Dog  dog  = (Dog)Activator.CreateInstance(type);


            PropertyInfo prop = type.GetProperty("IsSleeping");

            PropertyValidator.ValidateReadOnly(prop, "IsSleeping", typeof(bool));

            MethodInfo mi = type.GetMethod("MakeSound");

            Assert.IsNotNull(mi, "Dog class needs the MakeSound method.");
            Assert.AreEqual(typeof(string), mi.ReturnType, "MakeSound() method needs to return type: string");

            mi = type.GetMethod("Sleep");
            Assert.IsNotNull(mi, "Dog class needs the Sleep() method.");
            Assert.AreEqual(typeof(void), mi.ReturnType, "Sleep() method needs to return type: void");

            mi = type.GetMethod("WakeUp");
            Assert.IsNotNull(mi, "Dog class needs the WakeUp() method.");
            Assert.AreEqual(typeof(void), mi.ReturnType, "WakeUp() method needs to return type: void");
        }
        public void ShoppingCart_TotalNumberOfItemsProperty()
        {
            PropertyInfo prop = type.GetProperty("TotalNumberOfItems");

            PropertyValidator.ValidateReadOnly(prop, "TotalNumberOfItems", typeof(int));
        }
        public void Dog_IsSleepingProperty()
        {
            PropertyInfo prop = type.GetProperty("IsSleeping");

            PropertyValidator.ValidateReadOnly(prop, "IsSleeping", typeof(bool));
        }
        public void ShoppingCart_TotalAmountOwedProperty()
        {
            PropertyInfo prop = type.GetProperty("TotalAmountOwed");

            PropertyValidator.ValidateReadOnly(prop, "TotalAmountOwed", typeof(decimal));
        }
Example #22
0
        public void Calculator_ResultProperty()
        {
            PropertyInfo prop = type.GetProperty("Result");

            PropertyValidator.ValidateReadOnly(prop, "Result", typeof(int));
        }