commit d0f249754303f8f025ca1cb0e5a9fc941bb5786c
parent 2f95909fed542502ee5fb58458410e98548e847c
Author: gstraube <gstraube@mailbox.org>
Date: Sun, 23 Jul 2017 18:30:59 +0200
Add tests for sampler
Diffstat:
2 files changed, 67 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/com/github/cythara/Sampler.java b/app/src/main/java/com/github/cythara/Sampler.java
@@ -30,7 +30,7 @@ class Sampler {
}
@Nullable
- private static Note extractMostFrequentNote(List<PitchDifference> samples) {
+ static Note extractMostFrequentNote(List<PitchDifference> samples) {
Map<Note, Integer> noteFrequencies = new HashMap<>();
for (PitchDifference pitchDifference : samples) {
diff --git a/app/src/test/java/com/github/cythara/SamplerTest.java b/app/src/test/java/com/github/cythara/SamplerTest.java
@@ -0,0 +1,65 @@
+package com.github.cythara;
+
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static com.github.cythara.Note.*;
+import static com.github.cythara.Sampler.*;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.Matchers.closeTo;
+import static org.junit.Assert.*;
+
+public class SamplerTest {
+
+ @Test
+ public void the_average_difference_is_calculated_correctly() {
+ List<PitchDifference> samples = new ArrayList<>();
+
+ samples.add(new PitchDifference(E2, 2.46D));
+ samples.add(new PitchDifference(E2, -10.3D));
+ samples.add(new PitchDifference(E2, 5.71D));
+ samples.add(new PitchDifference(E2, 12.532D));
+ samples.add(new PitchDifference(E2, -0.414D));
+
+ PitchDifference pitchDifference = calculateAverageDifference(samples);
+
+ double average = (2.46D - 10.3D + 5.71D + 12.532D - 0.414D) / 5D;
+
+ assertNotNull(pitchDifference);
+ assertThat(pitchDifference.closest, is(E2));
+ assertThat(pitchDifference.deviation, closeTo(average, 0.001));
+ }
+
+ @Test
+ public void the_most_frequent_note_is_extracted_correctly() throws Exception {
+ List<PitchDifference> samples = new ArrayList<>();
+
+ samples.add(new PitchDifference(E2, 2D));
+ samples.add(new PitchDifference(E2, 2D));
+ samples.add(new PitchDifference(B3, 3D));
+ samples.add(new PitchDifference(E2, 2D));
+ samples.add(new PitchDifference(Note.G3, 4D));
+ samples.add(new PitchDifference(B3, 3D));
+
+ Note note = extractMostFrequentNote(samples);
+
+ assertThat(note, is(E2));
+ }
+
+ @Test
+ public void if_there_are_notes_with_the_same_number_of_occurrences_the_first_one_is_returned() {
+ List<PitchDifference> samples = new ArrayList<>();
+
+ samples.add(new PitchDifference(G3, 2D));
+ samples.add(new PitchDifference(E2, 2D));
+ samples.add(new PitchDifference(B3, 3D));
+ samples.add(new PitchDifference(E2, 2D));
+ samples.add(new PitchDifference(B3, 3D));
+
+ Note note = extractMostFrequentNote(samples);
+
+ assertThat(note, is(E2));
+ }
+}
+\ No newline at end of file