Erik Grinaker is sharing code with you

Bitbucket is a code hosting site. Unlimited public and private repositories. Free for small teams.

Don't show this again

erikg / Revelation

Revelation is a password manager for the GNOME desktop, released under the GNU GPL license. It stores all your accounts and passwords in a single, secure place, and gives you access to it through a user-friendly graphical interface.

Clone this repository (size: 2.1 MB): HTTPS / SSH
hg clone https://bitbucket.org/erikg/revelation
hg clone ssh://hg@bitbucket.org/erikg/revelation

Revelation / test / ui.py

commit
cff0e6f7ef34
parent
e0a14b958359
branch
default
tags
revelation-0.4.0-pre2

bumped version number to 0.4.0-pre2

1
8ec66df6d4cf
#!/usr/bin/env python
2
8ec66df6d4cf
3
8ec66df6d4cf
#
4
78ebb688e45f
# Revelation 0.4.0 - a password manager for GNOME 2
5
8ec66df6d4cf
# http://oss.codepoet.no/revelation/
6
8ec66df6d4cf
# $Id$
7
8ec66df6d4cf
#
8
8ec66df6d4cf
# Unit tests for ui module
9
8ec66df6d4cf
#
10
8ec66df6d4cf
#
11
78ebb688e45f
# Copyright (c) 2003-2005 Erik Grinaker
12
8ec66df6d4cf
#
13
8ec66df6d4cf
# This program is free software; you can redistribute it and/or
14
8ec66df6d4cf
# modify it under the terms of the GNU General Public License
15
8ec66df6d4cf
# as published by the Free Software Foundation; either version 2
16
8ec66df6d4cf
# of the License, or (at your option) any later version.
17
8ec66df6d4cf
#
18
8ec66df6d4cf
# This program is distributed in the hope that it will be useful,
19
8ec66df6d4cf
# but WITHOUT ANY WARRANTY; without even the implied warranty of
20
8ec66df6d4cf
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21
8ec66df6d4cf
# GNU General Public License for more details.
22
8ec66df6d4cf
#
23
8ec66df6d4cf
# You should have received a copy of the GNU General Public License
24
8ec66df6d4cf
# along with this program; if not, write to the Free Software
25
8ec66df6d4cf
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
26
8ec66df6d4cf
#
27
8ec66df6d4cf
28
e0a14b958359
import gnome, gobject, gtk, unittest
29
8ec66df6d4cf
30
e6acb28fe209
from revelation import config, data, entry, ui
31
8ec66df6d4cf
32
8ec66df6d4cf
33
8ec66df6d4cf
34
8ec66df6d4cf
class attrs(unittest.TestCase):
35
8ec66df6d4cf
	"ui attributes"
36
8ec66df6d4cf
37
8ec66df6d4cf
	def test_entry_icons(self):
38
8ec66df6d4cf
		"ui module has required entry stock icons"
39
8ec66df6d4cf
40
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_ENTRY_FOLDER"), True)
41
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_ENTRY_FOLDER_OPEN"), True)
42
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_ENTRY_CREDITCARD"), True)
43
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_ENTRY_CRYPTOKEY"), True)
44
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_ENTRY_DATABASE"), True)
45
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_ENTRY_DOOR"), True)
46
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_ENTRY_EMAIL"), True)
47
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_ENTRY_FTP"), True)
48
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_ENTRY_GENERIC"), True)
49
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_ENTRY_PHONE"), True)
50
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_ENTRY_SHELL"), True)
51
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_ENTRY_WEBSITE"), True)
52
8ec66df6d4cf
53
8ec66df6d4cf
54
8ec66df6d4cf
	def test_icon_sizes(self):
55
8ec66df6d4cf
		"ui module has required icon sizes"
56
8ec66df6d4cf
57
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "ICON_SIZE_DATAVIEW"), True)
58
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "ICON_SIZE_DROPDOWN"), True)
59
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "ICON_SIZE_LOGO"), True)
60
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "ICON_SIZE_TREEVIEW"), True)
61
8ec66df6d4cf
62
8ec66df6d4cf
		self.assertEquals(gtk.icon_size_lookup(ui.ICON_SIZE_DATAVIEW), (24, 24))
63
8ec66df6d4cf
		self.assertEquals(gtk.icon_size_lookup(ui.ICON_SIZE_DROPDOWN), (18, 18))
64
8ec66df6d4cf
		self.assertEquals(gtk.icon_size_lookup(ui.ICON_SIZE_LOGO), (32, 32))
65
8ec66df6d4cf
		self.assertEquals(gtk.icon_size_lookup(ui.ICON_SIZE_TREEVIEW), (18, 18))
66
8ec66df6d4cf
67
8ec66df6d4cf
68
8ec66df6d4cf
69
8ec66df6d4cf
	def test_stock_items(self):
70
8ec66df6d4cf
		"ui module has required stock items"
71
8ec66df6d4cf
72
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_ADD"), True)
73
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_DISCARD"), True)
74
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_EDIT"), True)
75
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_EXPORT"), True)
76
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_GENERATE"), True)
77
095f4008dc7f
		self.assertEquals(hasattr(ui, "STOCK_GOTO"), True)
78
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_IMPORT"), True)
79
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_LOCK"), True)
80
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_NEXT"), True)
81
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_OVERWRITE"), True)
82
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_PASSWORD_CHANGE"), True)
83
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_PREVIOUS"), True)
84
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_REMOVE"), True)
85
8ec66df6d4cf
		self.assertEquals(hasattr(ui, "STOCK_REVELATION"), True)
86
8ec66df6d4cf
87
8ec66df6d4cf
88
8ec66df6d4cf
89
8ec66df6d4cf
class config_bind(unittest.TestCase):
90
8ec66df6d4cf
	"config_bind()"
91
8ec66df6d4cf
92
8ec66df6d4cf
	def setUp(self):
93
8ec66df6d4cf
		"sets up common facilities for the test"
94
8ec66df6d4cf
95
8ec66df6d4cf
		self.config = config.Config()
96
8ec66df6d4cf
97
8ec66df6d4cf
98
8ec66df6d4cf
	def test_check(self):
99
8ec66df6d4cf
		"config_bind() handles check items correctly"
100
8ec66df6d4cf
101
8ec66df6d4cf
		self.config.set("view/searchbar", True)
102
8ec66df6d4cf
103
8ec66df6d4cf
		# test initial state
104
8ec66df6d4cf
		check = ui.CheckButton("Test")
105
8ec66df6d4cf
		ui.config_bind(self.config, "view/searchbar", check)
106
9b26b6070e40
		gtk_run()
107
8ec66df6d4cf
		self.assertEquals(check.get_active(), True)
108
8ec66df6d4cf
109
8ec66df6d4cf
		# test config value change
110
8ec66df6d4cf
		self.config.set("view/searchbar", False)
111
9b26b6070e40
		gtk_run()
112
8ec66df6d4cf
		self.assertEquals(check.get_active(), False)
113
8ec66df6d4cf
114
8ec66df6d4cf
		# test widget change
115
8ec66df6d4cf
		check.set_active(True)
116
9b26b6070e40
		gtk_run()
117
8ec66df6d4cf
		self.assertEquals(self.config.get("view/searchbar"), True)
118
8ec66df6d4cf
119
8ec66df6d4cf
120
8ec66df6d4cf
	def test_entry(self):
121
8ec66df6d4cf
		"config_bind() handles entries correctly"
122
8ec66df6d4cf
123
8ec66df6d4cf
		self.config.set("file/autoload_file", "test123")
124
8ec66df6d4cf
125
8ec66df6d4cf
		# test initial state
126
8ec66df6d4cf
		entry = ui.Entry()
127
8ec66df6d4cf
		ui.config_bind(self.config, "file/autoload_file", entry)
128
9b26b6070e40
		gtk_run()
129
8ec66df6d4cf
		self.assertEquals(entry.get_text(), "test123")
130
8ec66df6d4cf
131
8ec66df6d4cf
		# test config value change
132
8ec66df6d4cf
		self.config.set("file/autoload_file", "test again")
133
9b26b6070e40
		gtk_run()
134
8ec66df6d4cf
		self.assertEquals(entry.get_text(), "test again")
135
8ec66df6d4cf
136
8ec66df6d4cf
		# test widget change
137
8ec66df6d4cf
		entry.set_text("")
138
9b26b6070e40
		gtk_run()
139
8ec66df6d4cf
		self.assertEquals(self.config.get("file/autoload_file"), "")
140
8ec66df6d4cf
141
8ec66df6d4cf
142
8ec66df6d4cf
	def test_return(self):
143
8ec66df6d4cf
		"config_bind() returns the id of the callback"
144
8ec66df6d4cf
145
8ec66df6d4cf
		check = ui.CheckButton("test")
146
8ec66df6d4cf
		id = ui.config_bind(self.config, "view/searchbar", check)
147
8ec66df6d4cf
		self.assertEquals(self.config.callbacks.has_key(id), True)
148
8ec66df6d4cf
149
8ec66df6d4cf
150
8ec66df6d4cf
	def test_spin(self):
151
8ec66df6d4cf
		"config_bind() handles spin entries correctly"
152
8ec66df6d4cf
153
8ec66df6d4cf
		self.config.set("view/pane-position", 500)
154
8ec66df6d4cf
155
8ec66df6d4cf
		# test initial state
156
8ec66df6d4cf
		spin = ui.SpinEntry()
157
8ec66df6d4cf
		ui.config_bind(self.config, "view/pane-position", spin)
158
9b26b6070e40
		gtk_run()
159
8ec66df6d4cf
		self.assertEquals(spin.get_value(), 500)
160
8ec66df6d4cf
161
8ec66df6d4cf
		# test config value change
162
8ec66df6d4cf
		self.config.set("view/pane-position", 200)
163
9b26b6070e40
		gtk_run()
164
8ec66df6d4cf
		self.assertEquals(spin.get_value(), 200)
165
8ec66df6d4cf
166
8ec66df6d4cf
		# test widget change
167
8ec66df6d4cf
		spin.set_value(300)
168
9b26b6070e40
		gtk_run()
169
8ec66df6d4cf
		self.assertEquals(self.config.get("view/pane-position"), 300)
170
8ec66df6d4cf
171
8ec66df6d4cf
172
8ec66df6d4cf
	def test_unrealize(self):
173
8ec66df6d4cf
		"config_bind() removes the callback when the widget is destroyed"
174
8ec66df6d4cf
175
8ec66df6d4cf
		check = ui.CheckButton()
176
8ec66df6d4cf
		id = ui.config_bind(self.config, "view/searchbar", check)
177
8ec66df6d4cf
		self.assertEquals(self.config.callbacks.has_key(id), True)
178
8ec66df6d4cf
179
8ec66df6d4cf
		hbox = ui.HBox()
180
8ec66df6d4cf
		hbox.pack_start(check)
181
8ec66df6d4cf
		hbox.destroy()
182
9b26b6070e40
		gtk_run()
183
8ec66df6d4cf
184
8ec66df6d4cf
		self.assertEquals(self.config.callbacks.has_key(id), False)
185
8ec66df6d4cf
186
8ec66df6d4cf
187
8ec66df6d4cf
188
8ec66df6d4cf
class generate_field_display_widget(unittest.TestCase):
189
8ec66df6d4cf
	"generate_field_display_widget()"
190
8ec66df6d4cf
191
8ec66df6d4cf
	def test_value(self):
192
8ec66df6d4cf
		"generate_field_display_widget() sets field value on widget"
193
8ec66df6d4cf
194
8ec66df6d4cf
		for field in entry.FIELDLIST:
195
8ec66df6d4cf
			field = field()
196
8ec66df6d4cf
			field.value = "test123"
197
8ec66df6d4cf
198
8ec66df6d4cf
			widget = ui.generate_field_display_widget(field)
199
8ec66df6d4cf
			self.assertEquals(widget.get_text(), "test123")
200
8ec66df6d4cf
201
8ec66df6d4cf
202
8ec66df6d4cf
	def test_widgets(self):
203
8ec66df6d4cf
		"generate_field_display_widget() generates correct widgets"
204
8ec66df6d4cf
205
8ec66df6d4cf
		for field in entry.FIELDLIST:
206
8ec66df6d4cf
			field = field()
207
8ec66df6d4cf
			widget = ui.generate_field_display_widget(field)
208
8ec66df6d4cf
209
8ec66df6d4cf
			if field.datatype in ( entry.DATATYPE_EMAIL, entry.DATATYPE_URL ):
210
8ec66df6d4cf
				self.assertEquals(type(widget), ui.LinkButton)
211
8ec66df6d4cf
212
8ec66df6d4cf
			elif field.datatype == entry.DATATYPE_PASSWORD:
213
8ec66df6d4cf
				self.assertEquals(type(widget), ui.PasswordLabel)
214
8ec66df6d4cf
215
8ec66df6d4cf
			else:
216
8ec66df6d4cf
				self.assertEquals(type(widget), ui.Label)
217
8ec66df6d4cf
218
8ec66df6d4cf
219
8ec66df6d4cf
220
8ec66df6d4cf
class generate_field_edit_widget(unittest.TestCase):
221
8ec66df6d4cf
	"generate_field_display_widget()"
222
8ec66df6d4cf
223
8ec66df6d4cf
	def test_value(self):
224
8ec66df6d4cf
		"generate_field_edit_widget() sets the field value in the widget"
225
8ec66df6d4cf
226
8ec66df6d4cf
		for field in entry.FIELDLIST:
227
8ec66df6d4cf
			field = field()
228
8ec66df6d4cf
			field.value = "test123"
229
8ec66df6d4cf
230
8ec66df6d4cf
			widget = ui.generate_field_edit_widget(field)
231
8ec66df6d4cf
232
8ec66df6d4cf
			if type(widget) != ui.FileEntry:
233
8ec66df6d4cf
				self.assertEquals(widget.get_text(), "test123")
234
8ec66df6d4cf
235
8ec66df6d4cf
236
8ec66df6d4cf
	def test_widgets(self):
237
8ec66df6d4cf
		"generate_field_edit_widget() generates correct widgets"
238
8ec66df6d4cf
239
8ec66df6d4cf
		for field in entry.FIELDLIST:
240
8ec66df6d4cf
			field = field()
241
8ec66df6d4cf
			widget = ui.generate_field_edit_widget(field)
242
8ec66df6d4cf
243
8ec66df6d4cf
			if type(field) == entry.PasswordField:
244
8ec66df6d4cf
				self.assertEquals(type(widget), ui.PasswordEntryGenerate)
245
8ec66df6d4cf
246
8ec66df6d4cf
			elif type(field) == entry.UsernameField:
247
8ec66df6d4cf
				self.assertEquals(type(widget), ui.ComboBoxEntry)
248
8ec66df6d4cf
249
8ec66df6d4cf
			elif field.datatype == entry.DATATYPE_FILE:
250
8ec66df6d4cf
				self.assertEquals(type(widget), ui.FileEntry)
251
8ec66df6d4cf
252
8ec66df6d4cf
			elif field.datatype == entry.DATATYPE_PASSWORD:
253
8ec66df6d4cf
				self.assertEquals(type(widget), ui.PasswordEntry)
254
8ec66df6d4cf
255
8ec66df6d4cf
			else:
256
8ec66df6d4cf
				self.assertEquals(type(widget), ui.Entry)
257
8ec66df6d4cf
258
8ec66df6d4cf
259
8ec66df6d4cf
260
e0a14b958359
class App(unittest.TestCase):
261
e0a14b958359
	"App"
262
e0a14b958359
263
e0a14b958359
	def test_subclass(self):
264
e0a14b958359
		"App is subclass of gnome.ui.App"
265
e0a14b958359
266
e0a14b958359
		self.assertEquals(isinstance(ui.App("test"), gnome.ui.App), True)
267
e0a14b958359
268
e0a14b958359
269
e0a14b958359
270
e0a14b958359
class App_add_toolbar(unittest.TestCase):
271
e0a14b958359
	"App.add_toolbar()"
272
e0a14b958359
273
e0a14b958359
	def test_toolbar(self):
274
e0a14b958359
		"App.add_toolbar() doesn't crash :)"
275
e0a14b958359
276
e0a14b958359
		a = ui.App("test")
277
e0a14b958359
		t = ui.Toolbar()
278
e0a14b958359
		a.add_toolbar(t, "toolbar", 0, False)
279
e0a14b958359
280
e0a14b958359
281
e0a14b958359
282
e0a14b958359
class App_get_title(unittest.TestCase):
283
e0a14b958359
	"App.get_title()"
284
e0a14b958359
285
e0a14b958359
	def test_stripname(self):
286
e0a14b958359
		"App.get_title() returns title without appname"
287
e0a14b958359
288
e0a14b958359
		a = ui.App("test")
289
e0a14b958359
		a.set_title("testtitle")
290
e0a14b958359
		self.assertEquals(a.get_title(), "testtitle")
291
e0a14b958359
292
e0a14b958359
293
e0a14b958359
294
e0a14b958359
class App_run(unittest.TestCase):
295
e0a14b958359
	"App.run()"
