package org.multiverse.api.blocking;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.multiverse.TestUtils.*;
public class DefaultRetryLatch_openTest {
@Before
public void setUp(){
clearCurrentThreadInterruptedStatus();
}
@Test
public void whenAlreadyOpenAndDifferentEra() {
DefaultRetryLatch latch = new DefaultRetryLatch();
long era = latch.getEra();
latch.open(era);
latch.open(era + 1);
assertEquals(era, latch.getEra());
assertOpen(latch);
}
@Test
public void whenAlreadyOpenAndSameEra() {
DefaultRetryLatch latch = new DefaultRetryLatch();
long era = latch.getEra();
latch.open(era);
latch.open(era);
assertEquals(era, latch.getEra());
assertOpen(latch);
}
@Test
public void whenClosedAndDifferentEra() {
DefaultRetryLatch latch = new DefaultRetryLatch();
long era = latch.getEra();
latch.open(era + 1);
assertEquals(era, latch.getEra());
assertClosed(latch);
}
@Test
public void whenClosedAndSameEra() {
DefaultRetryLatch latch = new DefaultRetryLatch();
long era = latch.getEra();
latch.open(era);
assertEquals(era, latch.getEra());
assertOpen(latch);
}
}