~ubuntu-branches/ubuntu/lucid/thuban/lucid

« back to all changes in this revision

Viewing changes to test/test_menu.py

  • Committer: Bazaar Package Importer
  • Author(s): Silke Reimer
  • Date: 2004-01-28 12:47:34 UTC
  • Revision ID: james.westby@ubuntu.com-20040128124734-6xotwcqilok6ngut
Tags: upstream-1.0.0
ImportĀ upstreamĀ versionĀ 1.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (c) 2002 by Intevation GmbH
 
2
# Authors:
 
3
# Bernhard Herzog <bh@intevation.de>
 
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: 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 $
 
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
 
 
100
 
 
101
if __name__ == "__main__":
 
102
    unittest.main()