296
e0a14b958359
297
e0a14b958359
	def test_mainloop(self):
298
e0a14b958359
		"App.run() starts a gtk mainloop"
299
e0a14b958359
300
e0a14b958359
		global foo
301
e0a14b958359
		foo = False
302
e0a14b958359
303
e0a14b958359
		def cb():
304
e0a14b958359
			global foo
305
e0a14b958359
			foo = True
306
e0a14b958359
			gtk.main_quit()
307
e0a14b958359
308
e0a14b958359
		a = ui.App("test")
309
e0a14b958359
310
e0a14b958359
		gobject.timeout_add(100, cb)
311
e0a14b958359
		a.run()
312
e0a14b958359
313
e0a14b958359
		self.assertEquals(foo, True)
314
e0a14b958359
		a.destroy()
315
e0a14b958359
316
e0a14b958359
317
e0a14b958359
318
e0a14b958359
class App_set_title(unittest.TestCase):
319
e0a14b958359
	"App.set_title()"
320
e0a14b958359
321
e0a14b958359
	def test_appname(self):
322
e0a14b958359
		"App.set_title() appends revelation appname to title"
323
e0a14b958359
324
e0a14b958359
		a = ui.App("test")
325
e0a14b958359
		a.set_title("title")
326
e0a14b958359
327
e0a14b958359
		self.assertEquals(gtk.Window.get_title(a), "title - " + config.APPNAME)
328
e0a14b958359
329
e0a14b958359
330
e0a14b958359
331
9562cd812cce
class Button(unittest.TestCase):
332
9562cd812cce
	"Button"
333
9562cd812cce
334
9562cd812cce
	def test_callback(self):
335
9562cd812cce
		"Button attaches callback from arg"
336
9562cd812cce
337
9562cd812cce
		global foo
338
9562cd812cce
		foo = False
339
9562cd812cce
340
9562cd812cce
		def cb(widget, data = None):
341
9562cd812cce
			global foo
342
9562cd812cce
			foo = True
343
9562cd812cce
344
9562cd812cce
		b = ui.Button("test", cb)
345
9562cd812cce
		b.clicked()
346
9562cd812cce
		gtk_run()
347
9562cd812cce
348
9562cd812cce
		self.assertEquals(foo, True)
349
9562cd812cce
350
9562cd812cce
351
9562cd812cce
	def test_label(self):
352
9562cd812cce
		"Button sets label text from arg"
353
9562cd812cce
354
9562cd812cce
		self.assertEquals(ui.Button("test123").get_label(), "test123")
355
9562cd812cce
356
9562cd812cce
357
9562cd812cce
	def test_stock(self):
358
9562cd812cce
		"Button uses stock items if given"
359
9562cd812cce
360
9562cd812cce
		self.assertEquals(ui.Button("test").get_use_stock(), True)
361
9562cd812cce
362
9562cd812cce
363
9562cd812cce
	def test_subclass(self):
364
9562cd812cce
		"Button is subclass of gtk.Button"
365
9562cd812cce
366
9562cd812cce
		self.assertEquals(isinstance(ui.Button("test"), gtk.Button), True)
367
9562cd812cce
368
9562cd812cce
369
9562cd812cce
370
9562cd812cce
class CheckButton(unittest.TestCase):
371
9562cd812cce
	"CheckButton"
372
9562cd812cce
373
9562cd812cce
	def test_subclass(self):
374
9562cd812cce
		"CheckButton is subclass of gtk.CheckButton"
375
9562cd812cce
376
9562cd812cce
		self.assertEquals(isinstance(ui.CheckButton(), gtk.CheckButton), True)
377
9562cd812cce
378
9562cd812cce
379
9562cd812cce
380
9b26b6070e40
class ComboBoxEntry(unittest.TestCase):
381
9b26b6070e40
	"ComboBoxEntry"
382
9b26b6070e40
383
9b26b6070e40
	def test_activates_default(self):
384
9b26b6070e40
		"ComboBoxEntry activates default dialog response by default"
385
9b26b6070e40
386
9b26b6070e40
		self.assertEquals(ui.ComboBoxEntry().child.get_activates_default(), True)
387
9b26b6070e40
388
9b26b6070e40
389
9b26b6070e40
	def test_completion(self):
390
9b26b6070e40
		"ComboBoxEntry sets up an EntryCompletion"
391
9b26b6070e40
392
9b26b6070e40
		e = ui.ComboBoxEntry()
393
9b26b6070e40
		self.assertEquals(e.completion.get_model() is e.model, True)
394
9b26b6070e40
		self.assertEquals(e.child.get_completion() is e.completion, True)
395
9b26b6070e40
396
9b26b6070e40
397
9b26b6070e40
	def test_model(self):
398
9b26b6070e40
		"ComboBoxEntry sets up text liststore"
399
9b26b6070e40
400
9b26b6070e40
		e = ui.ComboBoxEntry()
401
9b26b6070e40
402
9b26b6070e40
		self.assertEquals(hasattr(e, "model"), True)
403
9b26b6070e40
		self.assertEquals(e.model.get_n_columns(), 1)
404
9b26b6070e40
		self.assertEquals(e.model.get_column_type(0), gobject.TYPE_STRING)
405
9b26b6070e40
		self.assertEquals(e.get_text_column(), 0)
406
9b26b6070e40
407
9b26b6070e40
408
9b26b6070e40
	def test_subclass(self):
409
9b26b6070e40
		"ComboBoxEntry is subclass of gtk.ComboBoxEntry"
410
9b26b6070e40
411
9b26b6070e40
		self.assertEquals(isinstance(ui.ComboBoxEntry(), gtk.ComboBoxEntry), True)
412
9b26b6070e40
413
9b26b6070e40
414
9b26b6070e40
	def test_values(self):
415
9b26b6070e40
		"ComboBoxEntry takes values as arg"
416
9b26b6070e40
417
9b26b6070e40
		e = ui.ComboBoxEntry([ "a", "b", "c" ])
418
9b26b6070e40
419
9b26b6070e40
		self.assertEquals(e.model.get_value(e.model.iter_nth_child(None, 0), 0), "a")
420
9b26b6070e40
		self.assertEquals(e.model.get_value(e.model.iter_nth_child(None, 1), 0), "b")
421
9b26b6070e40
		self.assertEquals(e.model.get_value(e.model.iter_nth_child(None, 2), 0), "c")
422
9b26b6070e40
423
9b26b6070e40
424
9b26b6070e40
425
9b26b6070e40
class ComboBoxEntry_get_text(unittest.TestCase):
426
9b26b6070e40
	"ComboBoxEntry.get_text()"
427
9b26b6070e40
428
9b26b6070e40
	def test_text(self):
429
9b26b6070e40
		"ComboBoxEntry.get_text() returns contents of child entry"
430
9b26b6070e40
431
9b26b6070e40
		e = ui.ComboBoxEntry("test123")
432
9b26b6070e40
		self.assertEquals(e.get_text(), e.child.get_text())
433
9b26b6070e40
434
9b26b6070e40
435
9b26b6070e40
436
9b26b6070e40
class ComboBoxEntry_set_values(unittest.TestCase):
437
9b26b6070e40
	"ComboBoxEntry.set_values()"
438
9b26b6070e40
439
9b26b6070e40
	def test_clear(self):
440
9b26b6070e40
		"ComboBoxEntry.set_values() replaces existing values"
441
9b26b6070e40
442
9b26b6070e40
		e = ui.ComboBoxEntry()
443
9b26b6070e40
		e.set_values([ "test1", "test2" ])
444
9b26b6070e40
		e.set_values([ "a", "b", "c" ])
445
9b26b6070e40
446
9b26b6070e40
		self.assertEquals(e.model.get_value(e.model.iter_nth_child(None, 0), 0), "a")
447
9b26b6070e40
		self.assertEquals(e.model.get_value(e.model.iter_nth_child(None, 1), 0), "b")
448
9b26b6070e40
		self.assertEquals(e.model.get_value(e.model.iter_nth_child(None, 2), 0), "c")
449
9b26b6070e40
450
9b26b6070e40
451
9b26b6070e40
	def test_values(self):
452
9b26b6070e40
		"ComboBoxEntry.set_values() sets dropdown values"
453
9b26b6070e40
454
9b26b6070e40
		e = ui.ComboBoxEntry()
455
9b26b6070e40
		e.set_values([ "a", "b", "c" ])
456
9b26b6070e40
457
9b26b6070e40
		self.assertEquals(e.model.get_value(e.model.iter_nth_child(None, 0), 0), "a")
458
9b26b6070e40
		self.assertEquals(e.model.get_value(e.model.iter_nth_child(None, 1), 0), "b")
459
9b26b6070e40
		self.assertEquals(e.model.get_value(e.model.iter_nth_child(None, 2), 0), "c")
460
9b26b6070e40
461
9b26b6070e40
462
9b26b6070e40
463
9b26b6070e40
class ComboBoxEntry_set_text(unittest.TestCase):
464
9b26b6070e40
	"ComboBoxEntry.set_text()"
465
9b26b6070e40
466
9b26b6070e40
	def test_none(self):
467
9b26b6070e40
		"ComboBoxEntry.set_text() clears entry on None"
468
9b26b6070e40
469
9b26b6070e40
		e = ui.ComboBoxEntry()
470
9b26b6070e40
		e.set_text("test123")
471
9b26b6070e40
		e.set_text(None)
472
9b26b6070e40
		self.assertEquals(e.get_text(), "")
473
9b26b6070e40
474
9b26b6070e40
475
9b26b6070e40
	def test_text(self):
476
9b26b6070e40
		"ComboBoxEntry.set_text() sets entry text"
477
9b26b6070e40
478
9b26b6070e40
		e = ui.ComboBoxEntry()
479
9b26b6070e40
		e.set_text("test123")
480
9b26b6070e40
		self.assertEquals(e.get_text(), "test123")
481
9b26b6070e40
482
9b26b6070e40
483
9b26b6070e40
484
9562cd812cce
class DropDown(unittest.TestCase):
485
9562cd812cce
	"DropDown"
486
9562cd812cce
487
9562cd812cce
	def test_model(self):
488
9562cd812cce
		"DropDown model can store text, stock-icon and data"
489
9562cd812cce
490
9562cd812cce
		d = ui.DropDown()
491
9562cd812cce
		self.assertEquals(d.model.get_n_columns(), 3)
492
9562cd812cce
		self.assertEquals(d.model.get_column_type(0), gobject.TYPE_STRING)
493
9562cd812cce
		self.assertEquals(d.model.get_column_type(1), gobject.TYPE_STRING)
494
9562cd812cce
		self.assertEquals(d.model.get_column_type(2), gobject.TYPE_PYOBJECT)
495
9562cd812cce
496
9562cd812cce
497
9562cd812cce
	def test_subclass(self):
498
9562cd812cce
		"DropDown is subclass of gtk.ComboBox"
499
9562cd812cce
500
9562cd812cce
		self.assertEquals(isinstance(ui.DropDown(), gtk.ComboBox), True)
501
9562cd812cce
502
9562cd812cce
503
9562cd812cce
504
9562cd812cce
class DropDown_append_item(unittest.TestCase):
505
9562cd812cce
	"DropDown.append_item"
506
9562cd812cce
507
9562cd812cce
	def test_append(self):
508
9562cd812cce
		"DropDown.append_item() appends item to model"
509
9562cd812cce
510
9562cd812cce
		d = ui.DropDown()
511
9562cd812cce
512
9562cd812cce
		d.append_item("test")
513
9562cd812cce
		self.assertEquals(d.model.iter_n_children(None), 1)
514
9562cd812cce
		self.assertEquals(d.get_item(0), ( "test", None, None))
515
9562cd812cce
516
9562cd812cce
		d.append_item("test123")
517
9562cd812cce
		self.assertEquals(d.model.iter_n_children(None), 2)
518
9562cd812cce
		self.assertEquals(d.get_item(1), ( "test123", None, None))
519
9562cd812cce
520
9562cd812cce
521
9562cd812cce
	def test_data(self):
522
9562cd812cce
		"DropDown.append_item() stores all data"
523
9562cd812cce
524
9562cd812cce
		d = ui.DropDown()
525
9562cd812cce
		d.append_item("test", ui.STOCK_REVELATION, {} )
526
9562cd812cce
		self.assertEquals(d.get_item(0), ( "test", ui.STOCK_REVELATION, {} ))
527
9562cd812cce
528
9562cd812cce
529
9562cd812cce
530
9562cd812cce
class DropDown_delete_item(unittest.TestCase):
531
9562cd812cce
	"DropDown.delete_item()"
532
9562cd812cce
533
9562cd812cce
	def test_delete(self):
534
9562cd812cce
		"DropDown.delete_item() deletes item"
535
9562cd812cce
536
9562cd812cce
		d = ui.DropDown()
537
9562cd812cce
		d.append_item("test1")
538
9562cd812cce
		d.append_item("test2")
539
9562cd812cce
		d.append_item("test3")
540
9562cd812cce
541
9562cd812cce
		d.delete_item(1)
542
9562cd812cce
		self.assertEquals(d.get_item(0), ( "test1", None, None ))
543
9562cd812cce
		self.assertEquals(d.get_item(1), ( "test3", None, None ))
544
9562cd812cce
		self.assertEquals(d.model.iter_n_children(None), 2)
545
9562cd812cce
546
9562cd812cce
547
9562cd812cce
548
9562cd812cce
class DropDown_get_active_item(unittest.TestCase):
549
9562cd812cce
	"DropDown.get_active_item()"
550
9562cd812cce
551
9562cd812cce
	def test_active(self):
552
9562cd812cce
		"DropDown.get_active_item() returns data for the active item"
553
9562cd812cce
554
9562cd812cce
		d = ui.DropDown()
555
9562cd812cce
		d.append_item("test1")
556
9562cd812cce
		d.append_item("test2")
557
9562cd812cce
		d.append_item("test3")
558
9562cd812cce
559
9562cd812cce
		d.set_active(0)
560
9562cd812cce
		self.assertEquals(d.get_active_item(), ( "test1", None, None ))
561
9562cd812cce
562
9562cd812cce
		d.set_active(2)
563
9562cd812cce
		self.assertEquals(d.get_active_item(), ( "test3", None, None ))
564
9562cd812cce
565
9562cd812cce
566
9562cd812cce
	def test_data(self):
567
9562cd812cce
		"DropDown.get_active_item() returns all data"
568
9562cd812cce
569
9562cd812cce
		d = ui.DropDown()
570
9562cd812cce
		d.append_item("test", ui.STOCK_REVELATION, {})
571
9562cd812cce
		d.set_active(0)
572
9562cd812cce
		self.assertEquals(d.get_active_item(), ( "test", ui.STOCK_REVELATION, {} ))
573
9562cd812cce
574
9562cd812cce
575
9562cd812cce
576
9562cd812cce
class DropDown_get_item(unittest.TestCase):
577
9562cd812cce
	"DropDown.get_item()"
578
9562cd812cce
579
9562cd812cce
	def test_data(self):
580
9562cd812cce
		"DropDown.get_item() returns all data"
581
9562cd812cce
582
9562cd812cce
		d = ui.DropDown()
583
9562cd812cce
		d.append_item("test", ui.STOCK_REVELATION, {})
584
9562cd812cce
		self.assertEquals(d.get_item(0), ( "test", ui.STOCK_REVELATION, {} ))
585
9562cd812cce
586
9562cd812cce
587
9562cd812cce
588
9562cd812cce
class DropDown_insert_item(unittest.TestCase):
589
9562cd812cce
	"DropDown.insert_item()"
590
9562cd812cce
591
9562cd812cce
	def test_data(self):
592
9562cd812cce
		"DropDown.insert_item() stores all data"
593
9562cd812cce
594
9562cd812cce
		d = ui.DropDown()
595
9562cd812cce
		d.append_item("test1")
596
9562cd812cce
		d.insert_item(0, "test2", ui.STOCK_REVELATION, {})
597
9562cd812cce
598
9562cd812cce
		self.assertEquals(d.get_item(0), ( "test2", ui.STOCK_REVELATION, {} ))
599
9562cd812cce
600
9562cd812cce
601
9562cd812cce
	def test_position(self):
602
9562cd812cce
		"DropDown.insert_item() stores item at correct position"
603
9562cd812cce
604
9562cd812cce
		d = ui.DropDown()
605
9562cd812cce
		d.append_item("test1")
606
9562cd812cce
		d.append_item("test2")
607
9562cd812cce
		d.insert_item(1, "test3")
608
9562cd812cce
609
9562cd812cce
		self.assertEquals(d.get_item(0), ( "test1", None, None ))
610
9562cd812cce
		self.assertEquals(d.get_item(1), ( "test3", None, None ))
611
9562cd812cce
		self.assertEquals(d.get_item(2), ( "test2", None, None ))
612
9562cd812cce
613
9562cd812cce
614
9562cd812cce
615
9b26b6070e40
class Entry(unittest.TestCase):
616
9b26b6070e40
	"Entry"
617
9b26b6070e40
618
9b26b6070e40
	def test_activates_default(self):
