aboutsummaryrefslogtreecommitdiffstats
path: root/tests/server-side
diff options
context:
space:
mode:
authorJohannes Dahlström <johannes.dahlstrom@vaadin.com>2011-11-23 15:20:09 +0000
committerJohannes Dahlström <johannes.dahlstrom@vaadin.com>2011-11-23 15:20:09 +0000
commitac561eda549c483d5edb8d785814f1b0dfa29808 (patch)
treec54d962065fdda5a65e6c9d1f039c1f365cec218 /tests/server-side
parentf6a57e1d40de2728d1650a6060e58c19407d0aef (diff)
downloadvaadin-framework-ac561eda549c483d5edb8d785814f1b0dfa29808.tar.gz
vaadin-framework-ac561eda549c483d5edb8d785814f1b0dfa29808.zip
Tests for #7668 - re-adding a component at an index before its current one does nothing
svn changeset:22112/svn branch:6.7
Diffstat (limited to 'tests/server-side')
-rw-r--r--tests/server-side/com/vaadin/tests/server/component/abstractorderedlayout/AddComponentsTest.java92
-rw-r--r--tests/server-side/com/vaadin/tests/server/component/csslayout/AddComponentsTest.java87
2 files changed, 179 insertions, 0 deletions
diff --git a/tests/server-side/com/vaadin/tests/server/component/abstractorderedlayout/AddComponentsTest.java b/tests/server-side/com/vaadin/tests/server/component/abstractorderedlayout/AddComponentsTest.java
new file mode 100644
index 0000000000..3df4d5ff5d
--- /dev/null
+++ b/tests/server-side/com/vaadin/tests/server/component/abstractorderedlayout/AddComponentsTest.java
@@ -0,0 +1,92 @@
+package com.vaadin.tests.server.component.abstractorderedlayout;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.fail;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.AbstractOrderedLayout;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Layout;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Label;
+
+public class AddComponentsTest {
+
+ Component[] children = new Component[] {
+ new Label("A"), new Label("B"),
+ new Label("C"), new Label("D") };
+
+ @Test
+ public void moveComponentsBetweenLayouts() {
+ AbstractOrderedLayout layout1 = new HorizontalLayout();
+ AbstractOrderedLayout layout2 = new VerticalLayout();
+
+ layout1.addComponent(children[0]);
+ layout1.addComponent(children[1]);
+
+ layout2.addComponent(children[2]);
+ layout2.addComponent(children[3]);
+
+ layout2.addComponent(children[1], 1);
+ assertOrder(layout1, new int[] { 0 });
+ assertOrder(layout2, new int[] { 2, 1, 3 });
+
+ layout1.addComponent(children[3], 0);
+ assertOrder(layout1, new int[] { 3, 0 });
+ assertOrder(layout2, new int[] { 2, 1 });
+ }
+
+ @Test
+ public void shuffleChildComponents() {
+ shuffleChildComponents(new HorizontalLayout());
+ shuffleChildComponents(new VerticalLayout());
+ }
+
+ private void shuffleChildComponents(AbstractOrderedLayout layout) {
+
+ for (int i = 0; i < children.length; ++i) {
+ layout.addComponent(children[i], i);
+ }
+
+ assertOrder(layout, new int[] { 0, 1, 2, 3 });
+
+ // Move C from #2 to #1
+ // Exhibits defect #7668
+ layout.addComponent(children[2], 1);
+ assertOrder(layout, new int[] { 0, 2, 1, 3 });
+
+ // Move C from #1 to #4 (which becomes #3 when #1 is erased)
+ layout.addComponent(children[2], 4);
+ assertOrder(layout, new int[] { 0, 1, 3, 2 });
+
+ // Keep everything in place
+ layout.addComponent(children[1], 1);
+ assertOrder(layout, new int[] { 0, 1, 3, 2 });
+
+ // Move D from #2 to #0
+ layout.addComponent(children[3], 0);
+ assertOrder(layout, new int[] { 3, 0, 1, 2 });
+ }
+
+ /**
+ * Asserts that layout has the components in children
+ * in the order specified by indices.
+ */
+ private void assertOrder(Layout layout, int[] indices) {
+ Iterator<?> i = layout.getComponentIterator();
+ try {
+ for(int index : indices) {
+ assertSame(children[index], i.next());
+ }
+ assertFalse("Too many components in layout", i.hasNext());
+ } catch(NoSuchElementException e) {
+ fail("Too few components in layout");
+ }
+ }
+}
diff --git a/tests/server-side/com/vaadin/tests/server/component/csslayout/AddComponentsTest.java b/tests/server-side/com/vaadin/tests/server/component/csslayout/AddComponentsTest.java
new file mode 100644
index 0000000000..6e69dfe915
--- /dev/null
+++ b/tests/server-side/com/vaadin/tests/server/component/csslayout/AddComponentsTest.java
@@ -0,0 +1,87 @@
+package com.vaadin.tests.server.component.csslayout;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.fail;
+
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Layout;
+
+public class AddComponentsTest {
+
+ private Component[] children = new Component[] {
+ new Label("A"), new Label("B"),
+ new Label("C"), new Label("D") };
+
+ @Test
+ public void moveComponentsBetweenLayouts() {
+ CssLayout layout1 = new CssLayout();
+ CssLayout layout2 = new CssLayout();
+
+ layout1.addComponent(children[0]);
+ layout1.addComponent(children[1]);
+
+ layout2.addComponent(children[2]);
+ layout2.addComponent(children[3]);
+
+ layout2.addComponent(children[1], 1);
+ assertOrder(layout1, new int[] { 0 });
+ assertOrder(layout2, new int[] { 2, 1, 3 });
+
+ layout1.addComponent(children[3], 0);
+ assertOrder(layout1, new int[] { 3, 0 });
+ assertOrder(layout2, new int[] { 2, 1 });
+ }
+
+ @Test
+ public void shuffleChildComponents() {
+ CssLayout layout = new CssLayout();
+
+ for (int i = 0; i < children.length; ++i) {
+ layout.addComponent(children[i], i);
+ }
+
+ assertOrder(layout, new int[] { 0, 1, 2, 3 });
+
+ // Move C from #2 to #1
+ // Exhibits defect #7668
+ layout.addComponent(children[2], 1);
+ assertOrder(layout, new int[] { 0, 2, 1, 3 });
+
+ // Move C from #1 to #4 (which becomes #3 when #1 is erased)
+ layout.addComponent(children[2], 4);
+ assertOrder(layout, new int[] { 0, 1, 3, 2 });
+
+ // Keep everything in place
+ layout.addComponent(children[1], 1);
+ assertOrder(layout, new int[] { 0, 1, 3, 2 });
+
+ // Move D from #2 to #0
+ layout.addComponent(children[3], 0);
+ assertOrder(layout, new int[] { 3, 0, 1, 2 });
+ }
+
+ /**
+ * Asserts that layout has the components in children
+ * in the order specified by indices.
+ */
+ private void assertOrder(Layout layout, int[] indices) {
+ Iterator<?> i = layout.getComponentIterator();
+ try {
+ for(int index : indices) {
+ assertSame(children[index], i.next());
+ }
+ assertFalse("Too many components in layout", i.hasNext());
+ } catch(NoSuchElementException e) {
+ fail("Too few components in layout");
+ }
+ }
+}