import org.junit.Test;
import java.util.*;
import static org.junit.Assert.*;
public class ComputeAverageTopThreeTest {
private String expected;
private List<ComputeAverageTopThree.NameScore> nameScoreData;
@Test
public void findStudent1() throws Exception {
expected = "Simon";
nameScoreData = Arrays.asList(
new ComputeAverageTopThree.NameScore("Simon", 98),
new ComputeAverageTopThree.NameScore("Matt", 39),
new ComputeAverageTopThree.NameScore("Julius", 78),
new ComputeAverageTopThree.NameScore("Simon", 90),
new ComputeAverageTopThree.NameScore("Julius", 72),
new ComputeAverageTopThree.NameScore("Julius", 77),
new ComputeAverageTopThree.NameScore("Matt", 85),
new ComputeAverageTopThree.NameScore("Dmitri", 98),
new ComputeAverageTopThree.NameScore("Matt", 82),
new ComputeAverageTopThree.NameScore("Simon", 88),
new ComputeAverageTopThree.NameScore("Matt", 89),
new ComputeAverageTopThree.NameScore("Dmitri", 95),
new ComputeAverageTopThree.NameScore("Simon", 14)
);
test(expected, nameScoreData);
}
@Test
public void findStudent2() throws Exception {
expected = "Simon";
nameScoreData = Arrays.asList(
new ComputeAverageTopThree.NameScore("Simon", 95),
new ComputeAverageTopThree.NameScore("Simon", 95),
new ComputeAverageTopThree.NameScore("Simon", 95),
new ComputeAverageTopThree.NameScore("Simon", 0),
new ComputeAverageTopThree.NameScore("Dmitri", 90),
new ComputeAverageTopThree.NameScore("Dmitri", 90),
new ComputeAverageTopThree.NameScore("Dmitri", 90),
new ComputeAverageTopThree.NameScore("Matt", 100),
new ComputeAverageTopThree.NameScore("Matt", 100)
);
test(expected, nameScoreData);
}
private void test(String expected, List<ComputeAverageTopThree.NameScore> nameScoreData) {
assertEquals(expected, ComputeAverageTopThree.findStudent(nameScoreData.iterator()));
}
}