package org.jdesktop.swingx.plaf;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertThat;
import java.awt.Insets;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.border.Border;
import org.jdesktop.swingx.prompt.BuddySupport;
import org.jdesktop.test.EDTRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(EDTRunner.class)
public class BuddyLayoutAndBorderTest {
private BuddyLayoutAndBorder blab;
private JTextField textField;
@Before
public void setup() {
textField = new JTextField();
blab = new BuddyLayoutAndBorder();
blab.install(textField);
}
@Test
public void testBorder() throws Exception {
Border newBorder = BorderFactory.createEmptyBorder();
textField.setBorder(newBorder);
assertNotSame("Border should have been wrapped.", newBorder, textField.getBorder());
}
@Test
public void testUninstall() throws Exception {
blab.uninstall();
Border newBorder = BorderFactory.createEmptyBorder();
textField.setBorder(newBorder);
assertSame("Border should NOT have been wrapped.", newBorder, textField.getBorder());
}
@Test
public void testPreferredWidth() throws Exception {
JButton btn = new JButton("hey");
int txtWidth = textField.getPreferredSize().width;
// int btnWidth = btn.getPreferredSize().width;
assertSame(txtWidth, blab.preferredLayoutSize(textField).width);
BuddySupport.addLeft(btn, textField);
assertSame(String.format("preferred layout size should be %d", txtWidth),
txtWidth, blab.preferredLayoutSize(textField).width);
btn.setVisible(false);
assertSame(txtWidth, blab.preferredLayoutSize(textField).width);
}
@Test
public void testBorderInsets() throws Exception {
JButton btn = new JButton("hey");
int left = blab.getBorderInsets(textField).left;
int btnWidth = btn.getPreferredSize().width;
BuddySupport.addLeft(btn, textField);
assertSame(btn, BuddySupport.getLeft(textField).get(0));
assertSame(left + btnWidth, blab.getBorderInsets(textField).left);
btn.setVisible(false);
assertSame(left, blab.getBorderInsets(textField).left);
}
@Test
public void testGetBorderInsetsWithNullDelegate() {
textField.setBorder(null);
blab.install(textField);
assertThat(blab.getRealBorderInsets(), is(new Insets(0, 0, 0, 0)));
}
}