]> source.dussan.org Git - vaadin-framework.git/commitdiff
Test case and fix for #5314
authorArtur Signell <artur.signell@itmill.com>
Tue, 6 Jul 2010 12:51:00 +0000 (12:51 +0000)
committerArtur Signell <artur.signell@itmill.com>
Tue, 6 Jul 2010 12:51:00 +0000 (12:51 +0000)
svn changeset:14098/svn branch:6.4

src/com/vaadin/ui/MenuBar.java
tests/src/com/vaadin/tests/server/component/menubar/MenuBarIds.java [new file with mode: 0644]

index f437243a0e17e182f44340a71ae74ea652065ac0..3a1ee020b24276d35406e6cbc5548883922da36f 100644 (file)
@@ -31,7 +31,7 @@ public class MenuBar extends AbstractComponent {
     private final List<MenuItem> menuItems;
 
     // Number of items in this menu
-    private static int numberOfItems = 0;
+    private int numberOfItems = 0;
 
     /**
      * @deprecated
diff --git a/tests/src/com/vaadin/tests/server/component/menubar/MenuBarIds.java b/tests/src/com/vaadin/tests/server/component/menubar/MenuBarIds.java
new file mode 100644 (file)
index 0000000..9ce5536
--- /dev/null
@@ -0,0 +1,97 @@
+package com.vaadin.tests.server.component.menubar;\r
+\r
+import java.util.HashSet;\r
+import java.util.Set;\r
+\r
+import junit.framework.TestCase;\r
+\r
+import com.vaadin.ui.MenuBar;\r
+import com.vaadin.ui.MenuBar.Command;\r
+import com.vaadin.ui.MenuBar.MenuItem;\r
+\r
+public class MenuBarIds extends TestCase implements Command {\r
+\r
+    private MenuItem lastSelectedItem;\r
+    private MenuItem menuFile;\r
+    private MenuItem menuEdit;\r
+    private MenuItem menuEditCopy;\r
+    private MenuItem menuEditCut;\r
+    private MenuItem menuEditPaste;\r
+    private MenuItem menuEditFind;\r
+    private MenuItem menuFileOpen;\r
+    private MenuItem menuFileSave;\r
+    private MenuItem menuFileExit;\r
+    private Set<MenuItem> menuItems = new HashSet<MenuItem>();\r
+\r
+    private MenuBar menuBar;\r
+\r
+    @Override\r
+    public void setUp() {\r
+        menuBar = new MenuBar();\r
+        menuFile = menuBar.addItem("File", this);\r
+        menuEdit = menuBar.addItem("Edit", this);\r
+        menuEditCopy = menuEdit.addItem("Copy", this);\r
+        menuEditCut = menuEdit.addItem("Cut", this);\r
+        menuEditPaste = menuEdit.addItem("Paste", this);\r
+        menuEdit.addSeparator();\r
+        menuEditFind = menuEdit.addItem("Find...", this);\r
+        menuFileOpen = menuFile.addItem("Open", this);\r
+        menuFileSave = menuFile.addItem("Save", this);\r
+        menuFile.addSeparator();\r
+        menuFileExit = menuFile.addItem("Exit", this);\r
+\r
+        menuItems.add(menuFile);\r
+        menuItems.add(menuEdit);\r
+        menuItems.add(menuEditCopy);\r
+        menuItems.add(menuEditCut);\r
+        menuItems.add(menuEditPaste);\r
+        menuItems.add(menuEditFind);\r
+        menuItems.add(menuFileOpen);\r
+        menuItems.add(menuFileSave);\r
+        menuItems.add(menuFileExit);\r
+    }\r
+\r
+    public void testMenubarIdUniqueness() {\r
+        // Ids within a menubar must be unique\r
+        assertUniqueIds(menuBar);\r
+\r
+        menuBar.removeItem(menuFile);\r
+        MenuItem file2 = menuBar.addItem("File2", this);\r
+        MenuItem file3 = menuBar.addItem("File3", this);\r
+        MenuItem file2sub = file2.addItem("File2 sub menu", this);\r
+        menuItems.add(file2);\r
+        menuItems.add(file2sub);\r
+        menuItems.add(file3);\r
+\r
+        assertUniqueIds(menuBar);\r
+    }\r
+\r
+    private static void assertUniqueIds(MenuBar menuBar) {\r
+\r
+        Set<Object> ids = new HashSet<Object>();\r
+\r
+        for (MenuItem item : menuBar.getItems()) {\r
+            assertUniqueIds(ids, item);\r
+        }\r
+    }\r
+\r
+    private static void assertUniqueIds(Set<Object> ids, MenuItem item) {\r
+        int id = item.getId();\r
+        System.out.println("Item " + item.getText() + ", id: " + id);\r
+        assertFalse(ids.contains(id));\r
+        ids.add(id);\r
+        if (item.getChildren() != null) {\r
+            for (MenuItem subItem : item.getChildren()) {\r
+                assertUniqueIds(ids, subItem);\r
+            }\r
+        }\r
+    }\r
+\r
+    public void menuSelected(MenuItem selectedItem) {\r
+        assertNull("lastSelectedItem was not cleared before selecting an item",\r
+                lastSelectedItem);\r
+\r
+        lastSelectedItem = selectedItem;\r
+\r
+    }\r
+}\r