619
9b26b6070e40
		"Entry activates default dialog response by default"
620
9b26b6070e40
621
9b26b6070e40
		self.assertEquals(ui.Entry().get_activates_default(), True)
622
9b26b6070e40
623
9b26b6070e40
624
9b26b6070e40
	def test_subclass(self):
625
9b26b6070e40
		"Entry is subclass of gtk.Entry"
626
9b26b6070e40
627
9b26b6070e40
		self.assertEquals(isinstance(ui.Entry(), gtk.Entry), True)
628
9b26b6070e40
629
9b26b6070e40
630
9b26b6070e40
	def test_text(self):
631
9b26b6070e40
		"Entry takes text as arg"
632
9b26b6070e40
633
9b26b6070e40
		self.assertEquals(ui.Entry("test123").get_text(), "test123")
634
9b26b6070e40
635
9b26b6070e40
636
9b26b6070e40
637
9b26b6070e40
class Entry_set_text(unittest.TestCase):
638
9b26b6070e40
	"Entry.set_text()"
639
9b26b6070e40
640
9b26b6070e40
	def test_none(self):
641
9b26b6070e40
		"Entry.set_text() blanks entry on None"
642
9b26b6070e40
643
9b26b6070e40
		e = ui.Entry("test")
644
9b26b6070e40
		e.set_text(None)
645
9b26b6070e40
		self.assertEquals(e.get_text(), "")
646
9b26b6070e40
647
9b26b6070e40
648
9b26b6070e40
	def test_text(self):
649
9b26b6070e40
		"Entry.set_text() sets text correctly"
650
9b26b6070e40
651
9b26b6070e40
		e = ui.Entry()
652
9b26b6070e40
		e.set_text("test")
653
9b26b6070e40
		self.assertEquals(e.get_text(), "test")
654
9b26b6070e40
655
9b26b6070e40
656
9b26b6070e40
657
1b3159db8a74
class EventBox(unittest.TestCase):
658
1b3159db8a74
	"EventBox"
659
1b3159db8a74
660
1b3159db8a74
	def test_child(self):
661
1b3159db8a74
		"EventBox takes child as argument"
662
1b3159db8a74
663
1b3159db8a74
		label = ui.Label("test")
664
1b3159db8a74
		eventbox = ui.EventBox(label)
665
1b3159db8a74
		self.assertEquals(eventbox.get_child() is label, True)
666
1b3159db8a74
667
1b3159db8a74
668
1b3159db8a74
	def test_subclass(self):
669
1b3159db8a74
		"EventBox is subclass of gtk.EventBox"
670
1b3159db8a74
671
1b3159db8a74
		self.assertEquals(isinstance(ui.EventBox(), gtk.EventBox), True)
672
1b3159db8a74
673
1b3159db8a74
674
1b3159db8a74
675
9562cd812cce
class EntryDropDown(unittest.TestCase):
676
9562cd812cce
	"EntryDropDown"
677
9562cd812cce
678
9562cd812cce
	def test_data(self):
679
9562cd812cce
		"EntryDropDown stores correct data"
680
9562cd812cce
681
9562cd812cce
		d = ui.EntryDropDown()
682
9562cd812cce
		name, stock, e = d.get_item(0)
683
9562cd812cce
		self.assertEquals(e.typename, name)
684
9562cd812cce
		self.assertEquals(e.icon, stock)
685
9562cd812cce
686
9562cd812cce
687
9562cd812cce
	def test_entries(self):
688
9562cd812cce
		"EntryDropDown stores all entries"
689
9562cd812cce
690
9562cd812cce
		entries = entry.ENTRYLIST[:]
691
9562cd812cce
		d = ui.EntryDropDown()
692
9562cd812cce
693
9562cd812cce
		for index in range(d.model.iter_n_children(None)):
694
9562cd812cce
			name, stock, e = d.get_item(index)
695
9562cd812cce
			self.assertEquals(e in entries, True)
696
9562cd812cce
			entries.remove(e)
697
9562cd812cce
698
9562cd812cce
		self.assertEquals(entries, [])
699
9562cd812cce
700
9562cd812cce
701
9562cd812cce
	def test_subclass(self):
702
9562cd812cce
		"EntryDropDown is subclass of DropDown"
703
9562cd812cce
704
9562cd812cce
		self.assertEquals(isinstance(ui.EntryDropDown(), ui.DropDown), True)
705
9562cd812cce
706
9562cd812cce
707
9562cd812cce
708
9562cd812cce
class EntryDropDown_get_active_type(unittest.TestCase):
709
9562cd812cce
	"EntryDropDown.get_active_type()"
710
9562cd812cce
711
9562cd812cce
	def test_active(self):
712
9562cd812cce
		"EntryDropDown.get_active_type() returns active type"
713
9562cd812cce
714
9562cd812cce
		d = ui.EntryDropDown()
715
9562cd812cce
		d.set_active(3)
716
9562cd812cce
717
9562cd812cce
		self.assertEquals(d.get_item(3)[2], d.get_active_type())
718
9562cd812cce
719
9562cd812cce
720
9562cd812cce
721
9562cd812cce
class EntryDropDown_set_active_type(unittest.TestCase):
722
9562cd812cce
	"EntryDropDown.set_active_type()"
723
9562cd812cce
724
9562cd812cce
	def test_active(self):
725
9562cd812cce
		"EntryDropDown.set_active_type() sets active type"
726
9562cd812cce
727
9562cd812cce
		d = ui.EntryDropDown()
728
9562cd812cce
		d.set_active_type(entry.GenericEntry)
729
9562cd812cce
		self.assertEquals(d.get_active_type(), entry.GenericEntry)
730
9562cd812cce
731
9562cd812cce
732
9562cd812cce
733
86bdcc2b8f52
class EntryTree(unittest.TestCase):
734
86bdcc2b8f52
	"EntryTree"
735
86bdcc2b8f52
736
86bdcc2b8f52
	def test_crs(self):
737
86bdcc2b8f52
		"EntryTree sets up proper cell renderers"
738
86bdcc2b8f52
739
86bdcc2b8f52
		t = ui.EntryTree(data.EntryStore())
740
86bdcc2b8f52
		crs = t.get_column(0).get_cell_renderers()
741
86bdcc2b8f52
742
86bdcc2b8f52
		if type(crs[0]) == gtk.CellRendererPixbuf:
743
86bdcc2b8f52
			cr_pixbuf = crs[0]
744
86bdcc2b8f52
			cr_text = crs[1]
745
86bdcc2b8f52
746
86bdcc2b8f52
		elif type(crs[0]) == gtk.CellRendererText:
747
86bdcc2b8f52
			cr_text = crs[0]
748
86bdcc2b8f52
			cr_pixbuf = crs[1]
749
86bdcc2b8f52
750
86bdcc2b8f52
		self.assertEquals(cr_pixbuf.get_property("stock-size"), ui.ICON_SIZE_TREEVIEW)
751
86bdcc2b8f52
752
86bdcc2b8f52
753
86bdcc2b8f52
754
e0a14b958359
class EntryView(unittest.TestCase):
755
e0a14b958359
	"EntryView"
756
e0a14b958359
757
e0a14b958359
	def test_subclass(self):
758
e0a14b958359
		"EntryView is subclass of gtk.VBox"
759
e0a14b958359
760
e0a14b958359
		self.assertEquals(isinstance(ui.EntryView(), gtk.VBox), True)
761
e0a14b958359
762
e0a14b958359
763
e0a14b958359
764
e0a14b958359
class EntryView_clear(unittest.TestCase):
765
e0a14b958359
	"EntryView.clear()"
766
e0a14b958359
767
e0a14b958359
	def test_children(self):
768
e0a14b958359
		"EntryView.clear() empties widget contents"
769
e0a14b958359
770
e0a14b958359
		v = ui.EntryView()
771
e0a14b958359
772
e0a14b958359
		e = entry.GenericEntry()
773
e0a14b958359
		e.name = "test"
774
e0a14b958359
		e[entry.UsernameField] = "username"
775
e0a14b958359
776
e0a14b958359
		v.display_entry(e)
777
e0a14b958359
		v.clear()
778
e0a14b958359
		self.assertEquals(len(v.get_children()), 0)
779
e0a14b958359
780
e0a14b958359
781
e0a14b958359
	def test_entry(self):
782
e0a14b958359
		"EntryView.clear() clears the entry attribute"
783
e0a14b958359
784
e0a14b958359
		v = ui.EntryView()
785
e0a14b958359
		v.display_entry(entry.GenericEntry())
786
e0a14b958359
		v.clear()
787
e0a14b958359
788
e0a14b958359
		self.assertEquals(v.entry, None)
789
e0a14b958359
790
e0a14b958359
791
e0a14b958359
792
e0a14b958359
class EntryView_display_entry(unittest.TestCase):
793
e0a14b958359
	"EntryView"
794
e0a14b958359
795
e0a14b958359
	def test_display(self):
796
e0a14b958359
		"EntryView.display_entry() displays entry"
797
e0a14b958359
798
e0a14b958359
		v = ui.EntryView()
799
e0a14b958359
800
e0a14b958359
		e = entry.GenericEntry()
801
e0a14b958359
		e.name = "test"
802
e0a14b958359
		e.description = "desc"
803
e0a14b958359
		e[entry.UsernameField] = "username"
804
e0a14b958359
805
e0a14b958359
		v.display_entry(e)
806
e0a14b958359
		self.assertNotEqual(len(v.get_children()), 0)
807
e0a14b958359
808
e0a14b958359
809
e0a14b958359
	def test_entry(self):
810
e0a14b958359
		"EntryView.display_entry() sets entry attribute"
811
e0a14b958359
812
e0a14b958359
		v = ui.EntryView()
813
e0a14b958359
		e = entry.GenericEntry()
814
e0a14b958359
		v.display_entry(e)
815
e0a14b958359
816
e0a14b958359
		self.assertEquals(v.entry is e, True)
817
e0a14b958359
818
e0a14b958359
819
e0a14b958359
820
e0a14b958359
class EntryView_display_info(unittest.TestCase):
821
e0a14b958359
	"EntryView.display_info()"
822
e0a14b958359
823
e0a14b958359
	def test_clear(self):	
824
e0a14b958359
		"EntryView.display_info() removes the entry"
825
e0a14b958359
826
e0a14b958359
		v = ui.EntryView()
827
e0a14b958359
		v.display_entry(entry.GenericEntry())
828
e0a14b958359
		v.display_info()
829
e0a14b958359
830
e0a14b958359
		self.assertEquals(v.entry, None)
831
e0a14b958359
832
e0a14b958359
833
e0a14b958359
	def test_display(self):
834
e0a14b958359
		"EntryView.display_info() displays info"
835
e0a14b958359
836
e0a14b958359
		v = ui.EntryView()
837
e0a14b958359
		v.display_info()
838
e0a14b958359
839
e0a14b958359
		self.assertNotEqual(len(v.get_children()), 0)
840
e0a14b958359
841
e0a14b958359
842
e0a14b958359
843
9b26b6070e40
class FileEntry(unittest.TestCase):
844
9b26b6070e40
	"FileEntry"
845
9b26b6070e40
846
9b26b6070e40
	def test_button(self):
847
9b26b6070e40
		"FileEntry has Button as button attribute"
848
9b26b6070e40
849
9b26b6070e40
		self.assertEquals(isinstance(ui.FileEntry().button, ui.Button), True)
850
9b26b6070e40
851
9b26b6070e40
852
9b26b6070e40
	def test_entry(self):
853
9b26b6070e40
		"FileEntry has Entry as entry attribute"
854
9b26b6070e40
855
9b26b6070e40
		self.assertEquals(isinstance(ui.FileEntry().entry, ui.Entry), True)
856
9b26b6070e40
857
9b26b6070e40
858
9b26b6070e40
	def test_file(self):
859
9b26b6070e40
		"FileEntry takes file as argument"
860
9b26b6070e40
861
9b26b6070e40
		e = ui.FileEntry(None, "/bin/ls")
862
9b26b6070e40
		self.assertEquals(e.get_filename(), "/bin/ls")
863
9b26b6070e40
864
9b26b6070e40
865
9b26b6070e40
	def test_layout(self):
866
9b26b6070e40
		"FileEntry is HBox with Entry and Button"
867
9b26b6070e40
868
9b26b6070e40
		e = ui.FileEntry()
869
9b26b6070e40
		self.assertEquals(isinstance(e, ui.HBox), True)
870
9b26b6070e40
		self.assertEquals(len(e.get_children()), 2)
871
9b26b6070e40
		self.assertEquals(e.get_children()[0] is e.entry, True)
872
9b26b6070e40
		self.assertEquals(e.get_children()[1] is e.button, True)
873
9b26b6070e40
874
9b26b6070e40
875
9b26b6070e40
	def test_title(self):
876
9b26b6070e40
		"FileEntry takes file selector title as argument"
877
9b26b6070e40
878
9b26b6070e40
		self.assertEquals(ui.FileEntry("test").title, "test")
879
9b26b6070e40
880
9b26b6070e40
881
9b26b6070e40
882
9b26b6070e40
class FileEntry_get_filename(unittest.TestCase):
883
9b26b6070e40
	"FileEntry.get_filename()"
884
9b26b6070e40
885
9b26b6070e40
	def test_filename(self):
886
9b26b6070e40
		"FileEntry.get_filename() returns entry contents"
887
9b26b6070e40
888
9b26b6070e40
		e = ui.FileEntry(None, "/bin/ls")
889
9b26b6070e40
		self.assertEquals(e.get_filename(), "/bin/ls")
890
9b26b6070e40
891
9b26b6070e40
892
9b26b6070e40
893
9b26b6070e40
class FileEntry_get_text(unittest.TestCase):
894
9b26b6070e40
	"FileEntry.get_text()"
895
9b26b6070e40
896
9b26b6070e40
	def test_filename(self):
897
9b26b6070e40
		"FileEntry.get_text() returns entry contents"
898
9b26b6070e40
899
9b26b6070e40
		e = ui.FileEntry(None, "/bin/ls")
900
9b26b6070e40
		self.assertEquals(e.get_text(), "/bin/ls")
901
9b26b6070e40
902
9b26b6070e40
903
9b26b6070e40
904
9b26b6070e40
class FileEntry_set_filename(unittest.TestCase):
905
9b26b6070e40
	"FileEntry.set_filename()"
906
9b26b6070e40
907
9b26b6070e40
	def test_filename(self):
908
9b26b6070e40
		"FileEntry.set_filename() sets filename in entry"
909
9b26b6070e40
910
9b26b6070e40
		e = ui.FileEntry()
911
9b26b6070e40
		e.set_filename("/bin/ls")
912
9b26b6070e40
		self.assertEquals(e.get_filename(), "/bin/ls")
913
9b26b6070e40
914
9b26b6070e40
915
9b26b6070e40
	def test_normpath(self):
916
9b26b6070e40
		"FileEntry.set_filename() applies io.file_normpath()"
917
9b26b6070e40
918
9b26b6070e40
		e = ui.FileEntry()
919
9b26b6070e40
		e.set_filename("/home/../bin/./ls")
920
9b26b6070e40
		self.assertEquals(e.get_filename(), "/bin/ls")
921
9b26b6070e40
922
9b26b6070e40
923
9b26b6070e40
924
9b26b6070e40
class FileEntry_set_text(unittest.TestCase):
925
9b26b6070e40
	"FileEntry.set_text()"
926
9b26b6070e40
927
9b26b6070e40
	def test_text(self):
928
9b26b6070e40
		"FileEntry.set_text() sets text in entry"
929
9b26b6070e40
930
9b26b6070e40
		e = ui.FileEntry()
931
9b26b6070e40
		e.set_text("test")
932
9b26b6070e40
		self.assertEquals(e.get_text(), "test")
933
9b26b6070e40
934
9b26b6070e40
935
9b26b6070e40
936
8ec66df6d4cf
class HBox(unittest.TestCase):
937
8ec66df6d4cf
	"HBox"
938
8ec66df6d4cf
939
8ec66df6d4cf
	def test_children(self):
940
8ec66df6d4cf
		"HBox accepts children as arguments"
941
8ec66df6d4cf
942
8ec66df6d4cf
		hbox = ui.HBox(ui.Label("a"), ui.Label("b"), ui.Label("c"))
943
8ec66df6d4cf
944
8ec66df6d4cf
		self.assertEquals(len(hbox.get_children()), 3)
945
8ec66df6d4cf
		self.assertEquals(hbox.get_children()[0].get_text(), "a")
946
8ec66df6d4cf
		self.assertEquals(hbox.get_children()[1].get_text(), "b")
947
8ec66df6d4cf
		self.assertEquals(hbox.get_children()[2].get_text(), "c")
948
8ec66df6d4cf
949
8ec66df6d4cf
950
8ec66df6d4cf
	def test_hig(self):
951
8ec66df6d4cf
		"HBox conforms to the HIG"
952
8ec66df6d4cf
953
8ec66df6d4cf
		hbox = ui.HBox()
954
8ec66df6d4cf
		self.assertEquals(hbox.get_spacing(), 6)
