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
ac9e3621e5ea
parent
5a85d838a653
branch
default
tags
revelation-0.4.1

set release date

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