/** * */ package org.jdesktop.swingx; import java.awt.Component; import java.awt.Container; import java.lang.reflect.Field; import java.util.Map; import junit.framework.TestCase; import org.jdesktop.swingx.multisplitpane.DefaultSplitPaneModel; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; /** * Submitted on the forums to test for a bug that was since fixed by Hans * Muller in {@code MultiSplitPaneLayout} version 1.4. * * @author Bruce Alspaugh */ @RunWith(JUnit4.class) public class JXMultiSplitPaneUnitTest extends TestCase { private JXMultiSplitPane multiSplitPane; @Before public void setUpJ4() throws Exception { setUp(); } @After public void tearDownJ4() throws Exception { tearDown(); } @Override protected void setUp() throws Exception { DefaultSplitPaneModel model = new DefaultSplitPaneModel(); MultiSplitLayout layout = new MultiSplitLayout(model); multiSplitPane = new JXMultiSplitPane(); multiSplitPane.setLayout(layout); } @SuppressWarnings("unchecked") private Map<String, Component> getChildMap(MultiSplitLayout layout) { Field fields[] = MultiSplitLayout.class.getDeclaredFields(); try { for (Field f : fields) { if ("childMap".equals(f.getName())) { f.setAccessible(true); return (Map<String, Component>) f.get(layout); } } } catch (IllegalAccessException ex) { } return null; } @Test public final void testLayoutAddRemoveComponent() { Component testComponent = new Container(); MultiSplitLayout layout = multiSplitPane.getMultiSplitLayout(); Map<String, Component> childMap = getChildMap(layout); assertEquals(0, childMap.size()); layout.addLayoutComponent(DefaultSplitPaneModel.LEFT, testComponent); assertEquals(testComponent, childMap.get(DefaultSplitPaneModel.LEFT)); layout.removeLayoutComponent(testComponent); assertEquals(0, childMap.size()); } }