Skip to content

Commit

Permalink
Add test for TransitionTimeCalibrator
Browse files Browse the repository at this point in the history
Remove brightness threshold tests from BrightnessCalibratorTest
  • Loading branch information
Kakifrucht committed Jul 14, 2018
1 parent b6752e5 commit e6cc4d6
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 12 deletions.
Expand Up @@ -12,9 +12,9 @@
*/
class TransitionTimeCalibrator {

private static final int HISTORY_SIZE = 25;
private static final int CALIBRATION_SIZE = 10;
private static final int MIN_TRANSITION_TIME = 1;
static final int HISTORY_SIZE = 25;
static final int CALIBRATION_SIZE = 10;
static final int MIN_TRANSITION_TIME = 1;

private final int maxTransitionTime;

Expand All @@ -39,7 +39,7 @@ int getTransitionTime(long timeSinceLastBeat) {

buffer.add(timeSinceLastBeat);

if (buffer.size() < CALIBRATION_SIZE) {
if (buffer.size() <= CALIBRATION_SIZE) {
return maxTransitionTime / 2;
}

Expand Down
Expand Up @@ -57,10 +57,6 @@ void getBrightness() {
data = calibrator.getBrightness(0d);
assertEquals(MEDIAN_BRIGHTNESS, getAverageBrightness(data));

// test brightness reduction threshold (should not change brightness, not met yet)
data = calibrator.getBrightness(-1d);
assertEquals(MEDIAN_BRIGHTNESS, getAverageBrightness(data));

// verify that brightness doesn't change with insignificant amplitude differences
data = calibrator.getBrightness(0.1d);
assertEquals(MEDIAN_BRIGHTNESS, getAverageBrightness(data));
Expand All @@ -73,10 +69,6 @@ void getBrightness() {
data = calibrator.getBrightness(1d);
assertEquals(MAX_BRIGHTNESS, data.getBrightness());
assertEquals(maxFadeBrightness, data.getBrightnessFade());

// can't directly change back to low, due to time threshold
data = calibrator.getBrightness(-1d);
assertEquals(MAX_BRIGHTNESS, data.getBrightness());
}

@Test
Expand Down
@@ -0,0 +1,36 @@
package io.lightbeat.hue.visualizer;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

class TransitionTimeCalibratorTest {

@Test
void getTransitionTime() {

int maxTransitionTime = 5;
TransitionTimeCalibrator transitionTimeCalibrator = new TransitionTimeCalibrator(maxTransitionTime);

long timeSinceLastBeat = 10L;

// test calibration phase
for (int i = 0; i < TransitionTimeCalibrator.CALIBRATION_SIZE; i++) {
assertEquals(maxTransitionTime / 2, transitionTimeCalibrator.getTransitionTime(timeSinceLastBeat));
}

// average in calibrator now at timeSinceLastBeat
assertEquals(getTransitionTimeForAverage(maxTransitionTime), transitionTimeCalibrator.getTransitionTime(timeSinceLastBeat));
assertEquals(maxTransitionTime, transitionTimeCalibrator.getTransitionTime((timeSinceLastBeat * 2)));
assertEquals(TransitionTimeCalibrator.MIN_TRANSITION_TIME, transitionTimeCalibrator.getTransitionTime(0L));

// average still at timeSinceLastBeat
for (int i = 0; i < TransitionTimeCalibrator.HISTORY_SIZE; i++) {
assertEquals(getTransitionTimeForAverage(maxTransitionTime), transitionTimeCalibrator.getTransitionTime(timeSinceLastBeat));
}
}

private double getTransitionTimeForAverage(int maxTransitionTime) {
return Math.round(.5d * maxTransitionTime);
}
}

0 comments on commit e6cc4d6

Please sign in to comment.