plectrum

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit d0f249754303f8f025ca1cb0e5a9fc941bb5786c
parent 2f95909fed542502ee5fb58458410e98548e847c
Author: gstraube <gstraube@mailbox.org>
Date:   Sun, 23 Jul 2017 18:30:59 +0200

Add tests for sampler

Diffstat:
Mapp/src/main/java/com/github/cythara/Sampler.java | 2+-
Aapp/src/test/java/com/github/cythara/SamplerTest.java | 66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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