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