54 lines
1.4 KiB
Java
54 lines
1.4 KiB
Java
import com.google.common.util.concurrent.Monitor;
|
|
import org.junit.Assert;
|
|
import org.junit.Test;
|
|
|
|
public class MonitorUnitTests {
|
|
|
|
@Test
|
|
public void whenGaurdConditionIsTrue_IsSuccessful() {
|
|
Monitor monitor = new Monitor();
|
|
boolean enteredInCriticalSection = false;
|
|
|
|
Monitor.Guard gaurdCondition = monitor.newGuard(this::returnTrue);
|
|
|
|
if (monitor.enterIf(gaurdCondition)) {
|
|
try {
|
|
System.out.println("Entered in critical section");
|
|
enteredInCriticalSection = true;
|
|
} finally {
|
|
monitor.leave();
|
|
}
|
|
}
|
|
|
|
Assert.assertTrue(enteredInCriticalSection);
|
|
|
|
}
|
|
|
|
@Test
|
|
public void whenGaurdConditionIsFalse_IsSuccessful() {
|
|
Monitor monitor = new Monitor();
|
|
boolean enteredInCriticalSection = false;
|
|
|
|
Monitor.Guard gaurdCondition = monitor.newGuard(this::returnFalse);
|
|
|
|
if (monitor.enterIf(gaurdCondition)) {
|
|
try {
|
|
System.out.println("Entered in critical section");
|
|
enteredInCriticalSection = true;
|
|
} finally {
|
|
monitor.leave();
|
|
}
|
|
}
|
|
|
|
Assert.assertFalse(enteredInCriticalSection);
|
|
}
|
|
|
|
private boolean returnTrue() {
|
|
return true;
|
|
}
|
|
|
|
private boolean returnFalse() {
|
|
return false;
|
|
}
|
|
}
|