1package com.xtremelabs.robolectric.shadows; 2 3import android.widget.RadioGroup; 4import com.xtremelabs.robolectric.WithTestDefaultsRunner; 5import org.junit.Test; 6import org.junit.runner.RunWith; 7 8import java.util.ArrayList; 9import java.util.Arrays; 10 11import static org.hamcrest.CoreMatchers.equalTo; 12import static org.junit.Assert.assertEquals; 13import static org.junit.Assert.assertThat; 14 15@RunWith(WithTestDefaultsRunner.class) 16public 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