summaryrefslogtreecommitdiff
path: root/src/section-4
diff options
context:
space:
mode:
Diffstat (limited to 'src/section-4')
-rw-r--r--src/section-4/BanffMarathonRunner.java51
-rw-r--r--src/section-4/BanffMarathonRunnerTest.java61
2 files changed, 112 insertions, 0 deletions
diff --git a/src/section-4/BanffMarathonRunner.java b/src/section-4/BanffMarathonRunner.java
new file mode 100644
index 0000000..afc0472
--- /dev/null
+++ b/src/section-4/BanffMarathonRunner.java
@@ -0,0 +1,51 @@
+package ca.mokhan.assignment1;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class BanffMarathonRunner extends AddressBook {
+ private int time;
+ private int years;
+
+ public BanffMarathonRunner(String firstName, String lastName, int time, int years) {
+ super(firstName, "", lastName);
+ this.time = time;
+ this.years = years;
+ }
+
+ public int compareTo(AddressBook other) {
+ BanffMarathonRunner runner = (BanffMarathonRunner) other;
+ return Integer.compare(this.time, runner.time);
+ }
+
+ @Override
+ public String toString() {
+ return super.getFirstName() + " " + this.years;
+ }
+
+ public static BanffMarathonRunner getFastestRunner(BanffMarathonRunner[] runners) {
+ Arrays.sort(runners);
+ return runners[0];
+ }
+
+ public static BanffMarathonRunner getSecondFastestRunner(BanffMarathonRunner[] runners) {
+ Arrays.sort(runners);
+ return runners[1];
+ }
+
+ public static int getAverageTime(BanffMarathonRunner[] runners) {
+ int sum = 0;
+ for (BanffMarathonRunner runner : runners) sum += runner.time;
+ return sum / runners.length;
+ }
+
+ public static String getAboveAverageRunners(BanffMarathonRunner[] runners) {
+ int average = getAverageTime(runners);
+ ArrayList<String> winners = new ArrayList<String>();
+
+ for (BanffMarathonRunner runner : runners)
+ if (runner.time >= average) winners.add(runner.toString());
+
+ return String.join(System.lineSeparator(), winners);
+ }
+}
diff --git a/src/section-4/BanffMarathonRunnerTest.java b/src/section-4/BanffMarathonRunnerTest.java
new file mode 100644
index 0000000..4b04ae0
--- /dev/null
+++ b/src/section-4/BanffMarathonRunnerTest.java
@@ -0,0 +1,61 @@
+package ca.mokhan.assignment1;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class BanffMarathonRunnerTest extends TestCase {
+ private BanffMarathonRunner john = new BanffMarathonRunner("John", "Lenthen", 243, 1);
+ private BanffMarathonRunner kate = new BanffMarathonRunner("Kate", "Hen", 265, 8);
+ private BanffMarathonRunner[] runners = {
+ new BanffMarathonRunner("Elena", "Brandon", 341, 1),
+ new BanffMarathonRunner("Thomas", "Molson", 273, 2),
+ new BanffMarathonRunner("Hamilton", "Winn", 278, 5),
+ new BanffMarathonRunner("Suzie", "Sarandin", 329, 7),
+ new BanffMarathonRunner("Philip", "Winne", 445, 9),
+ new BanffMarathonRunner("Alex", "Trebok", 275, 3),
+ new BanffMarathonRunner("Emma", "Pivoto", 275, 4),
+ this.john,
+ new BanffMarathonRunner("James", "Lean", 334, 1),
+ new BanffMarathonRunner("Jane", "Ostin", 412, 1),
+ new BanffMarathonRunner("Emily", "Car", 393, 4),
+ new BanffMarathonRunner("Daniel", "Hamshire", 299, 4),
+ new BanffMarathonRunner("Neda", "Bazdar", 343, 3),
+ new BanffMarathonRunner("Aaron", "Smith", 317, 6),
+ this.kate
+ };
+
+ public BanffMarathonRunnerTest(String testName) {
+ super(testName);
+ }
+
+ public static Test suite() {
+ return new TestSuite(BanffMarathonRunnerTest.class);
+ }
+
+ public void testGetFastestRunner() {
+ assertEquals(this.john, BanffMarathonRunner.getFastestRunner(this.runners));
+ }
+
+ public void testGetSecondFastestRunner() {
+ assertEquals(this.kate, BanffMarathonRunner.getSecondFastestRunner(this.runners));
+ }
+
+ public void testGetAverageTime() {
+ assertEquals(321, BanffMarathonRunner.getAverageTime(this.runners));
+ }
+
+ public void testGetAboveAverageRunners() {
+ String expected =
+ String.join(
+ System.lineSeparator(),
+ "Elena 1",
+ "Suzie 7",
+ "Philip 9",
+ "James 1",
+ "Jane 1",
+ "Emily 4",
+ "Neda 3");
+ assertEquals(expected, BanffMarathonRunner.getAboveAverageRunners(this.runners));
+ }
+}