diff options
Diffstat (limited to 'trunk/dimbola/taglist_tests.py')
-rw-r--r-- | trunk/dimbola/taglist_tests.py | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/trunk/dimbola/taglist_tests.py b/trunk/dimbola/taglist_tests.py new file mode 100644 index 0000000..32ccfd7 --- /dev/null +++ b/trunk/dimbola/taglist_tests.py @@ -0,0 +1,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)) + |