]> source.dussan.org Git - vaadin-framework.git/commitdiff
Moved serialization test so it is automatically run and added a Container sorting...
authorArtur Signell <artur.signell@itmill.com>
Thu, 10 Dec 2009 11:28:40 +0000 (11:28 +0000)
committerArtur Signell <artur.signell@itmill.com>
Thu, 10 Dec 2009 11:28:40 +0000 (11:28 +0000)
svn changeset:10226/svn branch:6.2

tests/src/com/vaadin/tests/TestSerialization.java [deleted file]
tests/src/com/vaadin/tests/server/TestSerialization.java [new file with mode: 0644]
tests/src/com/vaadin/tests/server/container/TestContainerSorting.java [new file with mode: 0644]

diff --git a/tests/src/com/vaadin/tests/TestSerialization.java b/tests/src/com/vaadin/tests/TestSerialization.java
deleted file mode 100644 (file)
index 1ee7f3c..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-package com.vaadin.tests;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-
-import junit.framework.TestCase;
-
-import com.vaadin.data.Item;
-import com.vaadin.data.util.IndexedContainer;
-import com.vaadin.data.util.MethodProperty;
-import com.vaadin.data.validator.RegexpValidator;
-import com.vaadin.ui.Form;
-
-public class TestSerialization extends TestCase {
-
-    public void testValidators() throws Exception {
-        RegexpValidator validator = new RegexpValidator(".*", "Error");
-        validator.isValid("aaa");
-        RegexpValidator validator2 = (RegexpValidator) serializeAndDeserialize(validator);
-        validator2.isValid("aaa");
-    }
-
-    public void testForm() throws Exception {
-        Form f = new Form();
-        String propertyId = "My property";
-        f.addItemProperty(propertyId, new MethodProperty(new Data(),
-                "dummyGetterAndSetter"));
-        f.replaceWithSelect(propertyId, new Object[] { "a", "b", null },
-                new String[] { "Item a", "ITem b", "Null item" });
-
-        serializeAndDeserialize(f);
-
-    }
-
-    public void testIndedexContainerItemIds() throws Exception {
-        IndexedContainer ic = new IndexedContainer();
-        ic.addContainerProperty("prop1", String.class, null);
-        Object id = ic.addItem();
-        ic.getItem(id).getItemProperty("prop1").setValue("1");
-
-        Item item2 = ic.addItem("item2");
-        item2.getItemProperty("prop1").setValue("2");
-
-        serializeAndDeserialize(ic);
-    }
-
-    public void testMethodPropertyGetter() throws Exception {
-        MethodProperty mp = new MethodProperty(new Data(), "dummyGetter");
-        serializeAndDeserialize(mp);
-    }
-
-    public void testMethodPropertyGetterAndSetter() throws Exception {
-        MethodProperty mp = new MethodProperty(new Data(),
-                "dummyGetterAndSetter");
-        serializeAndDeserialize(mp);
-    }
-
-    public void testMethodPropertyInt() throws Exception {
-        MethodProperty mp = new MethodProperty(new Data(), "dummyInt");
-        serializeAndDeserialize(mp);
-    }
-
-    private static Serializable serializeAndDeserialize(Serializable s)
-            throws IOException, ClassNotFoundException {
-        // Serialize and deserialize
-
-        ByteArrayOutputStream bs = new ByteArrayOutputStream();
-        ObjectOutputStream out = new ObjectOutputStream(bs);
-        out.writeObject(s);
-        byte[] data = bs.toByteArray();
-        ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(
-                data));
-        Serializable s2 = (Serializable) in.readObject();
-
-        if (s.equals(s2)) {
-            System.out.println(s + " equals " + s2);
-        } else {
-            System.out.println(s + " does NOT equal " + s2);
-        }
-
-        return s2;
-    }
-
-    public static class Data implements Serializable {
-        private String dummyGetter;
-        private String dummyGetterAndSetter;
-        private int dummyInt;
-
-        public String getDummyGetterAndSetter() {
-            return dummyGetterAndSetter;
-        }
-
-        public void setDummyGetterAndSetter(String dummyGetterAndSetter) {
-            this.dummyGetterAndSetter = dummyGetterAndSetter;
-        }
-
-        public int getDummyInt() {
-            return dummyInt;
-        }
-
-        public void setDummyInt(int dummyInt) {
-            this.dummyInt = dummyInt;
-        }
-
-        public String getDummyGetter() {
-            return dummyGetter;
-        }
-    }
-}
\ No newline at end of file
diff --git a/tests/src/com/vaadin/tests/server/TestSerialization.java b/tests/src/com/vaadin/tests/server/TestSerialization.java
new file mode 100644 (file)
index 0000000..a938ab3
--- /dev/null
@@ -0,0 +1,113 @@
+package com.vaadin.tests.server;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+
+import junit.framework.TestCase;
+
+import com.vaadin.data.Item;
+import com.vaadin.data.util.IndexedContainer;
+import com.vaadin.data.util.MethodProperty;
+import com.vaadin.data.validator.RegexpValidator;
+import com.vaadin.ui.Form;
+
+public class TestSerialization extends TestCase {
+
+    public void testValidators() throws Exception {
+        RegexpValidator validator = new RegexpValidator(".*", "Error");
+        validator.isValid("aaa");
+        RegexpValidator validator2 = (RegexpValidator) serializeAndDeserialize(validator);
+        validator2.isValid("aaa");
+    }
+
+    public void testForm() throws Exception {
+        Form f = new Form();
+        String propertyId = "My property";
+        f.addItemProperty(propertyId, new MethodProperty(new Data(),
+                "dummyGetterAndSetter"));
+        f.replaceWithSelect(propertyId, new Object[] { "a", "b", null },
+                new String[] { "Item a", "ITem b", "Null item" });
+
+        serializeAndDeserialize(f);
+
+    }
+
+    public void testIndedexContainerItemIds() throws Exception {
+        IndexedContainer ic = new IndexedContainer();
+        ic.addContainerProperty("prop1", String.class, null);
+        Object id = ic.addItem();
+        ic.getItem(id).getItemProperty("prop1").setValue("1");
+
+        Item item2 = ic.addItem("item2");
+        item2.getItemProperty("prop1").setValue("2");
+
+        serializeAndDeserialize(ic);
+    }
+
+    public void testMethodPropertyGetter() throws Exception {
+        MethodProperty mp = new MethodProperty(new Data(), "dummyGetter");
+        serializeAndDeserialize(mp);
+    }
+
+    public void testMethodPropertyGetterAndSetter() throws Exception {
+        MethodProperty mp = new MethodProperty(new Data(),
+                "dummyGetterAndSetter");
+        serializeAndDeserialize(mp);
+    }
+
+    public void testMethodPropertyInt() throws Exception {
+        MethodProperty mp = new MethodProperty(new Data(), "dummyInt");
+        serializeAndDeserialize(mp);
+    }
+
+    private static Serializable serializeAndDeserialize(Serializable s)
+            throws IOException, ClassNotFoundException {
+        // Serialize and deserialize
+
+        ByteArrayOutputStream bs = new ByteArrayOutputStream();
+        ObjectOutputStream out = new ObjectOutputStream(bs);
+        out.writeObject(s);
+        byte[] data = bs.toByteArray();
+        ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(
+                data));
+        Serializable s2 = (Serializable) in.readObject();
+
+        if (s.equals(s2)) {
+            System.out.println(s + " equals " + s2);
+        } else {
+            System.out.println(s + " does NOT equal " + s2);
+        }
+
+        return s2;
+    }
+
+    public static class Data implements Serializable {
+        private String dummyGetter;
+        private String dummyGetterAndSetter;
+        private int dummyInt;
+
+        public String getDummyGetterAndSetter() {
+            return dummyGetterAndSetter;
+        }
+
+        public void setDummyGetterAndSetter(String dummyGetterAndSetter) {
+            this.dummyGetterAndSetter = dummyGetterAndSetter;
+        }
+
+        public int getDummyInt() {
+            return dummyInt;
+        }
+
+        public void setDummyInt(int dummyInt) {
+            this.dummyInt = dummyInt;
+        }
+
+        public String getDummyGetter() {
+            return dummyGetter;
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/src/com/vaadin/tests/server/container/TestContainerSorting.java b/tests/src/com/vaadin/tests/server/container/TestContainerSorting.java
new file mode 100644 (file)
index 0000000..e51bb25
--- /dev/null
@@ -0,0 +1,211 @@
+package com.vaadin.tests.server.container;\r
+\r
+import java.util.HashMap;\r
+import java.util.Iterator;\r
+import java.util.Map;\r
+\r
+import junit.framework.TestCase;\r
+\r
+import com.vaadin.data.Container;\r
+import com.vaadin.data.Item;\r
+import com.vaadin.data.util.HierarchicalContainer;\r
+import com.vaadin.data.util.IndexedContainer;\r
+\r
+public class TestContainerSorting extends TestCase {\r
+\r
+    private static final String ITEM_DATA_MINUS2_NULL = "Data -2 null";\r
+    private static final String ITEM_DATA_MINUS2 = "Data -2";\r
+    private static final String ITEM_DATA_MINUS1 = "Data -1";\r
+    private static final String ITEM_DATA_MINUS1_NULL = "Data -1 null";\r
+    private static final String ITEM_ANOTHER_NULL = "Another null";\r
+    private static final String ITEM_STRING_2 = "String 2";\r
+    private static final String ITEM_STRING_NULL2 = "String null";\r
+    private static final String ITEM_STRING_1 = "String 1";\r
+\r
+    private static final String PROPERTY_INTEGER_NULL2 = "integer-null";\r
+    private static final String PROPERTY_INTEGER_NOT_NULL = "integer-not-null";\r
+    private static final String PROPERTY_STRING_NULL = "string-null";\r
+    private static final String PROPERTY_STRING_ID = "string-not-null";\r
+\r
+    @Override\r
+    protected void setUp() throws Exception {\r
+        super.setUp();\r
+    }\r
+\r
+    public void testIndexedContainer() {\r
+        IndexedContainer ic = new IndexedContainer();\r
+\r
+        addProperties(ic);\r
+        populate(ic);\r
+\r
+        ic.sort(new Object[] { PROPERTY_STRING_ID }, new boolean[] { true });\r
+        verifyOrder(ic, new String[] { ITEM_ANOTHER_NULL, ITEM_DATA_MINUS1,\r
+                ITEM_DATA_MINUS1_NULL, ITEM_DATA_MINUS2, ITEM_DATA_MINUS2_NULL,\r
+                ITEM_STRING_1, ITEM_STRING_2, ITEM_STRING_NULL2 });\r
+\r
+        ic.sort(new Object[] { PROPERTY_INTEGER_NOT_NULL,\r
+                PROPERTY_INTEGER_NULL2, PROPERTY_STRING_ID }, new boolean[] {\r
+                true, false, true });\r
+        verifyOrder(ic, new String[] { ITEM_DATA_MINUS2, ITEM_DATA_MINUS2_NULL,\r
+                ITEM_DATA_MINUS1, ITEM_DATA_MINUS1_NULL, ITEM_ANOTHER_NULL,\r
+                ITEM_STRING_NULL2, ITEM_STRING_1, ITEM_STRING_2 });\r
+\r
+        ic.sort(new Object[] { PROPERTY_INTEGER_NOT_NULL,\r
+                PROPERTY_INTEGER_NULL2, PROPERTY_STRING_ID }, new boolean[] {\r
+                true, true, true });\r
+        verifyOrder(ic, new String[] { ITEM_DATA_MINUS2_NULL, ITEM_DATA_MINUS2,\r
+                ITEM_DATA_MINUS1_NULL, ITEM_DATA_MINUS1, ITEM_ANOTHER_NULL,\r
+                ITEM_STRING_NULL2, ITEM_STRING_1, ITEM_STRING_2 });\r
+\r
+    }\r
+\r
+    public void testHierarchicalContainer() {\r
+        HierarchicalContainer hc = new HierarchicalContainer();\r
+        populateContainer(hc);\r
+        hc.sort(new Object[] { "name" }, new boolean[] { true });\r
+        verifyOrder(hc, new String[] { "Audi", "C++", "Call of Duty", "Cars",\r
+                "English", "Fallout", "Finnish", "Ford", "Games", "Java",\r
+                "Might and Magic", "Natural languages", "PHP",\r
+                "Programming languages", "Python", "Red Alert", "Swedish",\r
+                "Toyota", "Volvo" });\r
+        assertArrays(hc.rootItemIds().toArray(), new Integer[] {\r
+                nameToId.get("Cars"), nameToId.get("Games"),\r
+                nameToId.get("Natural languages"),\r
+                nameToId.get("Programming languages") });\r
+        assertArrays(hc.getChildren(nameToId.get("Games")).toArray(),\r
+                new Integer[] { nameToId.get("Call of Duty"),\r
+                        nameToId.get("Fallout"),\r
+                        nameToId.get("Might and Magic"),\r
+                        nameToId.get("Red Alert") });\r
+    }\r
+\r
+    private static void populateContainer(HierarchicalContainer container) {\r
+        container.addContainerProperty("name", String.class, null);\r
+\r
+        addItem(container, "Games", null);\r
+        addItem(container, "Call of Duty", "Games");\r
+        addItem(container, "Might and Magic", "Games");\r
+        addItem(container, "Fallout", "Games");\r
+        addItem(container, "Red Alert", "Games");\r
+\r
+        addItem(container, "Cars", null);\r
+        addItem(container, "Toyota", "Cars");\r
+        addItem(container, "Volvo", "Cars");\r
+        addItem(container, "Audi", "Cars");\r
+        addItem(container, "Ford", "Cars");\r
+\r
+        addItem(container, "Natural languages", null);\r
+        addItem(container, "Swedish", "Natural languages");\r
+        addItem(container, "English", "Natural languages");\r
+        addItem(container, "Finnish", "Natural languages");\r
+\r
+        addItem(container, "Programming languages", null);\r
+        addItem(container, "C++", "Programming languages");\r
+        addItem(container, "PHP", "Programming languages");\r
+        addItem(container, "Java", "Programming languages");\r
+        addItem(container, "Python", "Programming languages");\r
+\r
+    }\r
+\r
+    private static int index = 0;\r
+    private static Map<String, Integer> nameToId = new HashMap<String, Integer>();\r
+    private static Map<Integer, String> idToName = new HashMap<Integer, String>();\r
+\r
+    public static void addItem(IndexedContainer container, String string,\r
+            String parent) {\r
+        nameToId.put(string, index);\r
+        idToName.put(index, string);\r
+\r
+        Item item = container.addItem(index);\r
+        item.getItemProperty("name").setValue(string);\r
+\r
+        if (parent != null && container instanceof HierarchicalContainer) {\r
+            ((HierarchicalContainer) container).setParent(index, nameToId\r
+                    .get(parent));\r
+        }\r
+\r
+        index++;\r
+    }\r
+\r
+    private void verifyOrder(Container.Sortable ic, Object[] idOrder) {\r
+        int size = ic.size();\r
+        Object[] actual = new Object[size];\r
+        Iterator<?> i = ic.getItemIds().iterator();\r
+        int index = 0;\r
+        while (i.hasNext()) {\r
+            Object o = i.next();\r
+            if (o.getClass() == Integer.class\r
+                    && idOrder[index].getClass() == String.class) {\r
+                o = idToName.get(o);\r
+            }\r
+            actual[index++] = o;\r
+        }\r
+\r
+        assertArrays(actual, idOrder);\r
+\r
+    }\r
+\r
+    private void assertArrays(Object[] actualObjects, Object[] expectedObjects) {\r
+        assertEquals(\r
+                "Actual contains a different number of values than was expected",\r
+                expectedObjects.length, actualObjects.length);\r
+\r
+        for (int i = 0; i < actualObjects.length; i++) {\r
+            Object actual = actualObjects[i];\r
+            Object expected = expectedObjects[i];\r
+\r
+            assertEquals("Item[" + i + "] does not match", expected, actual);\r
+        }\r
+\r
+    }\r
+\r
+    private void populate(IndexedContainer ic) {\r
+        addItem(ic, ITEM_STRING_1, ITEM_STRING_1, 1, 1);\r
+        addItem(ic, ITEM_STRING_NULL2, null, 0, null);\r
+        addItem(ic, ITEM_STRING_2, ITEM_STRING_2, 2, 2);\r
+        addItem(ic, ITEM_ANOTHER_NULL, null, 0, null);\r
+        addItem(ic, ITEM_DATA_MINUS1, ITEM_DATA_MINUS1, -1, -1);\r
+        addItem(ic, ITEM_DATA_MINUS1_NULL, null, -1, null);\r
+        addItem(ic, ITEM_DATA_MINUS2, ITEM_DATA_MINUS2, -2, -2);\r
+        addItem(ic, ITEM_DATA_MINUS2_NULL, null, -2, null);\r
+    }\r
+\r
+    private Item addItem(Container ic, String id, String string_null,\r
+            int integer, Integer integer_null) {\r
+        Item i = ic.addItem(id);\r
+        i.getItemProperty(PROPERTY_STRING_ID).setValue(id);\r
+        i.getItemProperty(PROPERTY_STRING_NULL).setValue(string_null);\r
+        i.getItemProperty(PROPERTY_INTEGER_NOT_NULL).setValue(integer);\r
+        i.getItemProperty(PROPERTY_INTEGER_NULL2).setValue(integer_null);\r
+\r
+        return i;\r
+    }\r
+\r
+    private void addProperties(IndexedContainer ic) {\r
+        ic.addContainerProperty("id", String.class, null);\r
+        ic.addContainerProperty(PROPERTY_STRING_ID, String.class, "");\r
+        ic.addContainerProperty(PROPERTY_STRING_NULL, String.class, null);\r
+        ic.addContainerProperty(PROPERTY_INTEGER_NULL2, Integer.class, null);\r
+        ic.addContainerProperty(PROPERTY_INTEGER_NOT_NULL, Integer.class, 0);\r
+        ic.addContainerProperty("comparable-null", Integer.class, 0);\r
+    }\r
+\r
+    public class MyObject implements Comparable<MyObject> {\r
+        private String data;\r
+\r
+        public int compareTo(MyObject o) {\r
+            if (o == null) {\r
+                return 1;\r
+            }\r
+\r
+            if (o.data == null) {\r
+                return data == null ? 0 : 1;\r
+            } else if (data == null) {\r
+                return -1;\r
+            } else {\r
+                return data.compareTo(o.data);\r
+            }\r
+        }\r
+    }\r
+\r
+}\r