1
# Copyright (c) 2002 by Intevation GmbH
3
# Bernhard Herzog <bh@intevation.de>
5
# This program is free software under the GPL (>=v2)
6
# Read the file COPYING coming with Thuban for details.
12
__version__ = "$Revision: 1.3 $"
13
# $Source: /thubanrepository/thuban/test/test_menu.py,v $
14
# $Id: test_menu.py,v 1.3 2003/05/27 13:10:08 jan Exp $
21
from Thuban.UI.menu import Menu
24
class MenuTest(unittest.TestCase):
26
def compare_menus(self, menu1, menu2):
27
eq = self.assertEquals
29
ass(isinstance(menu1, Menu))
30
ass(isinstance(menu2, Menu))
31
eq(menu1.name, menu2.name)
32
self.compare_items(menu1.items, menu2.items)
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)):
40
if isinstance(i1, Menu):
41
self.compare_menus(i1, i2)
46
"""Menu operations (adding new items and submenus)"""
47
eq = self.assertEquals
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
53
file_items = ["new", None, "open", "save"]
54
menu = Menu("<main>", "<main>",
55
[Menu("file", "File", file_items[:])])
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[:]))
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[:]))
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[:]))
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[:])
78
self.compare_menus(menu, Menu("<main>", "<main>",
79
[Menu("file", "File", file_items[:]),
80
Menu("help", "Help", help_items[:])]))
82
self.compare_menus(helpmenu, Menu("help", "Help", help_items[:]))
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[:])
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[:])]))
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']))
101
if __name__ == "__main__":