diff options
author | Artur Signell <artur.signell@itmill.com> | 2010-03-02 07:15:00 +0000 |
---|---|---|
committer | Artur Signell <artur.signell@itmill.com> | 2010-03-02 07:15:00 +0000 |
commit | 27aa8c33e28deb9516eac2f702904fbd1dae9e6f (patch) | |
tree | 6328d8931416270b5884d07a9666eda3f3aeaf45 /tests | |
parent | ddf1608c2196ac3374683c5a5998f8f8f0bc2ee4 (diff) | |
download | vaadin-framework-27aa8c33e28deb9516eac2f702904fbd1dae9e6f.tar.gz vaadin-framework-27aa8c33e28deb9516eac2f702904fbd1dae9e6f.zip |
#4192 - HierarchicalContainer implements Container.Filterable but does not allow filtering
svn changeset:11576/svn branch:6.3
Diffstat (limited to 'tests')
3 files changed, 144 insertions, 61 deletions
diff --git a/tests/src/com/vaadin/tests/server/container/AbstractContainerTest.java b/tests/src/com/vaadin/tests/server/container/AbstractContainerTest.java index 09e9fff169..e20f54dc39 100644 --- a/tests/src/com/vaadin/tests/server/container/AbstractContainerTest.java +++ b/tests/src/com/vaadin/tests/server/container/AbstractContainerTest.java @@ -81,9 +81,10 @@ public abstract class AbstractContainerTest extends TestCase { }
- protected static final Object PROP1 = "PROP1";
- protected static final Object PROP2 = "PROP2";
- protected static final Object PROP3 = "PROP3";
+ protected static final Object FULLY_QUALIFIED_NAME = "PROP1";
+ protected static final Object SIMPLE_NAME = "simplename";
+ protected static final Object REVERSE_FULLY_QUALIFIED_NAME = "PROP2";
+ protected static final Object ID_NUMBER = "PROP3";
protected void testBasicContainerOperations(Container container) {
initializeContainer(container);
@@ -165,7 +166,7 @@ public abstract class AbstractContainerTest extends TestCase { initializeContainer(container);
// Filter by "contains ab"
- container.addContainerFilter(PROP1, "ab", false, false);
+ container.addContainerFilter(FULLY_QUALIFIED_NAME, "ab", false, false);
validateContainer(container, "com.vaadin.data.BufferedValidatable",
"com.vaadin.ui.TabSheet",
@@ -174,7 +175,8 @@ public abstract class AbstractContainerTest extends TestCase { // Filter by "contains da" (reversed as ad here)
container.removeAllContainerFilters();
- container.addContainerFilter(PROP2, "ad", false, false);
+ container.addContainerFilter(REVERSE_FULLY_QUALIFIED_NAME, "ad", false,
+ false);
validateContainer(container, "com.vaadin.data.Buffered",
"com.vaadin.terminal.gwt.server.ComponentSizeValidator",
@@ -188,12 +190,14 @@ public abstract class AbstractContainerTest extends TestCase { initializeContainer(sortable);
// Filter by "contains ab"
- filterable.addContainerFilter(PROP1, "ab", false, false);
+ filterable.addContainerFilter(FULLY_QUALIFIED_NAME, "ab", false, false);
// Must be able to sort based on PROP1 for this test
- assertTrue(sortable.getSortableContainerPropertyIds().contains(PROP1));
+ assertTrue(sortable.getSortableContainerPropertyIds().contains(
+ FULLY_QUALIFIED_NAME));
- sortable.sort(new Object[] { PROP1 }, new boolean[] { true });
+ sortable.sort(new Object[] { FULLY_QUALIFIED_NAME },
+ new boolean[] { true });
validateContainer(sortable, "com.vaadin.data.BufferedValidatable",
"com.vaadin.ui.TableFieldFactory",
@@ -207,17 +211,21 @@ public abstract class AbstractContainerTest extends TestCase { initializeContainer(container);
// Must be able to sort based on PROP1 for this test
- assertTrue(sortable.getSortableContainerPropertyIds().contains(PROP1));
- assertTrue(sortable.getSortableContainerPropertyIds().contains(PROP2));
+ assertTrue(sortable.getSortableContainerPropertyIds().contains(
+ FULLY_QUALIFIED_NAME));
+ assertTrue(sortable.getSortableContainerPropertyIds().contains(
+ REVERSE_FULLY_QUALIFIED_NAME));
- sortable.sort(new Object[] { PROP1 }, new boolean[] { true });
+ sortable.sort(new Object[] { FULLY_QUALIFIED_NAME },
+ new boolean[] { true });
validateContainer(container, "com.vaadin.Application",
"com.vaadin.util.SerializerHelper",
"com.vaadin.terminal.ApplicationResource", "blah",
sampleData.length);
- sortable.sort(new Object[] { PROP2 }, new boolean[] { true });
+ sortable.sort(new Object[] { REVERSE_FULLY_QUALIFIED_NAME },
+ new boolean[] { true });
validateContainer(container,
"com.vaadin.terminal.gwt.server.ApplicationPortlet2",
@@ -233,17 +241,30 @@ public abstract class AbstractContainerTest extends TestCase { container.removeContainerProperty(propertyId);
}
- container.addContainerProperty(PROP1, String.class, "");
- container.addContainerProperty(PROP2, String.class, null);
- container.addContainerProperty(PROP3, Integer.class, null);
+ container.addContainerProperty(FULLY_QUALIFIED_NAME, String.class, "");
+ container.addContainerProperty(SIMPLE_NAME, String.class, "");
+ container.addContainerProperty(REVERSE_FULLY_QUALIFIED_NAME,
+ String.class, null);
+ container.addContainerProperty(ID_NUMBER, Integer.class, null);
for (int i = 0; i < sampleData.length; i++) {
String id = sampleData[i];
Item item = container.addItem(id);
- item.getItemProperty(PROP1).setValue(sampleData[i]);
- item.getItemProperty(PROP2).setValue(reverse(sampleData[i]));
- item.getItemProperty(PROP3).setValue(i);
+ item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(sampleData[i]);
+ item.getItemProperty(SIMPLE_NAME).setValue(
+ getSimpleName(sampleData[i]));
+ item.getItemProperty(REVERSE_FULLY_QUALIFIED_NAME).setValue(
+ reverse(sampleData[i]));
+ item.getItemProperty(ID_NUMBER).setValue(i);
+ }
+ }
+
+ protected String getSimpleName(String name) {
+ if (name.contains(".")) {
+ return name.substring(name.lastIndexOf('.') + 1);
+ } else {
+ return name;
}
}
diff --git a/tests/src/com/vaadin/tests/server/container/AbstractHierarchicalContainerTest.java b/tests/src/com/vaadin/tests/server/container/AbstractHierarchicalContainerTest.java index 12037259fd..7aeef3e1b1 100644 --- a/tests/src/com/vaadin/tests/server/container/AbstractHierarchicalContainerTest.java +++ b/tests/src/com/vaadin/tests/server/container/AbstractHierarchicalContainerTest.java @@ -9,10 +9,31 @@ import com.vaadin.data.Container.Sortable; public class AbstractHierarchicalContainerTest extends AbstractContainerTest {
+ /**
+ * @param container
+ * The container to validate
+ * @param expectedFirstItemId
+ * Expected first item id
+ * @param expectedLastItemId
+ * Expected last item id
+ * @param itemIdInSet
+ * An item id that is in the container
+ * @param itemIdNotInSet
+ * An item id that is not in the container
+ * @param expectedSize
+ * Expected number of items in the container. Not related to
+ * hierarchy.
+ * @param expectedTraversalSize
+ * Expected number of items found when traversing from the roots
+ * down to all available nodes.
+ * @param expectedRootSize
+ * Expected number of root items
+ */
private void validateHierarchicalContainer(Hierarchical container,
Object expectedFirstItemId, Object expectedLastItemId,
- Object itemIdInSet, Object itemIdNotInSet, int expectedSize,
- int expectedRootSize) {
+ Object itemIdInSet, Object itemIdNotInSet,
+ boolean rootsHaveChildren, int expectedSize,
+ int expectedTraversalSize, int expectedRootSize) {
validateContainer(container, expectedFirstItemId, expectedLastItemId,
itemIdInSet, itemIdNotInSet, expectedSize);
@@ -35,13 +56,18 @@ public class AbstractHierarchicalContainerTest extends AbstractContainerTest { assertTrue(container.areChildrenAllowed(rootId));
// all roots have children in this case
- Collection<?> children = container.getChildren(rootId);
- assertNotNull(rootId + " should have children", children);
- assertTrue(rootId + " should have children", (children.size() > 0));
+ if (rootsHaveChildren) {
+ Collection<?> children = container.getChildren(rootId);
+ assertNotNull(rootId + " should have children", children);
+ assertTrue(rootId + " should have children",
+ (children.size() > 0));
+
+ // getParent
+ for (Object childId : children) {
+ assertEquals(container.getParent(childId), rootId);
+ }
+ } else {
- // getParent
- for (Object childId : children) {
- assertEquals(container.getParent(childId), rootId);
}
}
@@ -57,7 +83,7 @@ public class AbstractHierarchicalContainerTest extends AbstractContainerTest { // removeItem of unknown items should return false
assertFalse(container.removeItem(itemIdNotInSet));
- assertEquals(expectedSize, countNodes(container));
+ assertEquals(expectedTraversalSize, countNodes(container));
validateHierarchy(container);
}
@@ -114,10 +140,11 @@ public class AbstractHierarchicalContainerTest extends AbstractContainerTest { initializeContainer(container);
int packages = 21;
+ int expectedSize = sampleData.length + packages;
validateHierarchicalContainer(container, "com",
"com.vaadin.util.SerializerHelper",
- "com.vaadin.terminal.ApplicationResource", "blah",
- sampleData.length + packages, 1);
+ "com.vaadin.terminal.ApplicationResource", "blah", true,
+ expectedSize, expectedSize, 1);
}
@@ -127,24 +154,29 @@ public class AbstractHierarchicalContainerTest extends AbstractContainerTest { initializeContainer(container);
// Must be able to sort based on PROP1 and PROP2 for this test
- assertTrue(sortable.getSortableContainerPropertyIds().contains(PROP1));
- assertTrue(sortable.getSortableContainerPropertyIds().contains(PROP2));
+ assertTrue(sortable.getSortableContainerPropertyIds().contains(
+ FULLY_QUALIFIED_NAME));
+ assertTrue(sortable.getSortableContainerPropertyIds().contains(
+ REVERSE_FULLY_QUALIFIED_NAME));
- sortable.sort(new Object[] { PROP1 }, new boolean[] { true });
+ sortable.sort(new Object[] { FULLY_QUALIFIED_NAME },
+ new boolean[] { true });
int packages = 21;
+ int expectedSize = sampleData.length + packages;
validateHierarchicalContainer(container, "com",
"com.vaadin.util.SerializerHelper",
- "com.vaadin.terminal.ApplicationResource", "blah",
- sampleData.length + packages, 1);
+ "com.vaadin.terminal.ApplicationResource", "blah", true,
+ expectedSize, expectedSize, 1);
- sortable.sort(new Object[] { PROP2 }, new boolean[] { true });
+ sortable.sort(new Object[] { REVERSE_FULLY_QUALIFIED_NAME },
+ new boolean[] { true });
validateHierarchicalContainer(container,
"com.vaadin.terminal.gwt.server.ApplicationPortlet2",
"com.vaadin.data.util.ObjectProperty",
- "com.vaadin.terminal.ApplicationResource", "blah",
- sampleData.length + packages, 1);
+ "com.vaadin.terminal.ApplicationResource", "blah", true,
+ expectedSize, expectedSize, 1);
}
@@ -154,31 +186,47 @@ public class AbstractHierarchicalContainerTest extends AbstractContainerTest { initializeContainer(container);
// Filter by "contains ab"
- filterable.addContainerFilter(PROP1, "ab", false, false);
+ filterable.addContainerFilter(FULLY_QUALIFIED_NAME, "ab", false, false);
+
+ // 20 items should remain in the container but the root should be
+ // filtered
+ int expectedSize = 20;
+ int expectedTraversalSize = 0;
+ int expectedRoots = 0;
validateHierarchicalContainer(container,
"com.vaadin.data.BufferedValidatable",
"com.vaadin.ui.TabSheet",
- "com.vaadin.terminal.gwt.client.Focusable", "blah", 20, 0);
+ "com.vaadin.terminal.gwt.client.Focusable", "blah", true,
+ expectedSize, expectedTraversalSize, expectedRoots);
// filter out every second item except hierarchy items
filterable.removeAllContainerFilters();
- filterable.addContainerFilter(PROP3, "1", false, false);
+ filterable.addContainerFilter(ID_NUMBER, "1", false, false);
int packages = 21;
int other = sampleData.length / 2;
+
+ expectedSize = packages + other;
+ expectedRoots = 1;
+ expectedTraversalSize = expectedSize;
+
validateHierarchicalContainer(container, "com", "com.vaadin.util",
- "com.vaadin.data.util.IndexedContainer",
- "com.vaadin.data.util.ObjectProperty", packages + other, 0);
+ "com.vaadin.data.util.IndexedContainer", "blah", true,
+ expectedSize, expectedTraversalSize, expectedRoots);
+
+ // Additionally remove all without 'm' in the simple name. Hierarchy is
+ // now one root only.
+ filterable.addContainerFilter(SIMPLE_NAME, "m", false, false);
- // Additionally remove all without 'm'. Hierarchy is now one root only.
- filterable.addContainerFilter(PROP1, "m", false, false);
+ expectedSize = 27;
+ expectedRoots = 1;
+ expectedTraversalSize = 1;
- validateHierarchicalContainer(container, "com.vaadin.data.Buffered",
- "com.vaadin.terminal.gwt.server.ComponentSizeValidator",
- "com.vaadin.data.util.IndexedContainer",
- "com.vaadin.terminal.gwt.client.ui.VUriFragmentUtility",
- packages + other, 0);
+ validateHierarchicalContainer(container, "com",
+ "com.vaadin.ui.UriFragmentUtility",
+ "com.vaadin.terminal.gwt.client.ui.TreeImages", "blah", false,
+ expectedSize, expectedTraversalSize, expectedRoots);
}
@@ -189,9 +237,11 @@ public class AbstractHierarchicalContainerTest extends AbstractContainerTest { container.removeContainerProperty(propertyId);
}
- container.addContainerProperty(PROP1, String.class, "");
- container.addContainerProperty(PROP2, String.class, null);
- container.addContainerProperty(PROP3, Integer.class, null);
+ container.addContainerProperty(FULLY_QUALIFIED_NAME, String.class, "");
+ container.addContainerProperty(SIMPLE_NAME, String.class, "");
+ container.addContainerProperty(REVERSE_FULLY_QUALIFIED_NAME,
+ String.class, null);
+ container.addContainerProperty(ID_NUMBER, Integer.class, null);
for (int i = 0; i < sampleData.length; i++) {
String id = sampleData[i];
@@ -204,9 +254,11 @@ public class AbstractHierarchicalContainerTest extends AbstractContainerTest { if (container.addItem(path) != null) {
assertTrue(container.setChildrenAllowed(path, false));
Item item = container.getItem(path);
- item.getItemProperty(PROP1).setValue(path);
- item.getItemProperty(PROP2).setValue(reverse(path));
- item.getItemProperty(PROP3).setValue(1);
+ item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(path);
+ item.getItemProperty(SIMPLE_NAME).setValue(getSimpleName(path));
+ item.getItemProperty(REVERSE_FULLY_QUALIFIED_NAME).setValue(
+ reverse(path));
+ item.getItemProperty(ID_NUMBER).setValue(1);
}
for (int j = 1; j < paths.length; j++) {
String parent = path;
@@ -218,9 +270,12 @@ public class AbstractHierarchicalContainerTest extends AbstractContainerTest { assertTrue(container.setChildrenAllowed(path, false));
Item item = container.getItem(path);
- item.getItemProperty(PROP1).setValue(path);
- item.getItemProperty(PROP2).setValue(reverse(path));
- item.getItemProperty(PROP3).setValue(1);
+ item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(path);
+ item.getItemProperty(SIMPLE_NAME).setValue(
+ getSimpleName(path));
+ item.getItemProperty(REVERSE_FULLY_QUALIFIED_NAME)
+ .setValue(reverse(path));
+ item.getItemProperty(ID_NUMBER).setValue(1);
}
assertTrue(container.setChildrenAllowed(parent, true));
@@ -233,9 +288,12 @@ public class AbstractHierarchicalContainerTest extends AbstractContainerTest { assertNotNull(item);
String parent = id.substring(0, id.lastIndexOf('.'));
assertTrue(container.setParent(id, parent));
- item.getItemProperty(PROP1).setValue(sampleData[i]);
- item.getItemProperty(PROP2).setValue(reverse(sampleData[i]));
- item.getItemProperty(PROP3).setValue(i % 2);
+ item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(sampleData[i]);
+ item.getItemProperty(SIMPLE_NAME).setValue(
+ getSimpleName(sampleData[i]));
+ item.getItemProperty(REVERSE_FULLY_QUALIFIED_NAME).setValue(
+ reverse(sampleData[i]));
+ item.getItemProperty(ID_NUMBER).setValue(i % 2);
}
}
diff --git a/tests/src/com/vaadin/tests/server/container/TestHierarchicalContainer.java b/tests/src/com/vaadin/tests/server/container/TestHierarchicalContainer.java index 79f1cf6075..0f60e133c1 100644 --- a/tests/src/com/vaadin/tests/server/container/TestHierarchicalContainer.java +++ b/tests/src/com/vaadin/tests/server/container/TestHierarchicalContainer.java @@ -21,6 +21,10 @@ public class TestHierarchicalContainer extends testContainerSorting(new HierarchicalContainer());
}
+ public void testOrdered() {
+ testContainerOrdered(new HierarchicalContainer());
+ }
+
public void testHierarchicalSorting() {
testHierarchicalSorting(new HierarchicalContainer());
}
|