package org.esa.snap.netbeans.docwin;
import org.junit.After;
import org.junit.Test;
import org.openide.windows.TopComponent;
import java.util.Arrays;
import java.util.List;
import static org.junit.Assert.assertEquals;
/**
* @author Norman
*/
public class WindowUtilitiesTest {
@After
public void tearDown() throws Exception {
WindowUtilities.tcProvider = WindowUtilities.DEFAULT_TC_PROVIDER;
}
@Test
public void testGetUniqueTitle() throws Exception {
WindowUtilities.tcProvider = () -> Arrays.asList(createTC("A"),
createMyTC("B"),
createTC("C"));
assertEquals("A (2)", WindowUtilities.getUniqueTitle("A", TopComponent.class));
assertEquals("B (2)", WindowUtilities.getUniqueTitle("B", TopComponent.class));
assertEquals("C (2)", WindowUtilities.getUniqueTitle("C", TopComponent.class));
assertEquals("D", WindowUtilities.getUniqueTitle("D", TopComponent.class));
assertEquals("A", WindowUtilities.getUniqueTitle("A", MyTopComponent.class));
assertEquals("B (2)", WindowUtilities.getUniqueTitle("B", MyTopComponent.class));
assertEquals("C", WindowUtilities.getUniqueTitle("C", MyTopComponent.class));
assertEquals("D", WindowUtilities.getUniqueTitle("D", MyTopComponent.class));
}
@Test
public void testGetOpened() throws Exception {
WindowUtilities.tcProvider = () -> Arrays.asList(createMyOtherTC("A"),
createMyTC("B"),
createTC("C"),
createTC("D"),
createMyOtherTC("E"));
assertEquals(5, WindowUtilities.getOpened(TopComponent.class).count());
assertEquals(3, WindowUtilities.getOpened(MyTopComponent.class).count());
assertEquals(2, WindowUtilities.getOpened(MyOtherTopComponent.class).count());
assertEquals(2, WindowUtilities.getOpened(Runnable.class).count());
}
@Test
public void testGetOpenedWithContainer() throws Exception {
WindowUtilities.tcProvider = () -> Arrays.asList(createMyOtherTC("A"),
createMyTC("B"),
createTC("C"),
createMyContainerTC("D",
createTC("Da"),
createMyTC("Db")),
createTC("E"),
createMyOtherTC("F"),
createMyContainerTC("G",
createTC("Ga"),
createMyOtherTC("Gb"),
createMyTC("Gc")));
assertEquals(12, WindowUtilities.getOpened(TopComponent.class).count());
assertEquals(6, WindowUtilities.getOpened(MyTopComponent.class).count());
assertEquals(3, WindowUtilities.getOpened(MyOtherTopComponent.class).count());
assertEquals(3, WindowUtilities.getOpened(Runnable.class).count());
assertEquals(2, WindowUtilities.getOpened(WindowContainer.class).count());
}
TopComponent createTC(String displayName) {
TopComponent topComponent = new TopComponent();
topComponent.setDisplayName(displayName);
return topComponent;
}
TopComponent createMyTC(String displayName) {
TopComponent topComponent = new MyTopComponent();
topComponent.setDisplayName(displayName);
return topComponent;
}
TopComponent createMyOtherTC(String displayName) {
TopComponent topComponent = new MyOtherTopComponent();
topComponent.setDisplayName(displayName);
return topComponent;
}
TopComponent createMyContainerTC(String displayName, TopComponent... topComponents) {
TopComponent topComponent = new MyContainerTopComponent(Arrays.asList(topComponents));
topComponent.setDisplayName(displayName);
return topComponent;
}
static class MyTopComponent extends TopComponent {
}
static class MyOtherTopComponent extends MyTopComponent implements Runnable {
@Override
public void run() {
}
}
static class MyContainerTopComponent extends TopComponent implements WindowContainer<TopComponent> {
final List<TopComponent> topComponents;
public MyContainerTopComponent(List<TopComponent> topComponents) {
this.topComponents = topComponents;
}
@Override
public TopComponent getSelectedWindow() {
return null;
}
@Override
public List<TopComponent> getOpenedWindows() {
return topComponents;
}
}
}