def test_list_adapter_selection_mode_single(self): list_adapter = ListAdapter(data=fruit_data_items, args_converter=self.args_converter, selection_mode='single', propagate_selection_to_data=True, allow_empty_selection=True, cls=ListItemButton) list_view = ListView(adapter=list_adapter) # The reason why len(selection) == 0 here is because ListView, # at the end of its __init__(), calls check_for_empty_selection() # and does NOT trigger the initial selection, because we set # allow_empty_selection = True. self.assertEqual(len(list_adapter.selection), 0) list_adapter.check_for_empty_selection() # Nothing should have changed by that call, because still we have # allow_empty_selection = True, so no action in that check. self.assertEqual(len(list_adapter.selection), 0) # Still no selection, but triggering a selection should make len = 1. # So, first we need to select the associated data item. self.assertEqual(fruit_data_items[0].name, 'Apple') fruit_data_items[0].is_selected = True apple = list_view.adapter.get_view(0) self.assertEqual(apple.text, 'Apple') self.assertTrue(apple.is_selected) self.assertEqual(len(list_adapter.selection), 1)
def test_list_adapter_selection_mode_single_auto_selection(self): list_adapter = ListAdapter(data=fruit_data_items, args_converter=self.args_converter, selection_mode='single', allow_empty_selection=False, cls=ListItemButton) list_view = ListView(adapter=list_adapter) # The reason why len(selection) == 1 here is because ListView, # at the end of its __init__(), calls check_for_empty_selection() # and triggers the initial selection, because allow_empty_selection is # False. apple = list_view.adapter.cached_views[0] self.assertEqual(list_adapter.selection[0], apple) self.assertEqual(len(list_adapter.selection), 1) list_adapter.check_for_empty_selection() # Nothing should have changed for len, as we already have a selection. self.assertEqual(len(list_adapter.selection), 1)
def test_list_adapter_selection_mode_none(self): list_adapter = ListAdapter(data=fruit_data_items, args_converter=self.args_converter, selection_mode='none', allow_empty_selection=True, cls=ListItemButton) self.assertEqual(sorted([obj.name for obj in list_adapter.data]), ['Apple', 'Avocado', 'Banana', 'Cantaloupe', 'Cherry', 'Grape', 'Grapefruit', 'Honeydew', 'Kiwifruit', 'Lemon', 'Lime', 'Nectarine', 'Orange', 'Peach', 'Pear', 'Pineapple', 'Plum', 'Strawberry', 'Tangerine', 'Watermelon']) # The reason why len(selection) == 0 here is because it is ListView, # at the end of its __init__(), that calls check_for_empty_selection() # and triggers the initial selection, and we didn't make a ListView. self.assertEqual(len(list_adapter.selection), 0) list_adapter.check_for_empty_selection() self.assertEqual(len(list_adapter.selection), 0)