955
8ec66df6d4cf
		self.assertEquals(hbox.get_border_width(), 0)
956
8ec66df6d4cf
957
8ec66df6d4cf
958
8ec66df6d4cf
	def test_parent(self):
959
8ec66df6d4cf
		"HBox is subclass of gtk.HBox"
960
8ec66df6d4cf
961
8ec66df6d4cf
		self.assertEquals(isinstance(ui.HBox(), gtk.HBox), True)
962
8ec66df6d4cf
963
8ec66df6d4cf
964
8ec66df6d4cf
965
8ec66df6d4cf
class HPaned(unittest.TestCase):
966
8ec66df6d4cf
	"HPaned"
967
8ec66df6d4cf
968
8ec66df6d4cf
	def test_children(self):
969
8ec66df6d4cf
		"HPaned accepts children as arguments"
970
8ec66df6d4cf
971
8ec66df6d4cf
		hpaned = ui.HPaned(ui.Label("a"), ui.Label("b"))
972
8ec66df6d4cf
973
8ec66df6d4cf
		self.assertEquals(hpaned.get_child1().get_text(), "a")
974
8ec66df6d4cf
		self.assertEquals(hpaned.get_child2().get_text(), "b")
975
8ec66df6d4cf
976
8ec66df6d4cf
977
8ec66df6d4cf
	def test_subclass(self):
978
8ec66df6d4cf
		"HPaned is subclass of gtk.HPaned"
979
8ec66df6d4cf
980
8ec66df6d4cf
		self.assertEquals(isinstance(ui.HPaned(), gtk.HPaned), True)
981
8ec66df6d4cf
982
8ec66df6d4cf
983
8ec66df6d4cf
984
50d19d11f35e
class ItemFactory(unittest.TestCase):
985
50d19d11f35e
	"ItemFactory"
986
50d19d11f35e
987
50d19d11f35e
	def test_icondir(self):
988
50d19d11f35e
		"ItemFactory puts icondir in search path"
989
50d19d11f35e
990
50d19d11f35e
		self.assertEquals(config.DIR_ICONS in ui.ItemFactory(gtk.Window()).theme.get_search_path(), True)
991
50d19d11f35e
992
50d19d11f35e
993
50d19d11f35e
	def test_icons(self):
994
50d19d11f35e
		"ItemFactory registers icons on init"
995
50d19d11f35e
996
50d19d11f35e
		f = ui.ItemFactory(gtk.Window())
997
50d19d11f35e
		gtk_run()
998
50d19d11f35e
999
50d19d11f35e
		for stock in (
1000
50d19d11f35e
			ui.STOCK_ENTRY_FOLDER,
1001
50d19d11f35e
			ui.STOCK_ENTRY_FOLDER_OPEN,
1002
50d19d11f35e
			ui.STOCK_ENTRY_CREDITCARD,
1003
50d19d11f35e
			ui.STOCK_ENTRY_CRYPTOKEY,
1004
50d19d11f35e
			ui.STOCK_ENTRY_DATABASE,
1005
50d19d11f35e
			ui.STOCK_ENTRY_DOOR,
1006
50d19d11f35e
			ui.STOCK_ENTRY_EMAIL,
1007
50d19d11f35e
			ui.STOCK_ENTRY_FTP,
1008
50d19d11f35e
			ui.STOCK_ENTRY_GENERIC,
1009
50d19d11f35e
			ui.STOCK_ENTRY_PHONE,
1010
50d19d11f35e
			ui.STOCK_ENTRY_SHELL,
1011
50d19d11f35e
			ui.STOCK_ENTRY_WEBSITE,
1012
50d19d11f35e
			ui.STOCK_REVELATION
1013
50d19d11f35e
		):
1014
50d19d11f35e
			self.assertEquals(stock in gtk.stock_list_ids(), True)
1015
50d19d11f35e
1016
50d19d11f35e
1017
50d19d11f35e
1018
50d19d11f35e
	def test_subclass(self):
1019
50d19d11f35e
		"ItemFactory is subclass of gtk.IconFactory"
1020
50d19d11f35e
1021
50d19d11f35e
		self.assertEquals(isinstance(ui.ItemFactory(gtk.Window()), gtk.IconFactory), True)
1022
50d19d11f35e
1023
50d19d11f35e
1024
50d19d11f35e
1025
50d19d11f35e
class ItemFactory_create_stock_item(unittest.TestCase):
1026
50d19d11f35e
	"ItemFactory.create_stock_item()"
1027
50d19d11f35e
1028
50d19d11f35e
	def test_create(self):
1029
50d19d11f35e
		"ItemFactory.create_stock_item() creates stock item"
1030
50d19d11f35e
1031
50d19d11f35e
		f = ui.ItemFactory(gtk.Window())
1032
50d19d11f35e
		f.create_stock_item("test123", "Just a test", gtk.STOCK_ADD)
1033
50d19d11f35e
1034
50d19d11f35e
		self.assertEquals("test123" in gtk.stock_list_ids(), True)
1035
50d19d11f35e
1036
50d19d11f35e
1037
50d19d11f35e
	def test_data(self):
1038
50d19d11f35e
		"ItemFactory.create_stock_item() stores all data for item"
1039
50d19d11f35e
1040
50d19d11f35e
		f = ui.ItemFactory(gtk.Window())
1041
50d19d11f35e
		f.create_stock_item("test", "Just a test", gtk.STOCK_ADD)
1042
50d19d11f35e
1043
50d19d11f35e
		stock = gtk.stock_lookup("test")
1044
50d19d11f35e
1045
50d19d11f35e
		self.assertNotEqual(stock, None)
1046
50d19d11f35e
		self.assertEquals(stock[0], "test")
1047
50d19d11f35e
		self.assertEquals(stock[1], "Just a test")
1048
50d19d11f35e
1049
50d19d11f35e
1050
50d19d11f35e
1051
50d19d11f35e
class ItemFactory_load_icon(unittest.TestCase):
1052
50d19d11f35e
	"ItemFactory.load_icon()"
1053
50d19d11f35e
1054
50d19d11f35e
	def test_load(self):
1055
50d19d11f35e
		"ItemFactory.load_icon() loads stock icon"
1056
50d19d11f35e
1057
50d19d11f35e
		f = ui.ItemFactory(gtk.Window())
1058
50d19d11f35e
		icon = f.load_icon("stock_people", gtk.ICON_SIZE_MENU)
1059
50d19d11f35e
1060
50d19d11f35e
		self.assertEquals(type(icon), gtk.gdk.Pixbuf)
1061
50d19d11f35e
1062
50d19d11f35e
1063
50d19d11f35e
1064
50d19d11f35e
class ItemFactory_load_stock_icon(unittest.TestCase):
1065
50d19d11f35e
	"ItemFactory.load_stock_icon()"
1066
50d19d11f35e
1067
50d19d11f35e
	def test_load(self):
1068
50d19d11f35e
		"ItemFactory.load_stock_icon() loads and registers icon"
1069
50d19d11f35e
1070
50d19d11f35e
		f = ui.ItemFactory(gtk.Window())
1071
50d19d11f35e
		f.load_stock_icon("nicestock", "stock_example", ( gtk.ICON_SIZE_MENU, gtk.ICON_SIZE_LARGE_TOOLBAR ))
1072
50d19d11f35e
1073
50d19d11f35e
		self.assertEquals("nicestock" in gtk.stock_list_ids(), True)
1074
50d19d11f35e
1075
50d19d11f35e
1076
50d19d11f35e
1077
1b3159db8a74
class Image(unittest.TestCase):
1078
1b3159db8a74
	"Image"
1079
1b3159db8a74
1080
1b3159db8a74
	def test_stock(self):
1081
1b3159db8a74
		"Image takes stock and size as arguments"
1082
1b3159db8a74
1083
1b3159db8a74
		image = ui.Image(ui.STOCK_REVELATION, ui.ICON_SIZE_LOGO)
1084
1b3159db8a74
		self.assertEquals(image.get_stock(), ( ui.STOCK_REVELATION, ui.ICON_SIZE_LOGO ))
1085
1b3159db8a74
1086
1b3159db8a74
1087
1b3159db8a74
	def test_subclass(self):
1088
1b3159db8a74
		"Image is subclass of gtk.Image"
1089
1b3159db8a74
1090
1b3159db8a74
		self.assertEquals(isinstance(ui.Image(), gtk.Image), True)
1091
1b3159db8a74
1092
1b3159db8a74
1093
1b3159db8a74
1094
1b3159db8a74
class ImageLabel(unittest.TestCase):
1095
1b3159db8a74
	"ImageLabel"
1096
1b3159db8a74
1097
1b3159db8a74
	def setUp(self):
1098
1b3159db8a74
		"sets up common facilities"
1099
1b3159db8a74
1100
1b3159db8a74
		self.imagelabel = ui.ImageLabel("Test", ui.STOCK_REVELATION, ui.ICON_SIZE_LOGO)
1101
1b3159db8a74
1102
1b3159db8a74
1103
1b3159db8a74
	def test_hig(self):
1104
1b3159db8a74
		"ImageLabel conforms to the HIG"
1105
1b3159db8a74
1106
1b3159db8a74
		self.assertEquals(self.imagelabel.hbox.get_spacing(), 6)
1107
1b3159db8a74
1108
1b3159db8a74
1109
1b3159db8a74
	def test_image(self):
1110
1b3159db8a74
		"ImageLabel sets image correctly"
1111
1b3159db8a74
1112
1b3159db8a74
		self.assertEquals(self.imagelabel.image.get_stock(), ( ui.STOCK_REVELATION, ui.ICON_SIZE_LOGO ))
1113
1b3159db8a74
1114
1b3159db8a74
1115
1b3159db8a74
	def test_label(self):
1116
1b3159db8a74
		"ImageLabel sets label correctly"
1117
1b3159db8a74
1118
1b3159db8a74
		self.assertEquals(self.imagelabel.label.get_text(), "Test")
1119
1b3159db8a74
1120
1b3159db8a74
1121
1b3159db8a74
1122
1b3159db8a74
class ImageLabel_set_stock(unittest.TestCase):
1123
1b3159db8a74
	"ImageLabel.set_stock()"
1124
1b3159db8a74
1125
1b3159db8a74
	def test_stock(self):
1126
1b3159db8a74
		"ImageLabel.set_stock() sets image correctly"
1127
1b3159db8a74
1128
1b3159db8a74
		imagelabel = ui.ImageLabel("Test", ui.STOCK_REVELATION, ui.ICON_SIZE_LOGO)
1129
1b3159db8a74
1130
1b3159db8a74
		imagelabel.set_stock(ui.STOCK_ENTRY_FOLDER, ui.ICON_SIZE_DATAVIEW)
1131
1b3159db8a74
		self.assertEquals(imagelabel.image.get_stock(), ( ui.STOCK_ENTRY_FOLDER, ui.ICON_SIZE_DATAVIEW ))
1132
1b3159db8a74
1133
1b3159db8a74
1134
1b3159db8a74
1135
1b3159db8a74
class ImageLabel_set_text(unittest.TestCase):
1136
1b3159db8a74
	"ImageLabel.set_text()"
1137
1b3159db8a74
1138
1b3159db8a74
	def test_text(self):
1139
1b3159db8a74
		"ImageLabel.set_text() sets text correctly"
1140
1b3159db8a74
1141
1b3159db8a74
		imagelabel = ui.ImageLabel("Test", ui.STOCK_REVELATION, ui.ICON_SIZE_LOGO)
1142
1b3159db8a74
1143
1b3159db8a74
		imagelabel.set_text("test123")
1144
1b3159db8a74
		self.assertEquals(imagelabel.label.get_text(), "test123")
1145
1b3159db8a74
1146
1b3159db8a74
1147
1b3159db8a74
1148
9562cd812cce
class ImageMenuItem(unittest.TestCase):
1149
9562cd812cce
	"ImageMenuItem"
1150
9562cd812cce
1151
9562cd812cce
	def test_image(self):
1152
9562cd812cce
		"ImageMenuItem makes image available as image attribute"
1153
9562cd812cce
1154
9562cd812cce
		i = ui.ImageMenuItem(gtk.STOCK_ADD, "test")
1155
9562cd812cce
		self.assertEquals(isinstance(i.image, gtk.Image), True)
1156
9562cd812cce
		self.assertEquals(i.image is i.get_children()[1], True)
1157
9562cd812cce
1158
9562cd812cce
1159
9562cd812cce
	def test_label(self):
1160
9562cd812cce
		"ImageMenuItem makes label available as label attribute"
1161
9562cd812cce
1162
9562cd812cce
		i = ui.ImageMenuItem(gtk.STOCK_ADD, "test")
1163
9562cd812cce
		self.assertEquals(isinstance(i.label, gtk.Label), True)
1164
9562cd812cce
		self.assertEquals(i.label is i.get_children()[0], True)
1165
9562cd812cce
1166
9562cd812cce
1167
9562cd812cce
	def test_stock(self):
1168
9562cd812cce
		"ImageMenuItem sets image stock from arg"
1169
9562cd812cce
1170
9562cd812cce
		i = ui.ImageMenuItem(gtk.STOCK_ADD)
1171
9562cd812cce
		self.assertEquals(i.image.get_stock(), ( gtk.STOCK_ADD, gtk.ICON_SIZE_MENU ))
1172
9562cd812cce
1173
9562cd812cce
1174
9562cd812cce
	def test_subclass(self):
1175
9562cd812cce
		"ImageMenuItem is subclass of gtk.ImageMenuItem"
1176
9562cd812cce
1177
9562cd812cce
		self.assertEquals(isinstance(ui.ImageMenuItem(gtk.STOCK_ADD), gtk.ImageMenuItem), True)
1178
9562cd812cce
1179
9562cd812cce
1180
9562cd812cce
	def test_text(self):
1181
9562cd812cce
		"ImageMenuItem sets label text from arg"
1182
9562cd812cce
1183
9562cd812cce
		i = ui.ImageMenuItem(gtk.STOCK_ADD, "test")
1184
9562cd812cce
		self.assertEquals(i.label.get_text(), "test")
1185
9562cd812cce
1186
9562cd812cce
1187
9562cd812cce
1188
9562cd812cce
class ImageMenuItem_set_stock(unittest.TestCase):
1189
9562cd812cce
	"ImageMenuItem.set_stock()"
1190
9562cd812cce
1191
9562cd812cce
	def test_stock(self):
1192
9562cd812cce
		"ImageMenuItem.set_stock() sets the stock image"
1193
9562cd812cce
1194
9562cd812cce
		i = ui.ImageMenuItem(gtk.STOCK_ADD)
1195
9562cd812cce
		i.set_stock(gtk.STOCK_REMOVE)
1196
9562cd812cce
		self.assertEquals(i.image.get_stock(), ( gtk.STOCK_REMOVE, gtk.ICON_SIZE_MENU ))
1197
9562cd812cce
1198
9562cd812cce
1199
9562cd812cce
1200
9562cd812cce
class ImageMenuItem_set_text(unittest.TestCase):
1201
9562cd812cce
	"ImageMenuItem.set_text()"
1202
9562cd812cce
1203
9562cd812cce
	def test_text(self):
1204
9562cd812cce
		"ImageMenuItem.set_text() sets label text"
1205
9562cd812cce
1206
9562cd812cce
		i = ui.ImageMenuItem(gtk.STOCK_ADD)
1207
9562cd812cce
		i.set_text("test123")
1208
9562cd812cce
		self.assertEquals(i.label.get_text(), "test123")
1209
9562cd812cce
1210
9562cd812cce
1211
9562cd812cce
1212
8ec66df6d4cf
class InputSection(unittest.TestCase):
1213
8ec66df6d4cf
	"InputSection"
1214
8ec66df6d4cf
1215
8ec66df6d4cf
	def test_description(self):
1216
8ec66df6d4cf
		"InputSection creates description label correctly"
1217
8ec66df6d4cf
1218
8ec66df6d4cf
		sect = ui.InputSection("Title", "Description")
1219
8ec66df6d4cf
		self.assertEquals(len(sect.get_children()), 2)
1220
8ec66df6d4cf
		self.assertEquals(type(sect.get_children()[1]), ui.Label)
1221
8ec66df6d4cf
		self.assertEquals(sect.get_children()[1].get_text(), "Description")
1222
8ec66df6d4cf
1223
8ec66df6d4cf
1224
8ec66df6d4cf
	def test_hig(self):
1225
8ec66df6d4cf
		"InputSection conforms to the HIG"
1226
8ec66df6d4cf
1227
8ec66df6d4cf
		sect = ui.InputSection()
1228
8ec66df6d4cf
		self.assertEquals(sect.get_spacing(), 6)
1229
8ec66df6d4cf
1230
8ec66df6d4cf
1231
8ec66df6d4cf
	def test_sizegroup(self):
1232
8ec66df6d4cf
		"InputSection uses sizegroup correctly"
1233
8ec66df6d4cf
1234
8ec66df6d4cf
		sizegroup = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL)
1235
8ec66df6d4cf
		sect = ui.InputSection("Title", "Description", sizegroup)
