1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
# Copyright (C) 2009 Lars Wirzenius <liw@liw.fi>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import unittest
import gtk
import dimbola
class TaglistTests(unittest.TestCase):
'''Show/edit selected photo's tags.'''
def setUp(self):
self.textview = gtk.TextView()
self.taglist = dimbola.Taglist(self.textview, None, None)
self.photoid = 12
self.tagid = 34
self.tagname = 'yeehaa'
self.text_tag_name = 'taglist-photoid-12-tagid-34'
self.tagid2 = 56
self.tagname2 = 'blib'
self.text_tag_name2 = 'taglist-photoid-12-tagid-56'
self.tags = [(self.tagid, self.tagname), (self.tagid2, self.tagname2)]
def test_creates_text_tag_name_correctly(self):
self.assertEqual(self.taglist.text_tag_name(self.photoid, self.tagid),
self.text_tag_name)
def test_recognizes_its_text_tag_name(self):
self.assert_(self.taglist.is_our_text_tag_name(self.text_tag_name))
def test_parses_text_tag_name_correctly(self):
self.assertEqual(self.taglist.parse_text_tag_name(self.text_tag_name),
(self.photoid, self.tagid))
def test_has_no_text_tags_initially(self):
self.assertEqual(self.taglist.text_tag_names, [])
def test_set_tags_results_in_text_tags(self):
self.taglist.set_tags(self.photoid, self.tags)
self.assertEqual(self.taglist.text_tag_names,
[self.text_tag_name, self.text_tag_name2])
def test_set_tags_results_in_buffer_text(self):
self.taglist.set_tags(self.photoid, self.tags)
start, end = self.taglist.buf.get_bounds()
text = self.taglist.buf.get_text(start, end)
# Note that we assume tagname2 comes before tagname in sorted order.
self.assertEqual(text, '%s; %s' % (self.tagname2, self.tagname))
def test_clear_empties_text(self):
self.taglist.set_tags(self.photoid, self.tags)
self.taglist.clear()
start, end = self.taglist.buf.get_bounds()
text = self.taglist.buf.get_text(start, end)
self.assertEqual(text, '')
def test_clear_empties_text_tags(self):
self.taglist.set_tags(self.photoid, self.tags)
self.taglist.clear()
self.assertEqual(self.taglist.text_tag_names, [])
def test_finds_ids_at_iter(self):
self.taglist.set_tags(self.photoid, self.tags)
it = self.taglist.buf.get_iter_at_offset(0)
photoid, tagid = self.taglist.iter_to_ids(it)
self.assertEqual(photoid, self.photoid)
self.assertEqual(tagid, self.tagid2)
def test_finds_no_ids_outside_tags(self):
self.taglist.set_tags(self.photoid, self.tags)
it = self.taglist.buf.get_end_iter()
self.assertEqual(self.taglist.iter_to_ids(it), (None, None))
def test_selects_tagname_at_iterator(self):
self.taglist.set_tags(self.photoid, self.tags)
it = self.taglist.buf.get_iter_at_offset(0)
self.taglist.select_tagname_at_iter(it)
ins = self.taglist.buf.get_insert()
ins_it = self.taglist.buf.get_iter_at_mark(ins)
self.assertEqual(ins_it.get_offset(), 0)
sel = self.taglist.buf.get_selection_bound()
sel_it = self.taglist.buf.get_iter_at_mark(sel)
self.assertEqual(sel_it.get_offset(), len(self.tagname2))
def test_returns_correct_tagid_when_tagname_is_selected(self):
self.taglist.set_tags(self.photoid, self.tags)
it = self.taglist.buf.get_iter_at_offset(0)
self.taglist.select_tagname_at_iter(it)
self.assertEqual(self.taglist.selected_tag(),
(self.photoid, self.tagid2))
|