@Test
	public void testEvaluate() {
		
		short credits = prof.getCredits();
		
		Student[] result = prof.evaluate();
		for (int k = 0; k < result.length; k++) {
			assertTrue("GPAs must be between 0.0 and 4.0!", result[k].getGPA() >= 0.0 && result[k].getGPA() <= 4.0);
			assertTrue("Student GPAs must be equal to one of the pre-defined letter grades (only one class taken)!", Driver.gradeLookup.containsValue(result[k].getGPA()));
			assertEquals("All students must be assigned the same credits!", credits, result[k].getTotalCredits());
		}
		
		profWithSetCredits = new Prof(result, (short)1);
		credits +=1;
		result = profWithSetCredits.evaluate();
		for (int k = 0; k < result.length; k++) {
			assertTrue("GPAs must be between 0.0 and 4.0!", result[k].getGPA() >= 0.0 || result[k].getGPA() <= 4.0);
			assertEquals("All students must be assigned the same credits!", credits, result[k].getTotalCredits());
		}
		
		LetterGrade[] grades = {LetterGrade.APURE, LetterGrade.CPURE, LetterGrade.APURE, LetterGrade.APURE, LetterGrade.BPLUS, LetterGrade.BPLUS, LetterGrade.BPURE, LetterGrade.APURE, LetterGrade.DPURE, LetterGrade.APURE};
		for (int i = 0; i < 10; i++) {
			students[i] = new StudentDriver();
		};
		prof = new Prof(students, (short)5);
		credits = 5;
		result = prof.evaluate(grades);
		for (int k = 0; k < result.length; k++) {
			assertTrue("GPAs must be between 0.0 and 4.0!", result[k].getGPA() >= 0.0 || result[k].getGPA() <= 4.0);
			assertEquals("All students must be assigned the appropriate credits!", credits, result[k].getTotalCredits());
			assertTrue("All student GPAs must equal assigned letter grade (note: one class)!", Driver.gradeLookup.get(grades[k]) == result[k].getGPA());
		}
	}