1from unittest import TestCase 2 3from PyQt5.QtCore import Qt, QModelIndex 4 5from UM.Qt.ListModel import ListModel 6from copy import deepcopy 7 8class TestListModel(TestCase): 9 10 list_model = None # type: ListModel 11 12 test_data = [{"name": "yay", "data": 12}, {"name": "omg", "data": 13}, {"name":"zomg", "data": 14}] 13 NameRole = Qt.UserRole + 1 14 DataRole = Qt.UserRole + 2 15 16 def setUp(self): 17 self.list_model = ListModel() 18 self.list_model.addRoleName(self.NameRole, "name") 19 self.list_model.addRoleName(self.DataRole, "data") 20 21 self.list_model.setItems(deepcopy(self.test_data)) 22 23 def test_getItem(self): 24 assert self.list_model.getItem(0) == {"name": "yay", "data": 12} 25 assert self.list_model.getItem(9001) == {} 26 27 def test_items(self): 28 assert self.list_model.items == self.test_data 29 30 def test_insertItem(self): 31 self.list_model.insertItem(0, {"name": "zomg!", "data": "yay"}) 32 assert self.list_model.getItem(0) == {"name": "zomg!", "data": "yay"} 33 # Check if the previously first item is now the second one. 34 assert self.list_model.getItem(1) == {"name": "yay", "data": 12} 35 36 def test_removeItem(self): 37 self.list_model.removeItem(1) 38 assert self.list_model.getItem(1) == {"name":"zomg", "data": 14} 39 40 def test_clear(self): 41 assert self.list_model.count == 3 42 self.list_model.clear() 43 assert self.list_model.count == 0 44 45 def test_appendItem(self): 46 self.list_model.appendItem({"name":"!", "data": 9001}) 47 assert self.list_model.count == 4 48 assert self.list_model.getItem(3) == {"name":"!", "data": 9001} 49 50 def test_setProperty(self): 51 self.list_model.setProperty(0, "name", "new_data") 52 assert self.list_model.getItem(0)["name"] == "new_data" 53 54 def test_find(self): 55 assert self.list_model.find("name", "omg") == 1 56 assert self.list_model.find("data", 13) == 1 57 assert self.list_model.find("name", "zomg") == 2 58 59 assert self.list_model.find("name", "UNKNOWN") == -1 60 61 def test_setItems(self): 62 self.list_model.setItems([{"name": "zomg!", "data": "yay"}]) 63 assert self.list_model.items == [{"name": "zomg!", "data": "yay"}] 64 65 def test_sort(self): 66 self.list_model.sort(lambda i: -i["data"]) 67 68 assert self.list_model.getItem(0) == {"name":"zomg", "data": 14} 69 assert self.list_model.getItem(2) == {"name": "yay", "data": 12}