Tuesday, May 26, 2015

Unit Tests

First we created a couple of classes to test. A Grade Class to store grade information and a GPA class that stores grades in a list and has two methods one to calculate GPA and one to calculate a straight average.

Grade Class


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    public class Grade
    {
        public string ClassName { get; set; }
        public int Credits { get; set; }

        public double GradePoint { get; set; }
    }
}


GPA Class


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    public class GPA
    {
        public List Grades { get; set; }

        public GPA()
        {
            Grades = new List();
        }

        public void addGrade(Grade g)
        {
            Grades.Add(g);
        }

        public double CalculateGPA()
        {
            int totalCredits = 0;
            double totalWeight = 0;
            foreach(Grade g in Grades)
            {
                totalCredits += g.Credits;
                totalWeight += g.Credits * g.GradePoint;
            }
            return totalWeight / totalCredits;
        }

        public double StraightAverage()
        {
            double totalGrades = 0;
            foreach(Grade g in Grades)
            {
                totalGrades += g.GradePoint;
            }

            return totalGrades / Grades.Count();
        }

    }
}


Next we right clicked on the solution and added a new project. We chose Test and Unit Test. Next we added a reference to the GPA project so we could talk to its classes. (It is important that they be public.)

Here is the Test class


using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using ConsoleApplication2;

namespace UnitTestProject1
{
    [TestClass]
    public class UnitTest1
    {
        GPA gpa = new GPA();
        [TestMethod]
        public void TestGPA()
        {
            
            AddSomeClasses();
            double g = gpa.CalculateGPA();

            Assert.AreEqual(39.5 / 13, g);
        }

        [TestMethod]
        public void TestStraightAverage()
        {
            
            AddSomeClasses();
            double avg = gpa.StraightAverage();

            Assert.AreEqual(9.5 / 3, avg);
        }

        private void AddSomeClasses()
        {
            
            Grade g1 = new Grade();
            g1.Credits = 5;
            g1.GradePoint = 2;
            gpa.addGrade(g1);

            Grade g2 = new Grade();
            g2.Credits = 3;
            g2.GradePoint = 4;
            gpa.addGrade(g2);

            Grade g3 = new Grade();
            g3.Credits = 5;
            g3.GradePoint = 3.5;
            gpa.addGrade(g3);
        }
    }
}

No comments:

Post a Comment