Skip to content

Commit

Permalink
[#78] frequency-calculator: fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
vbmacher committed May 18, 2023
1 parent bf14fc9 commit d75b34a
Showing 1 changed file with 24 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,18 @@
import org.junit.Test;

import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;

import static org.easymock.EasyMock.*;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

public class FrequencyCalculatorTest {

@Test
public void testFrequencyNotChanged() {
AtomicReference<Float> counter = new AtomicReference<>(0.0f);
try (FrequencyCalculator f = new FrequencyCalculator(counter::set)) {
try (FrequencyCalculator f = new FrequencyCalculator()) {
f.addListener(counter::set);
f.start();
Thread.sleep(1000);
f.stop();
Expand All @@ -44,7 +46,8 @@ public void testFrequencyNotChanged() {
public void testFrequencyChanged() {
AtomicReference<Float> counter = new AtomicReference<>();

try (FrequencyCalculator f = new FrequencyCalculator(counter::set)) {
try (FrequencyCalculator f = new FrequencyCalculator()) {
f.addListener(counter::set);
f.start();
f.passedCycles(2000);
Thread.sleep(1500);
Expand All @@ -58,17 +61,31 @@ public void testFrequencyChanged() {
@Test
public void testFrequencyChanged2() {
AtomicReference<Float> counter = new AtomicReference<>(0.0f);
try (FrequencyCalculator f = new FrequencyCalculator(counter::set)) {
try (FrequencyCalculator f = new FrequencyCalculator()) {
f.addListener(counter::set);
f.start();
f.passedCycles(2000000); // 1 MHz = 1000 kHz = 1000000 Hz
Thread.sleep(2500); // should execute the updater two times
f.stop();
} catch (InterruptedException ignored) {

}
System.out.println(counter.get());
System.out.println(Math.round(counter.get()));
assertEquals(1000, Math.round(counter.get()));
}

@Test
public void testAddRemoveListener() {
AtomicReference<Float> counter = new AtomicReference<>(0.0f);
Consumer<Float> fun = counter::set;
try (FrequencyCalculator f = new FrequencyCalculator()) {
f.addListener(fun);
f.removeListener(fun); // should not react to freq change
f.start();
f.passedCycles(2000);
Thread.sleep(1500);
f.stop();
} catch (InterruptedException ignored) {
}
assertEquals(0.0, (double) counter.get(), 0.0);
}
}

0 comments on commit d75b34a

Please sign in to comment.