1236
8ec66df6d4cf
		self.assertEquals(sect.sizegroup is sizegroup, True)
1237
8ec66df6d4cf
1238
8ec66df6d4cf
1239
8ec66df6d4cf
	def test_sizegroup_default(self):
1240
8ec66df6d4cf
		"InputSection sets up horizontal sizegroup by default"
1241
8ec66df6d4cf
1242
8ec66df6d4cf
		sect = ui.InputSection()
1243
8ec66df6d4cf
		self.assertEquals(type(sect.sizegroup), gtk.SizeGroup)
1244
8ec66df6d4cf
		self.assertEquals(sect.sizegroup.get_mode(), gtk.SIZE_GROUP_HORIZONTAL)
1245
8ec66df6d4cf
1246
8ec66df6d4cf
1247
8ec66df6d4cf
	def test_subclass(self):
1248
8ec66df6d4cf
		"InputSection is subclass of gtk.VBox"
1249
8ec66df6d4cf
1250
8ec66df6d4cf
		self.assertEquals(isinstance(ui.InputSection(), gtk.VBox), True)
1251
8ec66df6d4cf
1252
8ec66df6d4cf
1253
8ec66df6d4cf
	def test_title(self):
1254
8ec66df6d4cf
		"InputSection creates title label correctly"
1255
8ec66df6d4cf
1256
8ec66df6d4cf
		sect = ui.InputSection("Title")
1257
8ec66df6d4cf
		self.assertEquals(len(sect.get_children()), 1)
1258
8ec66df6d4cf
		self.assertEquals(type(sect.get_children()[0]), ui.Label)
1259
8ec66df6d4cf
		self.assertEquals(sect.get_children()[0].get_text(), "Title")
1260
8ec66df6d4cf
1261
8ec66df6d4cf
1262
8ec66df6d4cf
1263
8ec66df6d4cf
class InputSection_append_widget(unittest.TestCase):
1264
8ec66df6d4cf
	"InputSection.append_widget()"
1265
8ec66df6d4cf
1266
8ec66df6d4cf
	def test_hig(self):
1267
8ec66df6d4cf
		"InputSection.append_widget() conforms to the HIG"
1268
8ec66df6d4cf
1269
8ec66df6d4cf
		sect = ui.InputSection()
1270
8ec66df6d4cf
		sect.append_widget("Test", ui.Entry())
1271
8ec66df6d4cf
1272
8ec66df6d4cf
		row = sect.get_children()[0]
1273
8ec66df6d4cf
		self.assertEquals(row.get_spacing(), 12)
1274
8ec66df6d4cf
		self.assertEquals(row.get_children()[0].get_text(), "Test:")
1275
8ec66df6d4cf
1276
8ec66df6d4cf
1277
8ec66df6d4cf
	def test_label_none(self):
1278
8ec66df6d4cf
		"InputSection.append_widget() expands widget to max width on None label"
1279
8ec66df6d4cf
1280
8ec66df6d4cf
		sect = ui.InputSection()
1281
8ec66df6d4cf
		entry = ui.Entry()
1282
8ec66df6d4cf
		sect.append_widget(None, entry)
1283
8ec66df6d4cf
1284
8ec66df6d4cf
		row = sect.get_children()[0]
1285
8ec66df6d4cf
		self.assertEquals(len(row.get_children()), 1)
1286
8ec66df6d4cf
		self.assertEquals(row.get_children()[0] is entry, True)
1287
8ec66df6d4cf
1288
8ec66df6d4cf
1289
8ec66df6d4cf
	def test_pair(self):
1290
8ec66df6d4cf
		"InputSection.append_widget() generates a label/widget pair"
1291
8ec66df6d4cf
1292
8ec66df6d4cf
		sect = ui.InputSection()
1293
8ec66df6d4cf
		entry = ui.Entry()
1294
8ec66df6d4cf
		sect.append_widget("Test", entry)
1295
8ec66df6d4cf
1296
8ec66df6d4cf
		row = sect.get_children()[0]
1297
8ec66df6d4cf
		self.assertEquals(type(row.get_children()[0]), ui.Label)
1298
8ec66df6d4cf
		self.assertEquals(row.get_children()[0].get_text(), "Test:")
1299
8ec66df6d4cf
1300
8ec66df6d4cf
		self.assertEquals(row.get_children()[1] is entry, True)
1301
8ec66df6d4cf
1302
8ec66df6d4cf
1303
8ec66df6d4cf
1304
8ec66df6d4cf
class InputSection_clear(unittest.TestCase):
1305
8ec66df6d4cf
	"InputSection.clear()"
1306
8ec66df6d4cf
1307
8ec66df6d4cf
	def test_clear(self):
1308
8ec66df6d4cf
		"InputSection.clear() clears the section"
1309
8ec66df6d4cf
1310
8ec66df6d4cf
		sect = ui.InputSection()
1311
8ec66df6d4cf
		sect.append_widget("Test", ui.Entry())
1312
8ec66df6d4cf
		sect.append_widget("Test2", ui.Entry())
1313
8ec66df6d4cf
		self.assertEquals(len(sect.get_children()), 2)
1314
8ec66df6d4cf
1315
8ec66df6d4cf
		sect.clear()
1316
8ec66df6d4cf
		self.assertEquals(len(sect.get_children()), 0)
1317
8ec66df6d4cf
1318
8ec66df6d4cf
1319
8ec66df6d4cf
	def test_title_description(self):
1320
8ec66df6d4cf
		"InputSection.clear() preserves title and description labels"
1321
8ec66df6d4cf
1322
8ec66df6d4cf
		sect = ui.InputSection("Title", "Description")
1323
8ec66df6d4cf
		sect.append_widget("Test", ui.Entry())
1324
8ec66df6d4cf
		sect.append_widget("Test2", ui.Entry())
1325
8ec66df6d4cf
		self.assertEquals(len(sect.get_children()), 4)
1326
8ec66df6d4cf
1327
8ec66df6d4cf
		sect.clear()
1328
8ec66df6d4cf
		self.assertEquals(len(sect.get_children()), 2)
1329
8ec66df6d4cf
		self.assertEquals(sect.get_children()[0].get_text(), "Title")
1330
8ec66df6d4cf
		self.assertEquals(sect.get_children()[1].get_text(), "Description")
1331
8ec66df6d4cf
1332
8ec66df6d4cf
1333
8ec66df6d4cf
1334
1b3159db8a74
class Label(unittest.TestCase):
1335
1b3159db8a74
	"Label"
1336
1b3159db8a74
1337
1b3159db8a74
	def test_subclass(self):
1338
1b3159db8a74
		"Label is subclass of gtk.Label"
1339
1b3159db8a74
1340
1b3159db8a74
		self.assertEquals(isinstance(ui.Label(), gtk.Label), True)
1341
1b3159db8a74
1342
1b3159db8a74
1343
1b3159db8a74
	def test_justify(self):
1344
1b3159db8a74
		"Label sets justify from args"
1345
1b3159db8a74
1346
1b3159db8a74
		self.assertEquals(ui.Label("Test", gtk.JUSTIFY_LEFT).get_justify(), gtk.JUSTIFY_LEFT)
1347
1b3159db8a74
		self.assertEquals(ui.Label("Test", gtk.JUSTIFY_CENTER).get_justify(), gtk.JUSTIFY_CENTER)
1348
1b3159db8a74
		self.assertEquals(ui.Label("Test", gtk.JUSTIFY_RIGHT).get_justify(), gtk.JUSTIFY_RIGHT)
1349
1b3159db8a74
1350
1b3159db8a74
1351
1b3159db8a74
	def test_justify_alignment(self):
1352
1b3159db8a74
		"Label justify argument affects label alignment as well"
1353
1b3159db8a74
1354
1b3159db8a74
		self.assertEquals(ui.Label("Test", gtk.JUSTIFY_LEFT).get_alignment()[0], 0)
1355
1b3159db8a74
		self.assertEquals(ui.Label("Test", gtk.JUSTIFY_CENTER).get_alignment()[0], 0.5)
1356
1b3159db8a74
		self.assertEquals(ui.Label("Test", gtk.JUSTIFY_RIGHT).get_alignment()[0], 1)
1357
1b3159db8a74
1358
1b3159db8a74
1359
1b3159db8a74
	def test_line_wrap(self):
1360
1b3159db8a74
		"Label enables line-wrapping by default"
1361
1b3159db8a74
1362
1b3159db8a74
		self.assertEquals(ui.Label().get_line_wrap(), True)
1363
1b3159db8a74
1364
1b3159db8a74
1365
1b3159db8a74
	def test_markup(self):
1366
1b3159db8a74
		"Label enables markup by default"
1367
1b3159db8a74
1368
1b3159db8a74
		self.assertEquals(ui.Label().get_use_markup(), True)
1369
1b3159db8a74
		self.assertEquals(ui.Label("<span weight=\"bold\">Test</span>").get_text(), "Test")
1370
1b3159db8a74
1371
1b3159db8a74
1372
1b3159db8a74
	def test_text(self):
1373
1b3159db8a74
		"Label sets text correctly from args"
1374
1b3159db8a74
1375
1b3159db8a74
		self.assertEquals(ui.Label("Test").get_text(), "Test")
1376
1b3159db8a74
1377
1b3159db8a74
1378
1b3159db8a74
	def test_text_none(self):
1379
1b3159db8a74
		"Label has no text when given None as text"
1380
1b3159db8a74
1381
1b3159db8a74
		self.assertEquals(ui.Label(None).get_text(), "")
1382
1b3159db8a74
1383
1b3159db8a74
1384
1b3159db8a74
1385
1b3159db8a74
class Label_set_text(unittest.TestCase):
1386
1b3159db8a74
	"Label.set_text()"
1387
1b3159db8a74
1388
1b3159db8a74
	def test_markup(self):
1389
1b3159db8a74
		"Label.set_text() handles markup"
1390
1b3159db8a74
1391
1b3159db8a74
		label = ui.Label()
1392
1b3159db8a74
		label.set_text("<span weight=\"bold\">test</span>")
1393
1b3159db8a74
		self.assertEquals(label.get_text(), "test")
1394
1b3159db8a74
1395
1b3159db8a74
1396
1b3159db8a74
	def test_none(self):
1397
1b3159db8a74
		"Label.set_text() clears label contents when given None"
1398
1b3159db8a74
1399
1b3159db8a74
		label = ui.Label("Test")
1400
1b3159db8a74
		label.set_text(None)
1401
1b3159db8a74
		self.assertEquals(label.get_text(), "")
1402
1b3159db8a74
1403
1b3159db8a74
1404
1b3159db8a74
	def test_text(self):
1405
1b3159db8a74
		"Label.set_text() sets text correctly"
1406
1b3159db8a74
1407
1b3159db8a74
		label = ui.Label("Test")
1408
1b3159db8a74
		label.set_text("test123")
1409
1b3159db8a74
		self.assertEquals(label.get_text(), "test123")
1410
1b3159db8a74
1411
1b3159db8a74
1412
1b3159db8a74
1413
8ec66df6d4cf
class Notebook(unittest.TestCase):
1414
8ec66df6d4cf
	"Notebook"
1415
8ec66df6d4cf
1416
8ec66df6d4cf
	def test_subclass(self):
1417
8ec66df6d4cf
		"Notebook is subclass of gtk.Notebook"
1418
8ec66df6d4cf
1419
8ec66df6d4cf
		self.assertEquals(isinstance(ui.Notebook(), gtk.Notebook), True)
1420
8ec66df6d4cf
1421
8ec66df6d4cf
1422
8ec66df6d4cf
1423
8ec66df6d4cf
class Notebook_create_page(unittest.TestCase):
1424
8ec66df6d4cf
	"Notebook.create_page()"
1425
8ec66df6d4cf
1426
8ec66df6d4cf
	def test_create(self):
1427
8ec66df6d4cf
		"Notebook.create_page() creates a notebook page"
1428
8ec66df6d4cf
1429
8ec66df6d4cf
		notebook = ui.Notebook()
1430
8ec66df6d4cf
		notebook.create_page("test1")
1431
8ec66df6d4cf
		notebook.create_page("test2")
1432
8ec66df6d4cf
1433
8ec66df6d4cf
		self.assertEquals(notebook.get_n_pages(), 2)
1434
8ec66df6d4cf
1435
8ec66df6d4cf
1436
8ec66df6d4cf
	def test_label(self):
1437
8ec66df6d4cf
		"Notebook.create_page() creates a tab label for the page"
1438
8ec66df6d4cf
1439
8ec66df6d4cf
		notebook = ui.Notebook()
1440
8ec66df6d4cf
		page = notebook.create_page("test")
1441
8ec66df6d4cf
		self.assertEquals(notebook.get_tab_label(page).get_text(), "test")
1442
8ec66df6d4cf
1443
8ec66df6d4cf
1444
8ec66df6d4cf
	def test_return(self):
1445
8ec66df6d4cf
		"Notebook.create_page() returns the created page"
1446
8ec66df6d4cf
1447
8ec66df6d4cf
		notebook = ui.Notebook()
1448
8ec66df6d4cf
		page = notebook.create_page("test")
1449
8ec66df6d4cf
1450
8ec66df6d4cf
		self.assertEquals(type(page), ui.NotebookPage)
1451
8ec66df6d4cf
1452
8ec66df6d4cf
1453
8ec66df6d4cf
1454
8ec66df6d4cf
class NotebookPage(unittest.TestCase):
1455
8ec66df6d4cf
	"NotebookPage"
1456
8ec66df6d4cf
1457
8ec66df6d4cf
	def test_hig(self):
1458
8ec66df6d4cf
		"NotebookPage conforms to the HIG"
1459
8ec66df6d4cf
1460
8ec66df6d4cf
		page = ui.NotebookPage()
1461
8ec66df6d4cf
		self.assertEquals(page.get_spacing(), 18)
1462
8ec66df6d4cf
		self.assertEquals(page.get_border_width(), 12)
1463
8ec66df6d4cf
1464
8ec66df6d4cf
1465
8ec66df6d4cf
	def test_subclass(self):
1466
8ec66df6d4cf
		"NotebookPage is subclass of ui.VBox"
1467
8ec66df6d4cf
1468
8ec66df6d4cf
		self.assertEquals(isinstance(ui.NotebookPage(), ui.VBox), True)
1469
8ec66df6d4cf
1470
8ec66df6d4cf
1471
8ec66df6d4cf
1472
8ec66df6d4cf
class NotebookPage_add_section(unittest.TestCase):
1473
8ec66df6d4cf
	"NotebookPage.add_section()"
1474
8ec66df6d4cf
1475
8ec66df6d4cf
	def test_create(self):
1476
8ec66df6d4cf
		"NotebookPage.add_section() adds an InputSection"
1477
8ec66df6d4cf
1478
8ec66df6d4cf
		page = ui.NotebookPage()
1479
8ec66df6d4cf
		page.add_section("Test")
1480
8ec66df6d4cf
1481
8ec66df6d4cf
		self.assertEquals(len(page.get_children()), 1)
1482
8ec66df6d4cf
		self.assertEquals(type(page.get_children()[0]), ui.InputSection)
1483
8ec66df6d4cf
1484
8ec66df6d4cf
1485
8ec66df6d4cf
	def test_return(self):
1486
8ec66df6d4cf
		"NotebookPage.add_section() returns InputSection"
1487
8ec66df6d4cf
1488
8ec66df6d4cf
		page = ui.NotebookPage()
1489
8ec66df6d4cf
		section = page.add_section("Test")
1490
8ec66df6d4cf
1491
8ec66df6d4cf
		self.assertEquals(type(section), ui.InputSection)
1492
8ec66df6d4cf
		self.assertEquals(section is page.get_children()[0], True)
1493
8ec66df6d4cf
1494
8ec66df6d4cf
1495
8ec66df6d4cf
	def test_sizegroup(self):
1496
8ec66df6d4cf
		"NotebookPage.add_section() uses common sizegroup for all sections"
1497
8ec66df6d4cf
1498
8ec66df6d4cf
		page = ui.NotebookPage()
1499
8ec66df6d4cf
		sect1 = page.add_section("Test1")
1500
8ec66df6d4cf
		sect2 = page.add_section("Test2")
1501
8ec66df6d4cf
1502
8ec66df6d4cf
		self.assertEquals(sect1.sizegroup is page.sizegroup, True)
1503
8ec66df6d4cf
		self.assertEquals(sect2.sizegroup is page.sizegroup, True)
1504
8ec66df6d4cf
1505
8ec66df6d4cf
1506
8ec66df6d4cf
1507
9b26b6070e40
class PasswordEntry(unittest.TestCase):
1508
9b26b6070e40
	"PasswordEntry"
1509
9b26b6070e40
1510
9b26b6070e40
	def test_config(self):
1511
9b26b6070e40
		"PasswordEntry sets visibility based on config value"
1512
9b26b6070e40
1513
9b26b6070e40
		c = config.Config()
1514
9b26b6070e40
		c.set("view/passwords", False)
