|
|
@@ -4,6 +4,9 @@ import static org.hamcrest.MatcherAssert.assertThat;
|
|
|
import static org.hamcrest.collection.IsArrayWithSize.arrayWithSize;
|
|
|
import static org.mockito.Mockito.*;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
import javax.swing.JTextField;
|
|
|
import javax.swing.event.DocumentListener;
|
|
|
import javax.swing.text.BadLocationException;
|
|
|
@@ -38,80 +41,62 @@ class AutoGrowPanelTest extends SwingTestCase {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @Test
|
|
|
- void testAlwaysHasAtLeastOneComponent() {
|
|
|
- final MockComponent wrapper = spy(new MockComponent());
|
|
|
-
|
|
|
- AutoGrowPanel panel = new AutoGrowPanel(() -> wrapper);
|
|
|
-
|
|
|
- assertThat(panel.getComponents(), arrayWithSize(1));
|
|
|
+ List<MockComponent> components = new ArrayList<>();
|
|
|
+
|
|
|
+ private MockComponent mocked() {
|
|
|
+ final MockComponent mock = spy(new MockComponent());
|
|
|
+ components.add(mock);
|
|
|
+ return mock;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ private AutoGrowPanel create(MockComponent... mocks) {
|
|
|
+ return new AutoGrowPanel(m -> m, this::mocked,
|
|
|
+ m -> {}, i -> {}, mocks);
|
|
|
+ }
|
|
|
+
|
|
|
@Test
|
|
|
- void testInputParamIsZeroIndex() {
|
|
|
- final MockComponent[] wrapper = {
|
|
|
- spy(new MockComponent()),
|
|
|
- spy(new MockComponent())
|
|
|
- };
|
|
|
+ void testAlwaysHasAtLeastOneComponent() {
|
|
|
+ AutoGrowPanel panel = create();
|
|
|
|
|
|
- AutoGrowPanel panel = new AutoGrowPanel((i) -> wrapper[i], 1);
|
|
|
-
|
|
|
- verify(wrapper[0]).addDocumentListener(any());
|
|
|
- verify(wrapper[1], never()).addDocumentListener(any());
|
|
|
assertThat(panel.getComponents(), arrayWithSize(1));
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
- void testCreatesGivenNumberOfChildren() {
|
|
|
- final MockComponent[] wrapper = {
|
|
|
- spy(new MockComponent()),
|
|
|
- spy(new MockComponent())
|
|
|
- };
|
|
|
-
|
|
|
- AutoGrowPanel panel = new AutoGrowPanel((i) -> wrapper[i], 2);
|
|
|
+ void testCreatesGivenNumberOfChildrenPlusOne() {
|
|
|
+ AutoGrowPanel panel = create(mocked(), mocked());
|
|
|
|
|
|
- assertThat(panel.getComponents(), arrayWithSize(2));
|
|
|
+ assertThat(panel.getComponents(), arrayWithSize(3));
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
void testEnteringContentTriggersNewRow() {
|
|
|
- final MockComponent[] wrapper = {
|
|
|
- spy(new MockComponent()),
|
|
|
- spy(new MockComponent())
|
|
|
- };
|
|
|
-
|
|
|
- AutoGrowPanel panel = new AutoGrowPanel((i) -> wrapper[i], 1);
|
|
|
+ AutoGrowPanel panel = create();
|
|
|
getTestFrame().add(panel);
|
|
|
- wrapper[0].setText("A");
|
|
|
-
|
|
|
+
|
|
|
+ components.get(0).setText("A");
|
|
|
assertThat(panel.getComponents(), arrayWithSize(2));
|
|
|
+
|
|
|
+ components.get(1).setText("B");
|
|
|
+ assertThat(panel.getComponents(), arrayWithSize(3));
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
void testEnteringEmptyContentDoesNotTrigger() {
|
|
|
- final MockComponent[] wrapper = {
|
|
|
- spy(new MockComponent()),
|
|
|
- spy(new MockComponent())
|
|
|
- };
|
|
|
-
|
|
|
- AutoGrowPanel panel = new AutoGrowPanel((i) -> wrapper[i], 1);
|
|
|
+ AutoGrowPanel panel = create();
|
|
|
getTestFrame().add(panel);
|
|
|
- wrapper[0].setText("");
|
|
|
+ components.get(0).setText("");
|
|
|
|
|
|
assertThat(panel.getComponents(), arrayWithSize(1));
|
|
|
- verify(wrapper[0], never()).removeDocumentListener(any());
|
|
|
+ verify(components.get(0), never()).removeDocumentListener(any());
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
void testEmptyingContentClearsPanel() {
|
|
|
- final MockComponent[] wrapper = {
|
|
|
- spy(new MockComponent("A")),
|
|
|
- spy(new MockComponent())
|
|
|
- };
|
|
|
+ final MockComponent mock = spy(new MockComponent("A"));
|
|
|
|
|
|
- AutoGrowPanel panel = new AutoGrowPanel((i) -> wrapper[i], 2);
|
|
|
+ AutoGrowPanel panel = create(mock);
|
|
|
getTestFrame().add(panel);
|
|
|
- wrapper[0].setText("");
|
|
|
+ mock.setText("");
|
|
|
|
|
|
assertThat(panel.getComponents(), arrayWithSize(1));
|
|
|
}
|
|
|
@@ -119,14 +104,11 @@ class AutoGrowPanelTest extends SwingTestCase {
|
|
|
|
|
|
@Test
|
|
|
void testChangingTextDoesNotDeleteRow() throws BadLocationException {
|
|
|
- final MockComponent[] wrapper = {
|
|
|
- spy(new MockComponent("A")),
|
|
|
- spy(new MockComponent())
|
|
|
- };
|
|
|
+ final MockComponent mock = spy(new MockComponent("A"));
|
|
|
|
|
|
- AutoGrowPanel panel = new AutoGrowPanel((i) -> wrapper[i], 2);
|
|
|
+ AutoGrowPanel panel = create(mock);
|
|
|
getTestFrame().add(panel);
|
|
|
- wrapper[0].getDocument().insertString(0, "B", null);
|
|
|
+ mock.getDocument().insertString(0, "B", null);
|
|
|
|
|
|
assertThat(panel.getComponents(), arrayWithSize(2));
|
|
|
}
|