mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-25 01:41:43 +00:00
SCRIPT Move java files
This commit is contained in:
committed by
Peter Johnson
parent
7ca1be9bae
commit
c350c5f112
92
wpilibj/src/test/java/org/wpilib/event/EventLoopTest.java
Normal file
92
wpilibj/src/test/java/org/wpilib/event/EventLoopTest.java
Normal file
@@ -0,0 +1,92 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
package edu.wpi.first.wpilibj.event;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import java.util.ConcurrentModificationException;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class EventLoopTest {
|
||||
@Test
|
||||
void testConditions() {
|
||||
var counterTrue = new AtomicInteger(0);
|
||||
var counterFalse = new AtomicInteger(0);
|
||||
var loop = new EventLoop();
|
||||
new BooleanEvent(loop, () -> true).ifHigh(counterTrue::incrementAndGet);
|
||||
new BooleanEvent(loop, () -> false).ifHigh(counterFalse::incrementAndGet);
|
||||
|
||||
assertEquals(0, counterTrue.get());
|
||||
assertEquals(0, counterFalse.get());
|
||||
|
||||
loop.poll();
|
||||
|
||||
assertEquals(1, counterTrue.get());
|
||||
assertEquals(0, counterFalse.get());
|
||||
|
||||
loop.poll();
|
||||
|
||||
assertEquals(2, counterTrue.get());
|
||||
assertEquals(0, counterFalse.get());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testClear() {
|
||||
var condition = new AtomicBoolean(false);
|
||||
var counter = new AtomicInteger(0);
|
||||
var loop = new EventLoop();
|
||||
|
||||
// first ensure binding works
|
||||
new BooleanEvent(loop, condition::get).ifHigh(counter::incrementAndGet);
|
||||
|
||||
condition.set(false);
|
||||
loop.poll();
|
||||
assertEquals(0, counter.get());
|
||||
|
||||
condition.set(true);
|
||||
loop.poll();
|
||||
assertEquals(1, counter.get());
|
||||
|
||||
// clear bindings
|
||||
loop.clear();
|
||||
|
||||
condition.set(true);
|
||||
loop.poll();
|
||||
// shouldn't change
|
||||
assertEquals(1, counter.get());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testConcurrentModification() {
|
||||
var loop = new EventLoop();
|
||||
|
||||
loop.bind(
|
||||
() -> {
|
||||
assertThrows(
|
||||
ConcurrentModificationException.class,
|
||||
() -> {
|
||||
loop.bind(() -> {});
|
||||
});
|
||||
});
|
||||
|
||||
loop.poll();
|
||||
|
||||
loop.clear();
|
||||
|
||||
loop.bind(
|
||||
() -> {
|
||||
assertThrows(
|
||||
ConcurrentModificationException.class,
|
||||
() -> {
|
||||
loop.clear();
|
||||
});
|
||||
});
|
||||
|
||||
loop.poll();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user