1515
9b26b6070e40
1516
9b26b6070e40
		e = ui.PasswordEntry(c)
1517
9b26b6070e40
		gtk_run()
1518
9b26b6070e40
		self.assertEquals(e.get_visibility(), False)
1519
9b26b6070e40
1520
9b26b6070e40
		c.set("view/passwords", True)
1521
9b26b6070e40
		gtk_run()
1522
9b26b6070e40
		self.assertEquals(e.get_visibility(), True)
1523
9b26b6070e40
1524
9b26b6070e40
1525
9b26b6070e40
	def test_config_none(self):
1526
9b26b6070e40
		"PasswordEntry accepts None as config"
1527
9b26b6070e40
1528
9b26b6070e40
		ui.PasswordEntry(None)
1529
9b26b6070e40
1530
9b26b6070e40
1531
9b26b6070e40
	def test_password(self):
1532
9b26b6070e40
		"PasswordEntry takes password as arg"
1533
9b26b6070e40
1534
9b26b6070e40
		self.assertEquals(ui.PasswordEntry(None, "test123").get_text(), "test123")
1535
9b26b6070e40
1536
9b26b6070e40
1537
9b26b6070e40
	def test_subclass(self):
1538
9b26b6070e40
		"PasswordEntry is subclass of Entry"
1539
9b26b6070e40
1540
9b26b6070e40
		self.assertEquals(isinstance(ui.PasswordEntry(), ui.Entry), True)
1541
9b26b6070e40
1542
9b26b6070e40
1543
9b26b6070e40
1544
9b26b6070e40
class PasswordEntryGenerate(unittest.TestCase):
1545
9b26b6070e40
	"PasswordEntryGenerate"
1546
9b26b6070e40
1547
9b26b6070e40
	def test_button(self):
1548
9b26b6070e40
		"PasswordEntryGenerate has button attribute"
1549
9b26b6070e40
1550
9b26b6070e40
		self.assertEquals(isinstance(ui.PasswordEntryGenerate(config.Config()).button, ui.Button), True)
1551
9b26b6070e40
1552
9b26b6070e40
1553
9b26b6070e40
	def test_entry(self):
1554
9b26b6070e40
		"PasswordEntryGenerate has child PasswordEntry as entry attribute"
1555
9b26b6070e40
1556
9b26b6070e40
		self.assertEquals(isinstance(ui.PasswordEntryGenerate(config.Config()).entry, ui.PasswordEntry), True)
1557
9b26b6070e40
1558
9b26b6070e40
1559
9b26b6070e40
	def test_generate(self):
1560
9b26b6070e40
		"PasswordEntryGenerate generates password on button click"
1561
9b26b6070e40
1562
9b26b6070e40
		e = ui.PasswordEntryGenerate(config.Config())
1563
9b26b6070e40
		e.button.clicked()
1564
9b26b6070e40
		gtk_run()
1565
9b26b6070e40
		self.assertNotEqual(e.entry.get_text(), "")
1566
9b26b6070e40
1567
9b26b6070e40
1568
9b26b6070e40
	def test_layout(self):
1569
9b26b6070e40
		"PasswordEntryGenerate has entry and button as children"
1570
9b26b6070e40
1571
9b26b6070e40
		e = ui.PasswordEntryGenerate(config.Config())
1572
9b26b6070e40
		self.assertEquals(len(e.get_children()), 2)
1573
9b26b6070e40
		self.assertEquals(e.get_children()[0] is e.entry, True)
1574
9b26b6070e40
		self.assertEquals(e.get_children()[1] is e.button, True)
1575
9b26b6070e40
1576
9b26b6070e40
1577
9b26b6070e40
	def test_password(self):
1578
9b26b6070e40
		"PasswordEntryGenerate takes password as arg"
1579
9b26b6070e40
1580
9b26b6070e40
		self.assertEquals(ui.PasswordEntryGenerate(config.Config(), "test123").entry.get_text(), "test123")
1581
9b26b6070e40
1582
9b26b6070e40
1583
9b26b6070e40
1584
9b26b6070e40
class PasswordEntryGenerate_generate(unittest.TestCase):
1585
9b26b6070e40
	"PasswordEntryGenerate.generate()"
1586
9b26b6070e40
1587
9b26b6070e40
	def test_generate(self):
1588
9b26b6070e40
		"PasswordEntryGenerate.generates() generates password in entry"
1589
9b26b6070e40
1590
9b26b6070e40
		e = ui.PasswordEntryGenerate(config.Config())
1591
9b26b6070e40
		e.generate()
1592
9b26b6070e40
		self.assertNotEqual(e.entry.get_text(), "")
1593
9b26b6070e40
1594
9b26b6070e40
1595
9b26b6070e40
1596
9b26b6070e40
class PasswordEntryGenerate_get_text(unittest.TestCase):
1597
9b26b6070e40
	"PasswordEntryGenerate.get_text()"
1598
9b26b6070e40
1599
9b26b6070e40
	def test_text(self):
1600
9b26b6070e40
		"PasswordEntryGenerate.get_text() returns entry contents"
1601
9b26b6070e40
1602
9b26b6070e40
		self.assertEquals(ui.PasswordEntryGenerate(config.Config(), "test123").get_text(), "test123")
1603
9b26b6070e40
1604
9b26b6070e40
1605
9b26b6070e40
1606
9b26b6070e40
class PasswordEntryGenerate_set_text(unittest.TestCase):
1607
9b26b6070e40
	"PasswordEntryGenerate.set_text()"
1608
9b26b6070e40
1609
9b26b6070e40
	def test_text(self):
1610
9b26b6070e40
		"PasswordEntryGenerate.set_text() sets entry contents"
1611
9b26b6070e40
1612
9b26b6070e40
		e = ui.PasswordEntryGenerate(config.Config())
1613
9b26b6070e40
		e.set_text("test123")
1614
9b26b6070e40
		self.assertEquals(e.get_text(), "test123")
1615
9b26b6070e40
1616
9b26b6070e40
1617
9b26b6070e40
1618
1b3159db8a74
class PasswordLabel(unittest.TestCase):
1619
1b3159db8a74
	"PasswordLabel"
1620
1b3159db8a74
1621
1b3159db8a74
	def test_config(self):
1622
1b3159db8a74
		"PasswordLabel follows the view/passwords setting"
1623
1b3159db8a74
1624
1b3159db8a74
		c = config.Config()
1625
1b3159db8a74
		c.set("view/passwords", True)
1626
9b26b6070e40
		gtk_run()
1627
1b3159db8a74
1628
1b3159db8a74
		label = ui.PasswordLabel("Test123", c)
1629
1b3159db8a74
		self.assertEquals(label.get_text(), "Test123")
1630
1b3159db8a74
1631
1b3159db8a74
		c.set("view/passwords", False)
1632
9b26b6070e40
		gtk_run()
1633
1b3159db8a74
		self.assertEquals(label.get_text(), "******")
1634
1b3159db8a74
1635
1b3159db8a74
		keep_timeout = False
1636
9b26b6070e40
		gtk_run()
1637
1b3159db8a74
1638
1b3159db8a74
1639
1b3159db8a74
	def test_password(self):
1640
1b3159db8a74
		"PasswordLabel sets password from password arg"
1641
1b3159db8a74
1642
1b3159db8a74
		label = ui.PasswordLabel("test123")
1643
1b3159db8a74
		self.assertEquals(label.get_text(), "test123")
1644
1b3159db8a74
		self.assertEquals(label.password, "test123")
1645
1b3159db8a74
1646
1b3159db8a74
1647
1b3159db8a74
	def test_selectable(self):
1648
1b3159db8a74
		"PasswordLabel has selectable text"
1649
1b3159db8a74
1650
1b3159db8a74
		self.assertEquals(ui.PasswordLabel("test").get_selectable(), True)
1651
1b3159db8a74
1652
1b3159db8a74
1653
1b3159db8a74
	def test_subclass(self):
1654
1b3159db8a74
		"PasswordLabel is subclass of Label"
1655
1b3159db8a74
1656
1b3159db8a74
		self.assertEquals(isinstance(ui.PasswordLabel(), ui.Label), True)
1657
1b3159db8a74
1658
1b3159db8a74
1659
1b3159db8a74
1660
1b3159db8a74
class PasswordLabel_show_password(unittest.TestCase):
1661
1b3159db8a74
	"PasswordLabel.show_password()"
1662
1b3159db8a74
1663
1b3159db8a74
	def test_show(self):
1664
1b3159db8a74
		"PasswordLabel.show_password() works as expected"
1665
1b3159db8a74
1666
1b3159db8a74
		label = ui.PasswordLabel("test123")
1667
1b3159db8a74
1668
1b3159db8a74
		label.show_password(True)
1669
1b3159db8a74
		self.assertEquals(label.get_text(), "test123")
1670
1b3159db8a74
1671
1b3159db8a74
		label.show_password(False)
1672
1b3159db8a74
		self.assertEquals(label.get_text(), "******")
1673
1b3159db8a74
1674
1b3159db8a74
1675
1b3159db8a74
1676
8ec66df6d4cf
class ScrolledWindow(unittest.TestCase):
1677
8ec66df6d4cf
	"ScrolledWindow"
1678
8ec66df6d4cf
1679
8ec66df6d4cf
	def test_content(self):
1680
8ec66df6d4cf
		"ScrolledWindow sets contents from argument"
1681
8ec66df6d4cf
1682
8ec66df6d4cf
		tree = ui.TreeView(gtk.TreeStore(str))
1683
8ec66df6d4cf
		s = ui.ScrolledWindow(tree)
1684
8ec66df6d4cf
1685
8ec66df6d4cf
		self.assertEquals(s.get_child() is tree, True)
1686
8ec66df6d4cf
1687
8ec66df6d4cf
1688
8ec66df6d4cf
	def test_policy(self):
1689
8ec66df6d4cf
		"ScrolledWindow uses automatic scrollbar display by default"
1690
8ec66df6d4cf
1691
8ec66df6d4cf
		s = ui.ScrolledWindow()
1692
8ec66df6d4cf
		self.assertEquals(s.get_policy(), ( gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC ))
1693
8ec66df6d4cf
1694
8ec66df6d4cf
1695
8ec66df6d4cf
	def test_subclass(self):
1696
8ec66df6d4cf
		"ScrolledWindow is subclass of gtk.ScrolledWindow"
1697
8ec66df6d4cf
1698
8ec66df6d4cf
		self.assertEquals(isinstance(ui.ScrolledWindow(), gtk.ScrolledWindow), True)
1699
8ec66df6d4cf
1700
8ec66df6d4cf
1701
8ec66df6d4cf
1702
e0a14b958359
class Searchbar(unittest.TestCase):
1703
e0a14b958359
	"Searchbar"
1704
e0a14b958359
1705
e0a14b958359
	def test_subclass(self):
1706
e0a14b958359
		"Searchbar is subclass of gtk.Toolbar"
1707
e0a14b958359
1708
e0a14b958359
		self.assertEquals(isinstance(ui.Searchbar(), gtk.Toolbar), True)
1709
e0a14b958359
1710
e0a14b958359
1711
e0a14b958359
1712
9b26b6070e40
class SpinEntry(unittest.TestCase):
1713
9b26b6070e40
	"SpinEntry"
1714
9b26b6070e40
1715
9b26b6070e40
	def test_increments(self):
1716
9b26b6070e40
		"SpinEntry uses 1 and 5 as increments"
1717
9b26b6070e40
1718
9b26b6070e40
		self.assertEquals(ui.SpinEntry().get_increments(), (1, 5))
1719
9b26b6070e40
1720
9b26b6070e40
1721
9b26b6070e40
	def test_numeric(self):
1722
9b26b6070e40
		"SpinEntry is numeric only"
1723
9b26b6070e40
1724
9b26b6070e40
		self.assertEquals(ui.SpinEntry().get_numeric(), True)
1725
9b26b6070e40
1726
9b26b6070e40
1727
9b26b6070e40
	def test_subclass(self):
1728
9b26b6070e40
		"SpinEntry is subclass of gtk.SpinButton"
1729
9b26b6070e40
1730
9b26b6070e40
		self.assertEquals(isinstance(ui.SpinEntry(), gtk.SpinButton), True)
1731
9b26b6070e40
1732
9b26b6070e40
1733
9b26b6070e40
1734
86bdcc2b8f52
class Statusbar(unittest.TestCase):
1735
86bdcc2b8f52
	"Statusbar"
1736
86bdcc2b8f52
1737
86bdcc2b8f52
	def test_subclass(self):
1738
86bdcc2b8f52
		"Statusbar is subclasss of gtk.Statusbar"
1739
86bdcc2b8f52
1740
86bdcc2b8f52
		self.assertEquals(isinstance(ui.Statusbar(), gtk.Statusbar), True)
1741
86bdcc2b8f52
1742
86bdcc2b8f52
1743
86bdcc2b8f52
1744
86bdcc2b8f52
class Statusbar_clear(unittest.TestCase):
1745
86bdcc2b8f52
	"Statusbar.clear()"
1746
86bdcc2b8f52
1747
86bdcc2b8f52
	def test_clear(self):
1748
86bdcc2b8f52
		"Statusbar.clear() clears the statusbar"
1749
86bdcc2b8f52
1750
86bdcc2b8f52
		s = ui.Statusbar()
1751
86bdcc2b8f52
		s.set_status("test123")
1752
86bdcc2b8f52
		s.set_status("test")
1753
86bdcc2b8f52
		s.clear()
1754
86bdcc2b8f52
		self.assertEquals(s.get_children()[0].get_children()[0].get_text(), "")
1755
86bdcc2b8f52
1756
86bdcc2b8f52
1757
86bdcc2b8f52
1758
86bdcc2b8f52
class Statusbar_set_text(unittest.TestCase):
1759
86bdcc2b8f52
	"Statusbar.set_text()"
1760
86bdcc2b8f52
1761
86bdcc2b8f52
	def test_text(self):
1762
86bdcc2b8f52
		"Statusbar.set_text() sets the statusbar text"
1763
86bdcc2b8f52
1764
86bdcc2b8f52
		s = ui.Statusbar()
1765
86bdcc2b8f52
		s.set_status("test123")
1766
86bdcc2b8f52
		self.assertEquals(s.get_children()[0].get_children()[0].get_text(), "test123")
1767
86bdcc2b8f52
1768
86bdcc2b8f52
1769
86bdcc2b8f52
1770
1b3159db8a74
class TextView(unittest.TestCase):
1771
1b3159db8a74
	"TextView"
1772
1b3159db8a74
1773
1b3159db8a74
	def test_buffer(self):
1774
1b3159db8a74
		"TextView takes buffer as argument"
1775
1b3159db8a74
1776
1b3159db8a74
		buffer = gtk.TextBuffer()
1777
1b3159db8a74
		buffer.set_text("test123")
1778
1b3159db8a74
		self.assertEquals(ui.TextView(buffer).get_buffer() is buffer, True)
1779
1b3159db8a74
1780
1b3159db8a74
1781
1b3159db8a74
	def test_cursor(self):
1782
1b3159db8a74
		"TextView has hidden cursor by default"
1783
1b3159db8a74
1784
1b3159db8a74
		self.assertEquals(ui.TextView().get_cursor_visible(), False)
1785
1b3159db8a74
1786
1b3159db8a74
1787
1b3159db8a74
	def test_editable(self):
1788
1b3159db8a74
		"TextView is not editable by default"
1789
1b3159db8a74
1790
1b3159db8a74
		self.assertEquals(ui.TextView().get_editable(), False)
1791
1b3159db8a74
1792
1b3159db8a74
1793
1b3159db8a74
	def test_font(self):
1794
1b3159db8a74
		"TextView uses Monospace font by default"
1795
1b3159db8a74
1796
1b3159db8a74
		# TODO fix this
1797
1b3159db8a74
		#self.assertEquals(ui.TextView().get_pango_context().get_font_description().get_family(), "Monospace")
1798
1b3159db8a74
		pass
1799
1b3159db8a74
1800
1b3159db8a74
1801
1b3159db8a74
	def test_subclass(self):
1802
1b3159db8a74
		"TextView is subclass of gtk.TextView"
1803
1b3159db8a74
1804
1b3159db8a74
		self.assertEquals(isinstance(ui.TextView(), gtk.TextView), True)
1805
1b3159db8a74
1806
1b3159db8a74
1807
1b3159db8a74
	def test_text(self):
1808
1b3159db8a74
		"TextView takes text contents as argument"
1809
1b3159db8a74
1810
1b3159db8a74
		t = ui.TextView(None, "test123")
1811
1b3159db8a74
		b = t.get_buffer()
1812
1b3159db8a74
		self.assertEquals(b.get_text(b.get_start_iter(), b.get_end_iter()), "test123")
1813
1b3159db8a74
1814
1b3159db8a74
1815
1b3159db8a74
	def test_wrap(self):
1816
1b3159db8a74
		"TextView doesn't wrap by default"
1817
1b3159db8a74
1818
1b3159db8a74
		self.assertEquals(ui.TextView().get_wrap_mode(), gtk.WRAP_NONE)
