Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Side by Side Diff: chrome/android/junit/src/org/chromium/chrome/browser/widget/selection/SelectionDelegateTest.java

Issue 2789363003: Implement single-selection mode for SelectionDelegate. (Closed)
Patch Set: Add test Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
Michael van Ouwerkerk 2017/04/04 13:54:31 nit: 2017
Finnur 2017/04/04 16:13:36 Done.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.widget.selection;
6
7 import static org.junit.Assert.assertEquals;
8
9 import org.junit.Test;
10 import org.junit.runner.RunWith;
11 import org.robolectric.annotation.Config;
12
13 import org.chromium.testing.local.LocalRobolectricTestRunner;
14
15 import java.util.List;
16
17 /**
18 * Tests for the SelectionDelegate class.
Michael van Ouwerkerk 2017/04/04 13:54:31 nit: {@link SelectionDelegate}
Finnur 2017/04/04 16:13:36 Done.
19 */
20 @RunWith(LocalRobolectricTestRunner.class)
21 @Config(manifest = Config.NONE)
22 public class SelectionDelegateTest implements SelectionDelegate.SelectionObserve r<Object> {
23 private SelectionDelegate<Object> mDelegate;
Michael van Ouwerkerk 2017/04/04 13:54:31 It seems cleaner to track this state on a per-test
Finnur 2017/04/04 16:13:36 Done.
24
25 private final Object mData1 = new Object();
26 private final Object mData2 = new Object();
27 private final Object mData3 = new Object();
28
29 private List<Object> mSelectedItems;
Michael van Ouwerkerk 2017/04/04 13:54:31 Same for this member, I'd avoid changing member st
Finnur 2017/04/04 16:13:36 Done.
30
31 // SelectionDelegate.SelectionObserver:
32
33 public void onSelectionStateChange(List<Object> selectedItems) {
34 mSelectedItems = selectedItems;
35 assertEquals(selectedItems, mDelegate.getSelectedItems());
36 }
37
38 @Test
39 public void testSelectionDelegateSingle() {
40 mDelegate = new SelectionDelegate<Object>();
41 mDelegate.setSingleSelectionMode();
42
43 mDelegate.addObserver(this);
44
45 // Starting state, nothing is selected.
46 assertEquals(false, mDelegate.isItemSelected(mData1));
Michael van Ouwerkerk 2017/04/04 13:54:31 Use assertFalse and assertTrue.
Finnur 2017/04/04 16:13:36 Done.
47 assertEquals(false, mDelegate.isSelectionEnabled());
48
49 // Select first item and verify selection.
50 mDelegate.toggleSelectionForItem(mData1);
51 assertEquals(1, mSelectedItems.size());
52 assertEquals(true, mDelegate.isItemSelected(mData1));
53 assertEquals(true, mDelegate.isSelectionEnabled());
54
55 // Select second item, first item gets unselected.
56 mDelegate.toggleSelectionForItem(mData2);
57 assertEquals(1, mSelectedItems.size());
58 assertEquals(false, mDelegate.isItemSelected(mData1));
59 assertEquals(true, mDelegate.isItemSelected(mData2));
60 assertEquals(true, mDelegate.isSelectionEnabled());
61
62 // Unselect second item.
63 mDelegate.toggleSelectionForItem(mData2);
64 assertEquals(0, mSelectedItems.size());
65 assertEquals(false, mDelegate.isItemSelected(mData2));
66 assertEquals(false, mDelegate.isSelectionEnabled());
67
68 // Test clearing selection.
69 mDelegate.toggleSelectionForItem(mData1);
70 mDelegate.clearSelection();
71 assertEquals(0, mSelectedItems.size());
72 assertEquals(false, mDelegate.isItemSelected(mData2));
73 assertEquals(false, mDelegate.isSelectionEnabled());
74
75 mDelegate.removeObserver(this);
76 }
77
78 @Test
79 public void testSelectionDelegateMulti() {
80 mDelegate = new SelectionDelegate<Object>();
81
82 mDelegate.addObserver(this);
83
84 // Starting state, nothing is selected.
85 assertEquals(false, mDelegate.isItemSelected(mData1));
86 assertEquals(false, mDelegate.isSelectionEnabled());
87
88 // Select first item and verify selection.
89 mDelegate.toggleSelectionForItem(mData1);
90 assertEquals(1, mSelectedItems.size());
91 assertEquals(true, mDelegate.isItemSelected(mData1));
92 assertEquals(true, mDelegate.isSelectionEnabled());
93
94 // Select second item, first item does not get unselected.
95 mDelegate.toggleSelectionForItem(mData2);
96 assertEquals(2, mSelectedItems.size());
97 assertEquals(true, mDelegate.isItemSelected(mData1));
98 assertEquals(true, mDelegate.isItemSelected(mData2));
99 assertEquals(true, mDelegate.isSelectionEnabled());
100
101 // Unselect second item.
102 mDelegate.toggleSelectionForItem(mData2);
103 assertEquals(1, mSelectedItems.size());
104 assertEquals(false, mDelegate.isItemSelected(mData2));
105 assertEquals(true, mDelegate.isItemSelected(mData1));
106 assertEquals(true, mDelegate.isSelectionEnabled());
107
108 // Test clearing selection.
109 mDelegate.clearSelection();
110 assertEquals(0, mSelectedItems.size());
111 assertEquals(false, mDelegate.isItemSelected(mData1));
112 assertEquals(false, mDelegate.isItemSelected(mData2));
113 assertEquals(false, mDelegate.isSelectionEnabled());
114
115 mDelegate.removeObserver(this);
116 }
117 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698