29
29
import androidx .appcompat .app .AppCompatActivity ;
30
30
import android .view .View ;
31
31
import android .widget .CheckBox ;
32
+ import android .widget .CompoundButton .OnCheckedChangeListener ;
32
33
import androidx .core .widget .CompoundButtonCompat ;
34
+ import com .google .android .material .checkbox .MaterialCheckBox .OnCheckedStateChangedListener ;
33
35
import com .google .android .material .checkbox .MaterialCheckBox .OnErrorChangedListener ;
34
36
import com .google .android .material .color .MaterialColors ;
35
37
import org .junit .Before ;
@@ -52,6 +54,12 @@ public class MaterialCheckBoxTest {
52
54
private AppCompatActivity activity ;
53
55
private View checkboxes ;
54
56
private MaterialCheckBox materialCheckBox ;
57
+ private final OnCheckedChangeListener mockCheckedListener =
58
+ Mockito .mock (OnCheckedChangeListener .class );
59
+ private final OnErrorChangedListener mockErrorListener =
60
+ Mockito .mock (OnErrorChangedListener .class );
61
+ private final OnCheckedStateChangedListener mockStateListener =
62
+ Mockito .mock (OnCheckedStateChangedListener .class );
55
63
56
64
@ Before
57
65
public void createAndThemeApplicationContext () {
@@ -60,6 +68,129 @@ public void createAndThemeApplicationContext() {
60
68
materialCheckBox = checkboxes .findViewById (R .id .test_checkbox );
61
69
}
62
70
71
+ @ Test
72
+ public void testSetCheckedState_checked_succeeds () {
73
+ materialCheckBox .setCheckedState (MaterialCheckBox .STATE_CHECKED );
74
+
75
+ assertThat (materialCheckBox .isChecked ()).isTrue ();
76
+ assertThat (materialCheckBox .getCheckedState ()).isEqualTo (MaterialCheckBox .STATE_CHECKED );
77
+ }
78
+
79
+ @ Test
80
+ public void testSetCheckedState_unchecked_succeeds () {
81
+ materialCheckBox .setCheckedState (MaterialCheckBox .STATE_CHECKED );
82
+ assertThat (materialCheckBox .isChecked ()).isTrue ();
83
+
84
+ materialCheckBox .setCheckedState (MaterialCheckBox .STATE_UNCHECKED );
85
+
86
+ assertThat (materialCheckBox .isChecked ()).isFalse ();
87
+ assertThat (materialCheckBox .getCheckedState ()).isEqualTo (MaterialCheckBox .STATE_UNCHECKED );
88
+ }
89
+
90
+ @ Test
91
+ public void testSetCheckedState_indeterminate_succeeds () {
92
+ materialCheckBox .setCheckedState (MaterialCheckBox .STATE_INDETERMINATE );
93
+
94
+ assertThat (materialCheckBox .isChecked ()).isFalse ();
95
+ assertThat (materialCheckBox .getCheckedState ()).isEqualTo (MaterialCheckBox .STATE_INDETERMINATE );
96
+ }
97
+
98
+ @ Test
99
+ public void testSetCheckedState_checkedToIndeterminate_succeeds () {
100
+ materialCheckBox .setCheckedState (MaterialCheckBox .STATE_CHECKED );
101
+
102
+ materialCheckBox .setCheckedState (MaterialCheckBox .STATE_INDETERMINATE );
103
+
104
+ assertThat (materialCheckBox .isChecked ()).isFalse ();
105
+ assertThat (materialCheckBox .getCheckedState ()).isEqualTo (MaterialCheckBox .STATE_INDETERMINATE );
106
+ }
107
+
108
+ @ Test
109
+ public void testSetCheckedState_checked_callsStateAndCheckedListeners () {
110
+ materialCheckBox .addOnCheckedStateChangedListener (mockStateListener );
111
+ materialCheckBox .setOnCheckedChangeListener (mockCheckedListener );
112
+
113
+ materialCheckBox .setCheckedState (MaterialCheckBox .STATE_CHECKED );
114
+
115
+ verify (mockStateListener )
116
+ .onCheckedStateChangedListener (materialCheckBox , MaterialCheckBox .STATE_CHECKED );
117
+ verify (mockCheckedListener ).onCheckedChanged (materialCheckBox , /* isChecked= */ true );
118
+ }
119
+
120
+ @ Test
121
+ public void testSetCheckedState_unchecked_callsStateAndCheckedListeners () {
122
+ materialCheckBox .setCheckedState (MaterialCheckBox .STATE_CHECKED );
123
+ materialCheckBox .addOnCheckedStateChangedListener (mockStateListener );
124
+ materialCheckBox .setOnCheckedChangeListener (mockCheckedListener );
125
+
126
+ materialCheckBox .setCheckedState (MaterialCheckBox .STATE_UNCHECKED );
127
+
128
+ verify (mockStateListener )
129
+ .onCheckedStateChangedListener (materialCheckBox , MaterialCheckBox .STATE_UNCHECKED );
130
+ verify (mockCheckedListener ).onCheckedChanged (materialCheckBox , /* isChecked= */ false );
131
+ }
132
+
133
+ @ Test
134
+ public void testSetCheckedState_indeterminate_callsStateListener () {
135
+ materialCheckBox .addOnCheckedStateChangedListener (mockStateListener );
136
+ materialCheckBox .setOnCheckedChangeListener (mockCheckedListener );
137
+
138
+ materialCheckBox .setCheckedState (MaterialCheckBox .STATE_INDETERMINATE );
139
+
140
+ verify (mockStateListener )
141
+ .onCheckedStateChangedListener (materialCheckBox , MaterialCheckBox .STATE_INDETERMINATE );
142
+ verify (mockCheckedListener , never ()).onCheckedChanged (materialCheckBox , /* isChecked= */ false );
143
+ }
144
+
145
+ @ Test
146
+ public void testSetChecked_succeeds () {
147
+ materialCheckBox .setChecked (true );
148
+
149
+ assertThat (materialCheckBox .isChecked ()).isTrue ();
150
+ assertThat (materialCheckBox .getCheckedState ()).isEqualTo (MaterialCheckBox .STATE_CHECKED );
151
+ }
152
+
153
+ @ Test
154
+ public void testSetUnchecked_succeeds () {
155
+ materialCheckBox .setChecked (true );
156
+ assertThat (materialCheckBox .isChecked ()).isTrue ();
157
+
158
+ materialCheckBox .setChecked (false );
159
+
160
+ assertThat (materialCheckBox .isChecked ()).isFalse ();
161
+ assertThat (materialCheckBox .getCheckedState ()).isEqualTo (MaterialCheckBox .STATE_UNCHECKED );
162
+ }
163
+
164
+ @ Test
165
+ public void testIndeterminate_onClick_becomesChecked () {
166
+ materialCheckBox .setCheckedState (MaterialCheckBox .STATE_INDETERMINATE );
167
+
168
+ materialCheckBox .performClick ();
169
+
170
+ assertThat (materialCheckBox .isChecked ()).isTrue ();
171
+ assertThat (materialCheckBox .getCheckedState ()).isEqualTo (MaterialCheckBox .STATE_CHECKED );
172
+ }
173
+
174
+ @ Test
175
+ public void testIndeterminate_setChecked_becomesChecked () {
176
+ materialCheckBox .setCheckedState (MaterialCheckBox .STATE_INDETERMINATE );
177
+
178
+ materialCheckBox .setChecked (true );
179
+
180
+ assertThat (materialCheckBox .isChecked ()).isTrue ();
181
+ assertThat (materialCheckBox .getCheckedState ()).isEqualTo (MaterialCheckBox .STATE_CHECKED );
182
+ }
183
+
184
+ @ Test
185
+ public void testIndeterminate_setUnchecked_becomesUnchecked () {
186
+ materialCheckBox .setCheckedState (MaterialCheckBox .STATE_INDETERMINATE );
187
+
188
+ materialCheckBox .setChecked (false );
189
+
190
+ assertThat (materialCheckBox .isChecked ()).isFalse ();
191
+ assertThat (materialCheckBox .getCheckedState ()).isEqualTo (MaterialCheckBox .STATE_UNCHECKED );
192
+ }
193
+
63
194
@ Test
64
195
public void testSetError_succeeds () {
65
196
materialCheckBox .setErrorShown (true );
@@ -69,24 +200,22 @@ public void testSetError_succeeds() {
69
200
70
201
@ Test
71
202
public void testSetError_callsListener () {
72
- OnErrorChangedListener mockListener = Mockito .mock (OnErrorChangedListener .class );
73
203
materialCheckBox .setErrorShown (false );
74
- materialCheckBox .addOnErrorChangedListener (mockListener );
204
+ materialCheckBox .addOnErrorChangedListener (mockErrorListener );
75
205
76
206
materialCheckBox .setErrorShown (true );
77
207
78
- verify (mockListener ).onErrorChanged (materialCheckBox , /* errorShown= */ true );
208
+ verify (mockErrorListener ).onErrorChanged (materialCheckBox , /* errorShown= */ true );
79
209
}
80
210
81
211
@ Test
82
212
public void testSetError_withSameValue_doesNotCallListener () {
83
- OnErrorChangedListener mockListener = Mockito .mock (OnErrorChangedListener .class );
84
213
materialCheckBox .setErrorShown (false );
85
- materialCheckBox .addOnErrorChangedListener (mockListener );
214
+ materialCheckBox .addOnErrorChangedListener (mockErrorListener );
86
215
87
216
materialCheckBox .setErrorShown (false );
88
217
89
- verify (mockListener , never ()).onErrorChanged (materialCheckBox , /* errorShown= */ false );
218
+ verify (mockErrorListener , never ()).onErrorChanged (materialCheckBox , /* errorShown= */ false );
90
219
}
91
220
92
221
@ Test
0 commit comments