1819
1b3159db8a74
1820
1b3159db8a74
1821
1b3159db8a74
1822
e6acb28fe209
# TODO fix tests for internal callbacks (keyboard handling, drag/drop etc)
1823
e6acb28fe209
class TreeView(unittest.TestCase):
1824
e6acb28fe209
	"TreeView"
1825
e6acb28fe209
1826
e6acb28fe209
	def test_headers_visible(self):
1827
e6acb28fe209
		"TreeView disables tree headers by default"
1828
e6acb28fe209
1829
e6acb28fe209
		self.assertEquals(ui.TreeView(data.EntryStore()).get_headers_visible(), False)
1830
e6acb28fe209
1831
e6acb28fe209
1832
e6acb28fe209
	def test_selection(self):
1833
e6acb28fe209
		"TreeView makes selection available through selection attribute"
1834
e6acb28fe209
1835
e6acb28fe209
		t = ui.TreeView(data.EntryStore())
1836
e6acb28fe209
		self.assertEquals(t.selection is t.get_selection(), True)
1837
e6acb28fe209
1838
e6acb28fe209
1839
e6acb28fe209
	def test_subclass(self):
1840
e6acb28fe209
		"TreeView is subclass of gtk.TreeView"
1841
e6acb28fe209
1842
e6acb28fe209
		self.assertEquals(isinstance(ui.TreeView(data.EntryStore()), gtk.TreeView), True)
1843
e6acb28fe209
1844
e6acb28fe209
1845
e6acb28fe209
1846
e6acb28fe209
class TreeView_collapse_row(unittest.TestCase):
1847
e6acb28fe209
	"TreeView.collapse_row()"
1848
e6acb28fe209
1849
e6acb28fe209
	def test_collapse(self):
1850
e6acb28fe209
		"TreeView.collapse_row() collapses row"
1851
e6acb28fe209
1852
e6acb28fe209
		e = data.EntryStore()
1853
e6acb28fe209
		fiter = e.add_entry(entry.FolderEntry())
1854
e6acb28fe209
		iter = e.add_entry(entry.GenericEntry(), fiter)
1855
e6acb28fe209
1856
e6acb28fe209
		t = ui.TreeView(e)
1857
e6acb28fe209
		t.expand_row(fiter)
1858
e6acb28fe209
		t.collapse_row(fiter)
1859
e6acb28fe209
1860
e6acb28fe209
		self.assertEquals(t.row_expanded(( 0, )), False)
1861
e6acb28fe209
1862
e6acb28fe209
1863
e6acb28fe209
	def test_iter(self):
1864
e6acb28fe209
		"TreeView.collapse_row() takes iter instead of path"
1865
e6acb28fe209
1866
e6acb28fe209
		e = data.EntryStore()
1867
e6acb28fe209
		iter = e.add_entry(entry.GenericEntry())
1868
e6acb28fe209
1869
e6acb28fe209
		t = ui.TreeView(e)
1870
e6acb28fe209
		t.collapse_row(iter)
1871
e6acb28fe209
		self.assertRaises(TypeError, t.collapse_row, ( 0, ))
1872
e6acb28fe209
1873
e6acb28fe209
1874
e6acb28fe209
1875
86bdcc2b8f52
class TreeView_expand_row(unittest.TestCase):
1876
86bdcc2b8f52
	"TreeView.expand_row()"
1877
86bdcc2b8f52
1878
86bdcc2b8f52
	def test_expand(self):
1879
86bdcc2b8f52
		"TreeView.expand_row() expands row"
1880
86bdcc2b8f52
1881
86bdcc2b8f52
		e = data.EntryStore()
1882
86bdcc2b8f52
		fiter = e.add_entry(entry.FolderEntry())
1883
86bdcc2b8f52
		iter = e.add_entry(entry.GenericEntry(), fiter)
1884
86bdcc2b8f52
1885
86bdcc2b8f52
		t = ui.TreeView(e)
1886
86bdcc2b8f52
		t.expand_row(fiter)
1887
86bdcc2b8f52
1888
86bdcc2b8f52
		self.assertEquals(t.row_expanded(( 0, )), True)
1889
86bdcc2b8f52
1890
86bdcc2b8f52
1891
86bdcc2b8f52
	def test_iter(self):
1892
86bdcc2b8f52
		"TreeView.expand_row() takes iter instead of path"
1893
86bdcc2b8f52
1894
86bdcc2b8f52
		e = data.EntryStore()
1895
86bdcc2b8f52
		iter = e.add_entry(entry.GenericEntry())
1896
86bdcc2b8f52
1897
86bdcc2b8f52
		t = ui.TreeView(e)
1898
86bdcc2b8f52
		t.expand_row(iter)
1899
86bdcc2b8f52
		self.assertRaises(TypeError, t.collapse_row, ( 0, ))
1900
86bdcc2b8f52
1901
86bdcc2b8f52
1902
86bdcc2b8f52
1903
86bdcc2b8f52
class TreeView_expand_to_iter(unittest.TestCase):
1904
86bdcc2b8f52
	"TreeView.expand_to_iter()"
1905
86bdcc2b8f52
1906
86bdcc2b8f52
	def test_ancestors(self):
1907
86bdcc2b8f52
		"TreeView.expand_to_iter() expands all ancestor"
1908
86bdcc2b8f52
1909
86bdcc2b8f52
		e = data.EntryStore()
1910
86bdcc2b8f52
		piter1 = e.add_entry(entry.FolderEntry())
1911
86bdcc2b8f52
		piter2 = e.add_entry(entry.FolderEntry(), piter1)
1912
86bdcc2b8f52
		piter3 = e.add_entry(entry.FolderEntry(), piter2)
1913
86bdcc2b8f52
		piter4 = e.add_entry(entry.FolderEntry(), piter3)
1914
86bdcc2b8f52
		iter = e.add_entry(entry.GenericEntry(), piter4)
1915
86bdcc2b8f52
1916
86bdcc2b8f52
		t = ui.TreeView(e)
1917
86bdcc2b8f52
		t.expand_to_iter(iter)
1918
86bdcc2b8f52
1919
86bdcc2b8f52
		for i in ( piter1, piter2, piter3, piter4 ):
1920
86bdcc2b8f52
			self.assertEquals(t.row_expanded(e.get_path(i)), True)
1921
86bdcc2b8f52
1922
86bdcc2b8f52
	def test_no_expand(self):
1923
86bdcc2b8f52
		"TreeView.expand_to_iter() doesn't expand the given iter"
1924
86bdcc2b8f52
1925
86bdcc2b8f52
		e = data.EntryStore()
1926
86bdcc2b8f52
		piter1 = e.add_entry(entry.FolderEntry())
1927
86bdcc2b8f52
		piter2 = e.add_entry(entry.FolderEntry(), piter1)
1928
86bdcc2b8f52
		iter = e.add_entry(entry.GenericEntry(), piter2)
1929
86bdcc2b8f52
1930
86bdcc2b8f52
		t = ui.TreeView(e)
1931
86bdcc2b8f52
		t.expand_to_iter(piter2)
1932
86bdcc2b8f52
1933
86bdcc2b8f52
		self.assertEquals(t.row_expanded(e.get_path(piter2)), False)
1934
86bdcc2b8f52
1935
86bdcc2b8f52
1936
86bdcc2b8f52
1937
86bdcc2b8f52
class TreeView_get_active(unittest.TestCase):
1938
86bdcc2b8f52
	"TreeView.get_active()"
1939
86bdcc2b8f52
1940
86bdcc2b8f52
	def test_cursor(self):
1941
86bdcc2b8f52
		"TreeView.get_active() returns the current cursor"
1942
86bdcc2b8f52
1943
86bdcc2b8f52
		e = data.EntryStore()
1944
86bdcc2b8f52
		iter1 = e.add_entry(entry.GenericEntry())
1945
86bdcc2b8f52
		iter2 = e.add_entry(entry.GenericEntry())
1946
86bdcc2b8f52
1947
86bdcc2b8f52
		t = ui.TreeView(e)
1948
86bdcc2b8f52
		t.set_cursor(e.get_path(iter2))
1949
86bdcc2b8f52
1950
86bdcc2b8f52
		self.assertEquals(e.get_path(t.get_active()), t.get_cursor()[0])
1951
86bdcc2b8f52
1952
86bdcc2b8f52
	def test_selected(self):
1953
86bdcc2b8f52
		"TreeView.get_active() only returns cursor if selected"
1954
86bdcc2b8f52
1955
86bdcc2b8f52
		e = data.EntryStore()
1956
86bdcc2b8f52
		iter1 = e.add_entry(entry.GenericEntry())
1957
86bdcc2b8f52
		iter2 = e.add_entry(entry.GenericEntry())
1958
86bdcc2b8f52
1959
86bdcc2b8f52
		t = ui.TreeView(e)
1960
86bdcc2b8f52
		t.set_cursor(e.get_path(iter2))
1961
86bdcc2b8f52
		t.selection.unselect_iter(iter2)
1962
86bdcc2b8f52
1963
86bdcc2b8f52
		self.assertEquals(t.get_active(), None)
1964
86bdcc2b8f52
1965
86bdcc2b8f52
1966
86bdcc2b8f52
class TreeView_get_selected(unittest.TestCase):
1967
86bdcc2b8f52
	"TreeView.get_selected()"
1968
86bdcc2b8f52
1969
86bdcc2b8f52
	def test_selected(self):
1970
86bdcc2b8f52
		"TreeView.get_selected() returns list of selected iters"
1971
86bdcc2b8f52
1972
86bdcc2b8f52
		e = data.EntryStore()
1973
86bdcc2b8f52
		iters = []
1974
86bdcc2b8f52
1975
86bdcc2b8f52
		iters.append(e.add_entry(entry.GenericEntry()))
1976
86bdcc2b8f52
		iters.append(e.add_entry(entry.GenericEntry()))
1977
86bdcc2b8f52
		iters.append(e.add_entry(entry.GenericEntry()))
1978
86bdcc2b8f52
		iters.append(e.add_entry(entry.GenericEntry()))
1979
86bdcc2b8f52
1980
86bdcc2b8f52
		t = ui.TreeView(e)
1981
86bdcc2b8f52
		t.selection.select_iter(iters[0])
1982
86bdcc2b8f52
		t.selection.select_iter(iters[2])
1983
86bdcc2b8f52
		t.selection.select_iter(iters[3])
1984
86bdcc2b8f52
1985
86bdcc2b8f52
		selected = t.get_selected()
1986
86bdcc2b8f52
1987
86bdcc2b8f52
		self.assertEquals(e.get_path(iters[0]), e.get_path(selected[0]))
1988
86bdcc2b8f52
		self.assertEquals(e.get_path(iters[2]), e.get_path(selected[1]))
1989
86bdcc2b8f52
		self.assertEquals(e.get_path(iters[3]), e.get_path(selected[2]))
1990
86bdcc2b8f52
1991
86bdcc2b8f52
1992
86bdcc2b8f52
1993
86bdcc2b8f52
class TreeView_select(unittest.TestCase):
1994
86bdcc2b8f52
	"TreeView.select()"
1995
86bdcc2b8f52
1996
86bdcc2b8f52
	def test_cursor(self):
1997
86bdcc2b8f52
		"TreeView.select() sets the cursor to the row"
1998
86bdcc2b8f52
1999
86bdcc2b8f52
		e = data.EntryStore()
2000
86bdcc2b8f52
		iter1 = e.add_entry(entry.GenericEntry())
2001
86bdcc2b8f52
		iter2 = e.add_entry(entry.GenericEntry())
2002
86bdcc2b8f52
2003
86bdcc2b8f52
		t = ui.TreeView(e)
2004
86bdcc2b8f52
		t.select(iter2)
2005
86bdcc2b8f52
2006
86bdcc2b8f52
		self.assertEquals(t.get_cursor()[0], e.get_path(iter2))
2007
86bdcc2b8f52
2008
86bdcc2b8f52
2009
86bdcc2b8f52
	def test_expand(self):
2010
86bdcc2b8f52
		"TreeView.select() expands all ancestors"
2011
86bdcc2b8f52
2012
86bdcc2b8f52
		e = data.EntryStore()
2013
86bdcc2b8f52
		fiter1 = e.add_entry(entry.FolderEntry())
2014
86bdcc2b8f52
		fiter2 = e.add_entry(entry.FolderEntry(), fiter1)
2015
86bdcc2b8f52
		iter = e.add_entry(entry.GenericEntry(), fiter2)
2016
86bdcc2b8f52
2017
86bdcc2b8f52
		t = ui.TreeView(e)
2018
86bdcc2b8f52
		t.select(iter)
2019
86bdcc2b8f52
2020
86bdcc2b8f52
		self.assertEquals(t.row_expanded(e.get_path(fiter1)), True)
2021
86bdcc2b8f52
		self.assertEquals(t.row_expanded(e.get_path(fiter2)), True)
2022
86bdcc2b8f52
2023
86bdcc2b8f52
2024
86bdcc2b8f52
	def test_select(self):
2025
86bdcc2b8f52
		"TreeView.select() unselects all on None"
2026
86bdcc2b8f52
2027
86bdcc2b8f52
		e = data.EntryStore()
2028
86bdcc2b8f52
		iter1 = e.add_entry(entry.GenericEntry())
2029
86bdcc2b8f52
		iter2 = e.add_entry(entry.GenericEntry())
2030
86bdcc2b8f52
2031
86bdcc2b8f52
		t = ui.TreeView(e)
2032
86bdcc2b8f52
		t.select(iter2)
2033
86bdcc2b8f52
2034
86bdcc2b8f52
		self.assertEquals(t.selection.iter_is_selected(iter1), False)
2035
86bdcc2b8f52
		self.assertEquals(t.selection.iter_is_selected(iter2), True)
2036
86bdcc2b8f52
2037
86bdcc2b8f52
		t.select(None)
2038
86bdcc2b8f52
		self.assertEquals(t.get_selected(), [])
2039
86bdcc2b8f52
		self.assertEquals(t.get_active(), None)
2040
86bdcc2b8f52
2041
86bdcc2b8f52
2042
86bdcc2b8f52
	def test_select(self):
2043
86bdcc2b8f52
		"TreeView.select() selects the row"
2044
86bdcc2b8f52
2045
86bdcc2b8f52
		e = data.EntryStore()
2046
86bdcc2b8f52
		iter1 = e.add_entry(entry.GenericEntry())
2047
86bdcc2b8f52
		iter2 = e.add_entry(entry.GenericEntry())
2048
86bdcc2b8f52
2049
86bdcc2b8f52
		t = ui.TreeView(e)
2050
86bdcc2b8f52
		t.select(iter2)
2051
86bdcc2b8f52
2052
86bdcc2b8f52
		self.assertEquals(t.selection.iter_is_selected(iter1), False)
2053
86bdcc2b8f52
		self.assertEquals(t.selection.iter_is_selected(iter2), True)
2054
86bdcc2b8f52
2055
86bdcc2b8f52
2056
86bdcc2b8f52
2057
86bdcc2b8f52
class TreeView_set_model(unittest.TestCase):
2058
86bdcc2b8f52
	"TreeView.set_model()"
2059
86bdcc2b8f52
2060
86bdcc2b8f52
	def test_attr(self):
2061
86bdcc2b8f52
		"TreeView.set_model() sets the .model attribute"
2062
86bdcc2b8f52
2063
86bdcc2b8f52
		e = data.EntryStore()
2064
86bdcc2b8f52
		t = ui.TreeView(e)
2065
86bdcc2b8f52
2066
86bdcc2b8f52
		e2 = data.EntryStore()
2067
86bdcc2b8f52
		t.set_model(e2)
2068
86bdcc2b8f52
2069
86bdcc2b8f52
		self.assertEquals(t.model is e, False)
2070
86bdcc2b8f52
		self.assertEquals(t.model is e2, True)
2071
86bdcc2b8f52
2072
86bdcc2b8f52
2073
86bdcc2b8f52
2074
86bdcc2b8f52
class TreeView_toggle_expanded(unittest.TestCase):
2075
86bdcc2b8f52
	"TreeView.toggle_expanded()"
2076
86bdcc2b8f52
2077
86bdcc2b8f52
	def test_collapse(self):
2078
86bdcc2b8f52
		"TreeView.toggle_expanded() collapses expanded rows"
2079
86bdcc2b8f52
2080
86bdcc2b8f52
		e = data.EntryStore()
2081
86bdcc2b8f52
		fiter = e.add_entry(entry.FolderEntry())
2082
86bdcc2b8f52
		iter = e.add_entry(entry.GenericEntry(), fiter)
2083
86bdcc2b8f52
2084
86bdcc2b8f52
		t = ui.TreeView(e)
2085
86bdcc2b8f52
		t.expand_row(fiter)
2086
86bdcc2b8f52
2087
86bdcc2b8f52
		self.assertEquals(t.row_expanded(e.get_path(fiter)), True)
2088
86bdcc2b8f52
		t.toggle_expanded(fiter)
2089
86bdcc2b8f52
		self.assertEquals(t.row_expanded(e.get_path(fiter)), False)
