/[thuban]/branches/WIP-pyshapelib-bramz/test/test_menu.py
ViewVC logotype

Contents of /branches/WIP-pyshapelib-bramz/test/test_menu.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2734 - (show annotations)
Thu Mar 1 12:42:59 2007 UTC (18 years ago) by bramz
File MIME type: text/x-python
File size: 4785 byte(s)
made a copy
1 # Copyright (c) 2002 by Intevation GmbH
2 # Authors:
3 # Bernhard Herzog <[email protected]>
4 #
5 # This program is free software under the GPL (>=v2)
6 # Read the file COPYING coming with Thuban for details.
7
8 """
9 Test the Menu
10 """
11
12 __version__ = "$Revision$"
13 # $Source$
14 # $Id$
15
16 import unittest
17
18 import support
19 support.initthuban()
20
21 from Thuban.UI.menu import Menu
22
23
24 class MenuTest(unittest.TestCase):
25
26 def compare_menus(self, menu1, menu2):
27 eq = self.assertEquals
28 ass = self.assert_
29 ass(isinstance(menu1, Menu))
30 ass(isinstance(menu2, Menu))
31 eq(menu1.name, menu2.name)
32 self.compare_items(menu1.items, menu2.items)
33
34 def compare_items(self, items1, items2):
35 eq = self.assertEquals
36 eq(len(items1), len(items2), "Item lists have different lengths")
37 for i in range(len(items1)):
38 i1 = items1[i]
39 i2 = items2[i]
40 if isinstance(i1, Menu):
41 self.compare_menus(i1, i2)
42 else:
43 eq(i1, i2)
44
45 def test(self):
46 """Menu operations (adding new items and submenus)"""
47 eq = self.assertEquals
48
49 # Build a typical main menu for an application. Here we have
50 # only the file menu as sub-menu at first.
51 # Make sure we copy the file_items list so that it won't be
52 # modified
53 file_items = ["new", None, "open", "save"]
54 menu = Menu("<main>", "<main>",
55 [Menu("file", "File", file_items[:])])
56
57 # fetch the file submenu
58 filemenu = menu.find_menu("file")
59 # check whether it's the right one
60 self.compare_menus(filemenu, Menu("file", "File", file_items[:]))
61
62 # append a separator and an item to the file menu
63 filemenu.InsertSeparator()
64 filemenu.InsertItem("exit")
65 file_items.extend([None, "exit"])
66 self.compare_menus(filemenu, Menu("file", "File", file_items[:]))
67
68 # append an item to the file menu
69 filemenu.InsertItem("save_as", after="save")
70 file_items.insert(4, "save_as")
71 self.compare_menus(filemenu, Menu("file", "File", file_items[:]))
72
73 # add a new sub-menu to the main menu
74 help_items = ["about", "manual"]
75 helpmenu = menu.InsertMenu("help", "Help")
76 helpmenu.SetItems(help_items[:])
77
78 self.compare_menus(menu, Menu("<main>", "<main>",
79 [Menu("file", "File", file_items[:]),
80 Menu("help", "Help", help_items[:])]))
81
82 self.compare_menus(helpmenu, Menu("help", "Help", help_items[:]))
83
84 # add new sub-menu after the file menu but before the help menu
85 edit_items = ["cut", "copy", "paste"]
86 editmenu = menu.InsertMenu("edit", "Edit", after="file")
87 editmenu.SetItems(edit_items[:])
88
89 self.compare_menus(editmenu, Menu("edit", "Edit", edit_items[:]))
90 self.compare_menus(menu, Menu("<main>", "<main>",
91 [Menu("file", "File", file_items[:]),
92 Menu("edit", "Edit", edit_items[:]),
93 Menu("help", "Help", help_items[:])]))
94
95 # remove an item from the menu
96 self.compare_menus(editmenu, Menu("edit", "Edit", edit_items[:]))
97 editmenu.RemoveItem("copy")
98 self.compare_menus(editmenu, Menu("edit", "Edit", ['cut', 'paste']))
99 editmenu.InsertItem("copy", after="cut") # for convenience for
100 # the following tests
101
102 # find-or-insert a menu
103 self.compare_menus(menu, Menu("<main>", "<main>",
104 [Menu("file", "File", file_items[:]),
105 Menu("edit", "Edit", edit_items[:]),
106 Menu("help", "Help", help_items[:])]))
107 menu.FindOrInsertMenu("extensions", "Extensions")
108 self.compare_menus(menu, Menu("<main>", "<main>",
109 [Menu("file", "File", file_items[:]),
110 Menu("edit", "Edit", edit_items[:]),
111 Menu("help", "Help", help_items[:]),
112 Menu("extensions", "Extensions", [])]))
113 menu.FindOrInsertMenu("extensions", "Extensions")
114 self.compare_menus(menu, Menu("<main>", "<main>",
115 [Menu("file", "File", file_items[:]),
116 Menu("edit", "Edit", edit_items[:]),
117 Menu("help", "Help", help_items[:]),
118 Menu("extensions", "Extensions", [])]))
119
120
121 if __name__ == "__main__":
122 unittest.main()

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26