1 package org.robolectric.shadows; 2 3 import static org.assertj.core.api.Assertions.assertThat; 4 import static org.junit.Assert.assertEquals; 5 6 import android.widget.RadioGroup; 7 import java.util.ArrayList; 8 import java.util.Arrays; 9 import org.junit.Test; 10 import org.junit.runner.RunWith; 11 import org.robolectric.RobolectricTestRunner; 12 import org.robolectric.RuntimeEnvironment; 13 14 @RunWith(RobolectricTestRunner.class) 15 public class ShadowRadioGroupTest { 16 private static final int BUTTON_ID = 3245; 17 18 @Test 19 public void checkedRadioButtonId() throws Exception { 20 RadioGroup radioGroup = new RadioGroup(RuntimeEnvironment.application); 21 assertThat(radioGroup.getCheckedRadioButtonId()).isEqualTo(-1); 22 radioGroup.check(99); 23 assertThat(radioGroup.getCheckedRadioButtonId()).isEqualTo(99); 24 } 25 26 @Test 27 public void check_shouldCallOnCheckedChangeListener() throws Exception { 28 RadioGroup radioGroup = new RadioGroup(RuntimeEnvironment.application); 29 TestOnCheckedChangeListener listener = new TestOnCheckedChangeListener(); 30 radioGroup.setOnCheckedChangeListener(listener); 31 32 radioGroup.check(BUTTON_ID); 33 34 assertEquals(Arrays.asList(BUTTON_ID), listener.onCheckedChangedCheckedIds); 35 assertEquals(Arrays.asList(radioGroup), listener.onCheckedChangedGroups); 36 } 37 38 @Test 39 public void clearCheck_shouldCallOnCheckedChangeListenerTwice() throws Exception { 40 RadioGroup radioGroup = new RadioGroup(RuntimeEnvironment.application); 41 TestOnCheckedChangeListener listener = new TestOnCheckedChangeListener(); 42 43 radioGroup.check(BUTTON_ID); 44 radioGroup.setOnCheckedChangeListener(listener); 45 radioGroup.clearCheck(); 46 47 assertEquals(Arrays.asList(-1), listener.onCheckedChangedCheckedIds); 48 assertEquals(Arrays.asList(radioGroup), listener.onCheckedChangedGroups); 49 } 50 51 private static class TestOnCheckedChangeListener implements RadioGroup.OnCheckedChangeListener { 52 public ArrayList<RadioGroup> onCheckedChangedGroups = new ArrayList<>(); 53 public ArrayList<Integer> onCheckedChangedCheckedIds = new ArrayList<>(); 54 55 @Override 56 public void onCheckedChanged(RadioGroup group, int checkedId) { 57 onCheckedChangedGroups.add(group); 58 onCheckedChangedCheckedIds.add(checkedId); 59 } 60 } 61 } 62