2090
86bdcc2b8f52
2091
86bdcc2b8f52
2092
86bdcc2b8f52
	def test_expand(self):
2093
86bdcc2b8f52
		"TreeView.toggle_expanded() expands collapsed rows"
2094
86bdcc2b8f52
2095
86bdcc2b8f52
		e = data.EntryStore()
2096
86bdcc2b8f52
		fiter = e.add_entry(entry.FolderEntry())
2097
86bdcc2b8f52
		iter = e.add_entry(entry.GenericEntry(), fiter)
2098
86bdcc2b8f52
2099
86bdcc2b8f52
		t = ui.TreeView(e)
2100
86bdcc2b8f52
2101
86bdcc2b8f52
		self.assertEquals(t.row_expanded(e.get_path(fiter)), False)
2102
86bdcc2b8f52
		t.toggle_expanded(fiter)
2103
86bdcc2b8f52
		self.assertEquals(t.row_expanded(e.get_path(fiter)), True)
2104
86bdcc2b8f52
2105
86bdcc2b8f52
2106
86bdcc2b8f52
class TreeView_unselect_all(unittest.TestCase):
2107
86bdcc2b8f52
	"TreeView.unselect_all()"
2108
86bdcc2b8f52
2109
86bdcc2b8f52
	def test_unselect(self):
2110
86bdcc2b8f52
		"TreeView.unselect_all() unselects all rows"
2111
86bdcc2b8f52
2112
86bdcc2b8f52
		e = data.EntryStore()
2113
86bdcc2b8f52
		iter1 = e.add_entry(entry.GenericEntry())
2114
86bdcc2b8f52
		iter2 = e.add_entry(entry.GenericEntry())
2115
86bdcc2b8f52
2116
86bdcc2b8f52
		t = ui.TreeView(e)
2117
86bdcc2b8f52
2118
86bdcc2b8f52
		t.select(iter2)
2119
86bdcc2b8f52
		self.assertEquals(len(t.get_selected()), 1)
2120
86bdcc2b8f52
2121
86bdcc2b8f52
		t.unselect_all()
2122
86bdcc2b8f52
		self.assertEquals(t.get_selected(), [])
2123
86bdcc2b8f52
2124
86bdcc2b8f52
2125
86bdcc2b8f52
2126
8ec66df6d4cf
class Toolbar(unittest.TestCase):
2127
8ec66df6d4cf
	"Toolbar"
2128
8ec66df6d4cf
2129
8ec66df6d4cf
	def test_subclass(self):
2130
8ec66df6d4cf
		"Toolbar is subclass of gtk.Toolbar"
2131
8ec66df6d4cf
2132
8ec66df6d4cf
		self.assertEquals(isinstance(ui.Toolbar(), gtk.Toolbar), True)
2133
8ec66df6d4cf
2134
8ec66df6d4cf
2135
8ec66df6d4cf
2136
8ec66df6d4cf
class Toolbar_append_widget(unittest.TestCase):
2137
8ec66df6d4cf
	"Toolbar.append_widget()"
2138
8ec66df6d4cf
2139
8ec66df6d4cf
	def test_append(self):
2140
8ec66df6d4cf
		"Toolbar.append_widget() appends a widget"
2141
8ec66df6d4cf
2142
8ec66df6d4cf
		label = ui.Label("test")
2143
8ec66df6d4cf
		toolbar = ui.Toolbar()
2144
8ec66df6d4cf
		toolbar.append_widget(label)
2145
8ec66df6d4cf
2146
8ec66df6d4cf
		self.assertEquals(len(toolbar.get_children()), 1)
2147
8ec66df6d4cf
		self.assertEquals(toolbar.get_children()[0].get_child() is label, True)
2148
8ec66df6d4cf
2149
8ec66df6d4cf
2150
8ec66df6d4cf
2151
e0a14b958359
class UIManager(unittest.TestCase):
2152
e0a14b958359
	"UIManager"
2153
e0a14b958359
2154
e0a14b958359
	def test_subclass(self):
2155
e0a14b958359
		"UIManager is subclass of gtk.UIManager"
2156
e0a14b958359
2157
e0a14b958359
		self.assertEquals(isinstance(ui.UIManager(), gtk.UIManager), True)
2158
e0a14b958359
2159
e0a14b958359
2160
e0a14b958359
2161
e0a14b958359
class UIManager_add_actions_from_file(unittest.TestCase):
2162
e0a14b958359
	"UIManager.add_actions_from_file()"
2163
e0a14b958359
2164
e0a14b958359
	def test_ioerror(self):
2165
e0a14b958359
		"UIManager.add_actions_from_file() raises IOError on file error"
2166
e0a14b958359
2167
e0a14b958359
		self.assertRaises(IOError, ui.UIManager().add_actions_from_file, "/dummyfile123")
2168
e0a14b958359
2169
e0a14b958359
2170
e0a14b958359
2171
e0a14b958359
class UIManager_add_actions_from_string(unittest.TestCase):
2172
e0a14b958359
	"UIManager.add_actions_from_string()"
2173
e0a14b958359
2174
e0a14b958359
	def test_action(self):
2175
e0a14b958359
		"UIManager.add_actions_from_string() creates action correctly"
2176
e0a14b958359
2177
e0a14b958359
		mgr = ui.UIManager()
2178
e0a14b958359
2179
e0a14b958359
		mgr.add_actions_from_string("""
2180
e0a14b958359
<?xml version=\"1.0\" ?>
2181
e0a14b958359
<actions>
2182
e0a14b958359
	<actiongroup name=\"testgroup\">
2183
e0a14b958359
		<action>
2184
e0a14b958359
			<name>test</name>
2185
e0a14b958359
			<label>Just a test</label>
2186
e0a14b958359
			<stock>gtk-ok</stock>
2187
e0a14b958359
			<accel>&lt;Control&gt;O</accel>
2188
e0a14b958359
			<description>Test-description</description>
2189
e0a14b958359
		</action>
2190
e0a14b958359
	</actiongroup>
2191
e0a14b958359
</actions>
2192
e0a14b958359
""")
2193
e0a14b958359
2194
e0a14b958359
		action = mgr.get_action("test")
2195
e0a14b958359
2196
e0a14b958359
		self.assertEquals(action.get_property("name"), "test")
2197
e0a14b958359
		self.assertEquals(action.get_property("label"), "Just a test")
2198
e0a14b958359
		self.assertEquals(action.get_property("stock-id"), "gtk-ok")
2199
e0a14b958359
		self.assertEquals(action.get_property("tooltip"), "Test-description")
2200
e0a14b958359
		self.assertEquals(action.get_property("action-group").get_name(), "testgroup")
2201
e0a14b958359
2202
e0a14b958359
2203
e0a14b958359
	def test_actiongroup(self):
2204
e0a14b958359
		"UIManager.add_actions_from_string() creates action groups"
2205
e0a14b958359
2206
e0a14b958359
		mgr = ui.UIManager()
2207
e0a14b958359
2208
e0a14b958359
		mgr.add_actions_from_string("""
2209
e0a14b958359
<?xml version=\"1.0\" ?>
2210
e0a14b958359
<actions>
2211
e0a14b958359
	<actiongroup name=\"testgroup\">
2212
e0a14b958359
		<action>
2213
e0a14b958359
			<name>test</name>
2214
e0a14b958359
			<label>Just a test</label>
2215
e0a14b958359
			<stock>gtk-ok</stock>
2216
e0a14b958359
			<accel>&lt;Control&gt;O</accel>
2217
e0a14b958359
			<description>Test-description</description>
2218
e0a14b958359
		</action>
2219
e0a14b958359
	</actiongroup>
2220
e0a14b958359
</actions>
2221
e0a14b958359
""")
2222
e0a14b958359
2223
e0a14b958359
		actiongroup = mgr.get_action_group("testgroup")
2224
e0a14b958359
		self.assertEquals(isinstance(actiongroup, gtk.ActionGroup), True)
2225
e0a14b958359
2226
e0a14b958359
2227
e0a14b958359
	def test_invalid(self):
2228
e0a14b958359
		"UIManager.add_actions_from_string() raises DataError on invalid data"
2229
e0a14b958359
2230
e0a14b958359
		xml = """
2231
e0a14b958359
<?xml version="1.0" ?>
2232
e0a14b958359
<actions>
2233
e0a14b958359
	<dummy></dummy>
2234
e0a14b958359
</action>
2235
e0a14b958359
"""
2236
e0a14b958359
2237
e0a14b958359
		self.assertRaises(ui.DataError, ui.UIManager().add_actions_from_string, xml)
2238
e0a14b958359
2239
e0a14b958359
2240
e0a14b958359
	def test_optional(self):
2241
e0a14b958359
		"UIManager.add_actions_from_string() uses optional action elements"
2242
e0a14b958359
2243
e0a14b958359
		mgr = ui.UIManager()
2244
e0a14b958359
2245
e0a14b958359
		mgr.add_actions_from_string("""
2246
e0a14b958359
<?xml version=\"1.0\" ?>
2247
e0a14b958359
<actions>
2248
e0a14b958359
	<actiongroup name=\"testgroup\">
2249
e0a14b958359
		<action>
2250
e0a14b958359
			<name>test</name>
2251
e0a14b958359
		</action>
2252
e0a14b958359
	</actiongroup>
2253
e0a14b958359
</actions>
2254
e0a14b958359
""")
2255
e0a14b958359
2256
e0a14b958359
		action = mgr.get_action("test")
2257
e0a14b958359
2258
e0a14b958359
		self.assertEquals(action.get_property("name"), "test")
2259
e0a14b958359
		self.assertEquals(action.get_property("label"), "")
2260
e0a14b958359
		self.assertEquals(action.get_property("stock-id"), "")
2261
e0a14b958359
		self.assertEquals(action.get_property("tooltip"), "")
2262
e0a14b958359
		self.assertEquals(action.get_property("action-group").get_name(), "testgroup")
2263
e0a14b958359
2264
e0a14b958359
2265
e0a14b958359
2266
e0a14b958359
class UIManager_add_ui_from_file(unittest.TestCase):
2267
e0a14b958359
	"UIManager.add_ui_from_file()"
2268
e0a14b958359
2269
e0a14b958359
	def test_ioerror(self):
2270
e0a14b958359
		"UIManager.add_ui_from_file() raises IOError on file error"
2271
e0a14b958359
2272
e0a14b958359
		self.assertRaises(IOError, ui.UIManager().add_ui_from_file, "/dummyfile123")
2273
e0a14b958359
2274
e0a14b958359
2275
e0a14b958359
2276
e0a14b958359
class UIManager_append_action_group(unittest.TestCase):
2277
e0a14b958359
	"UIManager.append_action_group()"
2278
e0a14b958359
2279
e0a14b958359
	def test_append(self):
2280
e0a14b958359
		"UIManager.append_action_group() appends action group"
2281
e0a14b958359
2282
e0a14b958359
		mgr = ui.UIManager()
2283
e0a14b958359
		mgr.add_actions_from_string("""
2284
e0a14b958359
<?xml version="1.0" ?>
2285
e0a14b958359
<actions>
2286
e0a14b958359
	<actiongroup name="testa" />
2287
e0a14b958359
	<actiongroup name="testb" />
2288
e0a14b958359
</actions>
2289
e0a14b958359
		""")
2290
e0a14b958359
2291
e0a14b958359
		group = gtk.ActionGroup("testc")
2292
e0a14b958359
		mgr.append_action_group(group)
2293
e0a14b958359
2294
e0a14b958359
		self.assertEquals(mgr.get_action_group("testc") is group, True)
2295
e0a14b958359
		self.assertEquals(mgr.get_action_groups()[2], group)
2296
e0a14b958359
2297
e0a14b958359
2298
e0a14b958359
2299
e0a14b958359
class UIManager_get_action(unittest.TestCase):
2300
e0a14b958359
	"UIManager.get_action()"
2301
e0a14b958359
2302
e0a14b958359
	def test_action(self):
2303
e0a14b958359
		"UIManager.get_action() looks up action"
2304
e0a14b958359
2305
e0a14b958359
		mgr = ui.UIManager()
2306
e0a14b958359
		mgr.add_actions_from_string("""
2307
e0a14b958359
<?xml version="1.0" ?>
2308
e0a14b958359
<actions>
2309
e0a14b958359
	<actiongroup name="testgroup">
2310
e0a14b958359
		<action>
2311
e0a14b958359
			<name>testaction</name>
2312
e0a14b958359
		</action>
2313
e0a14b958359
	</actiongroup>
2314
e0a14b958359
</actions>
2315
e0a14b958359
		""")
2316
e0a14b958359
2317
e0a14b958359
		action = mgr.get_action("testaction")
2318
e0a14b958359
		self.assertEquals(isinstance(action, gtk.Action), True)
2319
e0a14b958359
		self.assertEquals(action.get_property("name"), "testaction")
2320
e0a14b958359
2321
e0a14b958359
2322
e0a14b958359
	def test_none(self):
2323
e0a14b958359
		"UIManager.get_action() returns None if not found"
2324
e0a14b958359
2325
e0a14b958359
		self.assertEquals(ui.UIManager().get_action("test"), None)
2326
e0a14b958359
2327
e0a14b958359
2328
e0a14b958359
2329
e0a14b958359
class UIManager_get_action_group(unittest.TestCase):
2330
e0a14b958359
	"UIManager.get_action_group()"
2331
e0a14b958359
2332
e0a14b958359
	def test_action(self):
2333
e0a14b958359
		"UIManager.get_action_group() looks up group"
2334
e0a14b958359
2335
e0a14b958359
		mgr = ui.UIManager()
2336
e0a14b958359
		mgr.add_actions_from_string("""
2337
e0a14b958359
<?xml version="1.0" ?>
2338
e0a14b958359
<actions>
2339
e0a14b958359
	<actiongroup name="testgroup">
2340
e0a14b958359
		<action>
2341
e0a14b958359
			<name>testaction</name>
2342
e0a14b958359
		</action>
2343
e0a14b958359
	</actiongroup>
2344
e0a14b958359
</actions>
2345
e0a14b958359
		""")
2346
e0a14b958359
2347
e0a14b958359
		group = mgr.get_action_group("testgroup")
2348
e0a14b958359
		self.assertEquals(isinstance(group, gtk.ActionGroup), True)
2349
e0a14b958359
		self.assertEquals(group.get_name(), "testgroup")
2350
e0a14b958359
2351
e0a14b958359
2352
e0a14b958359
	def test_none(self):
2353
e0a14b958359
		"UIManager.get_action_group() returns None if not found"
2354
e0a14b958359
2355
e0a14b958359
		self.assertEquals(ui.UIManager().get_action_group("test"), None)
2356
e0a14b958359
2357
e0a14b958359
2358
e0a14b958359
2359
8ec66df6d4cf
class VBox(unittest.TestCase):
2360
8ec66df6d4cf
	"VBox"
2361
8ec66df6d4cf
2362
8ec66df6d4cf
	def test_children(self):
2363
8ec66df6d4cf
		"VBox accepts children as arguments"
2364
8ec66df6d4cf
2365
8ec66df6d4cf
		vbox = ui.VBox(ui.Label("a"), ui.Label("b"), ui.Label("c"))
2366
8ec66df6d4cf
2367
8ec66df6d4cf
		self.assertEquals(len(vbox.get_children()), 3)
2368
8ec66df6d4cf
		self.assertEquals(vbox.get_children()[0].get_text(), "a")
2369
8ec66df6d4cf
		self.assertEquals(vbox.get_children()[1].get_text(), "b")
2370
8ec66df6d4cf
		self.assertEquals(vbox.get_children()[2].get_text(), "c")
2371
8ec66df6d4cf
2372
8ec66df6d4cf
2373
8ec66df6d4cf
	def test_hig(self):
2374
8ec66df6d4cf
		"VBox conforms to the HIG"
2375
8ec66df6d4cf
2376
8ec66df6d4cf
		vbox = ui.VBox()
2377
8ec66df6d4cf
		self.assertEquals(vbox.get_spacing(), 6)
2378
8ec66df6d4cf
		self.assertEquals(vbox.get_border_width(), 0)
2379
8ec66df6d4cf
2380
8ec66df6d4cf
2381
8ec66df6d4cf
	def test_subclass(self):
2382
8ec66df6d4cf
		"VBox is subclass of gtk.VBox"
2383
8ec66df6d4cf
2384
8ec66df6d4cf
		self.assertEquals(isinstance(ui.VBox(), gtk.VBox), True)
2385
8ec66df6d4cf
2386
8ec66df6d4cf
2387
8ec66df6d4cf
2388
9b26b6070e40
def gtk_run():
2389
9b26b6070e40
	while gtk.events_pending():
2390
9b26b6070e40
		gtk.main_iteration()
2391
9b26b6070e40
2392
9b26b6070e40
2393
9b26b6070e40
2394
8ec66df6d4cf
if __name__ == "__main__":
2395
e0a14b958359
	gnome.init("revelation-test", "revelation-test")
2396
8ec66df6d4cf
	unittest.main()
2397
8ec66df6d4cf