/******************************************************************************* * Mission Control Technologies, Copyright (c) 2009-2012, United States Government * as represented by the Administrator of the National Aeronautics and Space * Administration. All rights reserved. * * The MCT platform is licensed under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0. * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * * MCT includes source code licensed under additional open source licenses. See * the MCT Open Source Licenses file included with this distribution or the About * MCT Licenses dialog available at runtime from the MCT Help menu for additional * information. *******************************************************************************/ package gov.nasa.arc.mct.table.gui; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotSame; import static org.testng.Assert.assertSame; import java.awt.Component; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import javax.swing.JPanel; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class ConstraintBuilderTest { private JPanel panel; private ConstraintBuilder builder; @BeforeMethod public void init() { panel = new JPanel(); builder = new ConstraintBuilder(panel); } @Test public void testInitialization() { GridBagConstraints defaults = new GridBagConstraints(); // We default to grid position 0,0. defaults.gridx = 0; defaults.gridy = 0; GridBagConstraints newConstraints = builder.getConstraints(); assertConstraintsEqual(newConstraints, defaults); } private void assertConstraintsEqual(GridBagConstraints actual, GridBagConstraints expected) { assertEquals(actual.anchor, expected.anchor); assertEquals(actual.fill, expected.fill); assertEquals(actual.gridheight, expected.gridheight); assertEquals(actual.gridwidth, expected.gridwidth); assertEquals(actual.gridx, expected.gridx); assertEquals(actual.gridy, expected.gridy); assertEquals(actual.insets, expected.insets); assertEquals(actual.ipadx, expected.ipadx); assertEquals(actual.ipady, expected.ipady); assertEquals(actual.weightx, expected.weightx); assertEquals(actual.weighty, expected.weighty); } @Test public void testReset() { GridBagConstraints defaults = builder.getConstraints(); builder.span(2,3); builder.reset(); assertConstraintsEqual(builder.getConstraints(), defaults); JPanel dummy = new JPanel(); builder.at(0,0).add(dummy); // We've moved to a new column. defaults.gridx = 1; defaults.gridy = 0; assertConstraintsEqual(builder.getConstraints(), defaults); // Test moving to a new row. defaults.gridx = 0; ++defaults.gridy; assertConstraintsEqual(builder.nextRow().getConstraints(), defaults); } @Test public void testMakeDefault() { GridBagConstraints defaults = builder.getConstraints(); assertEquals(defaults.fill, GridBagConstraints.NONE); builder.vfill().makeDefault(); builder.reset(); GridBagConstraints newConstraints = builder.getConstraints(); assertEquals(newConstraints.fill, GridBagConstraints.VERTICAL); } @Test public void testInsets() { GridBagConstraints defaults = builder.getConstraints(); assertEquals(defaults.insets, new Insets(0,0,0,0)); builder.insets(1, 2, 3, 4); GridBagConstraints newConstraints = builder.getConstraints(); assertEquals(newConstraints.insets, new Insets(1,2,3,4)); } @Test public void testgetConstraints() { GridBagConstraints constraints = builder.getConstraints(); // Another call should give us a unique object. assertNotSame(builder.getConstraints(), constraints); } @Test public void testAt() { GridBagConstraints c; c = builder.at(2,1).getConstraints(); assertEquals(c.gridy, 2); assertEquals(c.gridx, 1); c = builder.at(4, 3).getConstraints(); assertEquals(c.gridy, 4); assertEquals(c.gridx, 3); } @Test(enabled=false) public void testSpan() { GridBagConstraints c; c = builder.span(2,1).getConstraints(); assertEquals(c.gridheight, 2); assertEquals(c.gridwidth, 1); c = builder.span(4, 3).getConstraints(); assertEquals(c.gridheight, 4); assertEquals(c.gridwidth, 3); // getConstraints() should have reset to a 1x1 span. c = builder.getConstraints(); assertEquals(c.gridheight, 1); assertEquals(c.gridwidth, 1); } @Test public void testHpad() { GridBagConstraints c; c = builder.hpad(100).getConstraints(); assertEquals(c.ipadx, 100); c = builder.hpad(5).getConstraints(); assertEquals(c.ipadx, 5); } @Test public void testVpad() { GridBagConstraints c; c = builder.vpad(100).getConstraints(); assertEquals(c.ipady, 100); c = builder.vpad(5).getConstraints(); assertEquals(c.ipady, 5); } @Test public void testBaseline_w() { GridBagConstraints c; c = builder.baseline_w().getConstraints(); assertEquals(c.anchor, GridBagConstraints.BASELINE_LEADING); } @Test public void testBaseline_e() { GridBagConstraints c; c = builder.baseline_e().getConstraints(); assertEquals(c.anchor, GridBagConstraints.BASELINE_TRAILING); } @Test public void testBaseline_centered() { GridBagConstraints c; c = builder.baseline_centered().getConstraints(); assertEquals(c.anchor, GridBagConstraints.BASELINE); } @Test public void testNw() { GridBagConstraints c; c = builder.nw().getConstraints(); assertEquals(c.anchor, GridBagConstraints.NORTHWEST); } @Test public void testSw() { GridBagConstraints c; c = builder.sw().getConstraints(); assertEquals(c.anchor, GridBagConstraints.SOUTHWEST); } @Test public void w() { GridBagConstraints c; c = builder.w().getConstraints(); assertEquals(c.anchor, GridBagConstraints.WEST); } @Test public void testHfill() { GridBagConstraints c; c = builder.hfill().getConstraints(); assertEquals(c.fill, GridBagConstraints.HORIZONTAL); } @Test public void testVfill() { GridBagConstraints c; c = builder.vfill().getConstraints(); assertEquals(c.fill, GridBagConstraints.VERTICAL); } @Test public void testHvfill() { GridBagConstraints c; c = builder.hvfill().getConstraints(); assertEquals(c.fill, GridBagConstraints.BOTH); } @Test public void testAdd() { builder.nw().makeDefault(); JPanel dummy = new JPanel(); GridBagConstraints constraints = builder.getConstraints(); builder.add(dummy); GridBagLayout layout = (GridBagLayout) panel.getLayout(); GridBagConstraints actual = layout.getConstraints(dummy); assertConstraintsEqual(actual, constraints); } @Test public void testAddMultiple() { JPanel dummy1 = new JPanel(); JPanel dummy2 = new JPanel(); builder.add(dummy1, dummy2); // Should have 1 child for grid location 0,0. assertEquals(panel.getComponentCount(), 1); JPanel c = (JPanel) panel.getComponents()[0]; // That child should have 2 children for the dummy panels. assertEquals(c.getComponentCount(), 2); assertSame(c.getComponents()[0], dummy1); assertSame(c.getComponents()[1], dummy2); } @Test public void testNextRow() { GridBagConstraints defaults = builder.getConstraints(); builder.nextRow(); assertEquals(builder.getConstraints().gridy, defaults.gridy + 1); } @Test public void testNextColumn() { GridBagConstraints defaults = builder.getConstraints(); builder.nextColumn(); assertEquals(builder.getConstraints().gridx, defaults.gridx + 1); } @Test public void testHbox() { Component c = ConstraintBuilder.hbox(5); assertEquals(c.getMinimumSize().width, 5); assertEquals(c.getMinimumSize().height, 0); assertEquals(c.getPreferredSize().width, 5); assertEquals(c.getPreferredSize().height, 0); assertEquals(c.getMaximumSize().width, 5); assertEquals(c.getMaximumSize().height, 0); Component c2 = ConstraintBuilder.hbox(5, 10, 15); assertEquals(c2.getMinimumSize().width, 5); assertEquals(c2.getMinimumSize().height, 0); assertEquals(c2.getPreferredSize().width, 10); assertEquals(c2.getPreferredSize().height, 0); assertEquals(c2.getMaximumSize().width, 15); assertEquals(c2.getMaximumSize().height, 0); } }