diff --git a/src/org/interview/intro/Averager.java b/src/org/interview/intro/Averager.java new file mode 100644 index 0000000..e44adad --- /dev/null +++ b/src/org/interview/intro/Averager.java @@ -0,0 +1,7 @@ +package org.interview.intro; + +import java.util.List; + +public interface Averager { + public T average(List thingsToAverage); +} diff --git a/src/org/interview/intro/DoubleAverager.java b/src/org/interview/intro/DoubleAverager.java new file mode 100644 index 0000000..19b1bd2 --- /dev/null +++ b/src/org/interview/intro/DoubleAverager.java @@ -0,0 +1,27 @@ +package org.interview.intro; + +import java.util.List; + +public class DoubleAverager implements Averager { + public Double average(List numbers) { + verifyNonEmpty(numbers.size()); + + Double total = 0.0; + for (Double number : numbers) { + total += number; + } + + + return total / numbers.size(); + } + + private void verifyNonEmpty(int count) { + if (count <= 1) { + throw new EmptyListCannotBeAveraged(); + } + } + + public static class EmptyListCannotBeAveraged extends RuntimeException { + + } +} diff --git a/src/org/interview/intro/RunningAverageCalculator.java b/src/org/interview/intro/RunningAverageCalculator.java new file mode 100644 index 0000000..33c86c0 --- /dev/null +++ b/src/org/interview/intro/RunningAverageCalculator.java @@ -0,0 +1,11 @@ +package org.interview.intro; + +public class RunningAverageCalculator { + public void add(Double number) { + throw new UnsupportedOperationException("not implemented yet"); + } + + public double runningAverage() { + throw new UnsupportedOperationException("not implemented yet"); + } +} diff --git a/test/org/interview/intro/DoubleAveragerTest.java b/test/org/interview/intro/DoubleAveragerTest.java new file mode 100644 index 0000000..b0cf7d0 --- /dev/null +++ b/test/org/interview/intro/DoubleAveragerTest.java @@ -0,0 +1,25 @@ +package org.interview.intro; + +import org.interview.intro.DoubleAverager.EmptyListCannotBeAveraged; +import org.junit.Test; + +import java.util.Collections; + +import static java.util.Arrays.asList; +import static org.junit.Assert.assertEquals; + +public class DoubleAveragerTest { + @Test + public void shouldAverageABunchOfNumbers() { + Averager averager = new DoubleAverager(); + + double average = averager.average(asList(6.0, 6.0, 5.0, 5.0)); + assertEquals(5.5, average, 0.0); + } + + @Test(expected = EmptyListCannotBeAveraged.class) + public void emptyListsCannotBeAveraged() { + Averager averager = new DoubleAverager(); + averager.average(Collections.emptyList()); + } +} diff --git a/test/org/interview/intro/RunningAverageCalculatorTest.java b/test/org/interview/intro/RunningAverageCalculatorTest.java new file mode 100644 index 0000000..fc2067d --- /dev/null +++ b/test/org/interview/intro/RunningAverageCalculatorTest.java @@ -0,0 +1,10 @@ +package org.interview.intro; + +import org.junit.Test; + +public class RunningAverageCalculatorTest { + @Test + public void yourFirstTestGoesHere() { + + } +}