package turin.context;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import javax.swing.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import static org.junit.Assert.*;
public class ContextTest {
class MyContext extends Context<String> {
}
@After
public void tearDown() throws Exception {
}
@Before
public void setUp() throws Exception {
}
@Test
public void emptyCase() {
MyContext ctx = new MyContext();
assertFalse(ctx.get().isPresent());
assertFalse(ctx.get().isPresent());
}
@Test
public void simpleCase() {
MyContext ctx = new MyContext();
ctx.enterContext("foo");
assertEquals(Optional.of("foo"), ctx.get());
}
@Test
public void theMostRecentPrevails() {
MyContext ctx = new MyContext();
ctx.enterContext("a");
ctx.enterContext("b");
ctx.enterContext("c");
assertEquals(Optional.of("c"), ctx.get());
}
@Test
public void testEnterAndExit() {
MyContext ctx = new MyContext();
ctx.enterContext("foo");
ctx.exitContext();
assertEquals(Optional.empty(), ctx.get());
}
@Test
public void onExitThePreviousValueIsRestores() {
MyContext ctx = new MyContext();
ctx.enterContext("a");
ctx.enterContext("b");
ctx.enterContext("c");
ctx.exitContext();
ctx.exitContext();
assertEquals(Optional.of("a"), ctx.get());
}
}