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
|
#!/usr/bin/env python
import unittest
from kiwi.python import disabledeprecationcall, Settable
from kiwi.ui.proxy import Proxy
from kiwi.ui.widgets.combobox import ProxyComboBox, ProxyComboBoxEntry
class TestComboBox(unittest.TestCase):
def setUp(self):
self.combo = ProxyComboBox()
def _prefill(self):
self.combo.prefill((('Johan', 1981),
('Lorenzo', 1979),
('Christian', 1976)))
def testPrefill(self):
self.combo.prefill(('foo', 'bar'))
model = self.combo.get_model()
self.assertEqual(tuple(model[0]), ('foo', None))
self.assertEqual(tuple(model[1]), ('bar', None))
def testPrefillWithData(self):
self.combo.prefill((('foo', 42), ('bar', 138)))
model = self.combo.get_model()
self.assertEqual(tuple(model[0]), ('foo', 42))
self.assertEqual(tuple(model[1]), ('bar', 138))
self.combo.prefill([])
self.assertEqual(len(self.combo.get_model()), 0)
self.assertEqual(len(model), 0)
self.assertEqual(len(self.combo), 0)
def testSelectItemByPosition(self):
self._prefill()
self.combo.select_item_by_position(1)
model = self.combo.get_model()
iter = self.combo.get_active_iter()
self.assertEqual(model.get_value(iter, 0), 'Lorenzo')
self.assertEqual(model.get_value(iter, 1), 1979)
self.assertRaises(KeyError, self.combo.select_item_by_label, 4)
def testSelectItemByLabel(self):
self._prefill()
self.combo.select_item_by_label('Christian')
model = self.combo.get_model()
iter = self.combo.get_active_iter()
rowNo = model.get_path(iter)[0]
self.assertEqual(rowNo, 2)
self.assertRaises(KeyError, self.combo.select_item_by_label, 'Salgado')
def testSelectByData(self):
self._prefill()
self.combo.select_item_by_data(1976)
model = self.combo.get_model()
iter = self.combo.get_active_iter()
rowNo = model.get_path(iter)[0]
self.assertEqual(rowNo, 2)
self.assertEqual(model.get_value(iter, 0), 'Christian')
self.assertEqual(model.get_value(iter, 1), 1976)
self.assertRaises(KeyError, self.combo.select_item_by_data, 1980)
def testGetSelectedData(self):
self._prefill()
self.combo.select_item_by_position(0)
self.assertEqual(self.combo.get_selected_data(), 1981)
self.assertRaises(TypeError,
self.combo.select_item_by_position, 'foobar')
def testGetSelectedLabel(self):
self._prefill()
def testClear(self):
self._prefill()
self.combo.clear()
self.assertEqual(map(list, self.combo.get_model()), [])
class FakeView:
def handler_block(self, widget):
pass
def handler_unblock(self, widget):
pass
class BaseModelTest:
def setUp(self):
self.model = Settable(attr=0)
proxy = Proxy(FakeView(), self.model)
self.combo = disabledeprecationcall(self.type)
self.combo.data_type = int
self.combo.model_attribute = 'attr'
self.combo.prefill([('foo', 0),
('bar', 1)])
proxy.add_widget('attr', self.combo)
self.combo.show()
def testSelectItemByData(self):
self.combo.select_item_by_data(1)
self.assertEqual(self.model.attr, 1)
self.combo.select_item_by_data(0)
self.assertEqual(self.model.attr, 0)
def testSelectItemBylabel(self):
self.combo.select_item_by_label('bar')
self.assertEqual(self.model.attr, 1)
self.combo.select_item_by_label('foo')
self.assertEqual(self.model.attr, 0)
class ComboModelTest(BaseModelTest, unittest.TestCase):
type = ProxyComboBox
class ComboEntryModelTest(BaseModelTest, unittest.TestCase):
type = ProxyComboBoxEntry
if __name__ == '__main__':
unittest.main()
|