184c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Moorepackage com.xtremelabs.robolectric.shadows;
284c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Moore
384c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Mooreimport android.widget.RadioGroup;
484c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Mooreimport com.xtremelabs.robolectric.WithTestDefaultsRunner;
584c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Mooreimport org.junit.Test;
684c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Mooreimport org.junit.runner.RunWith;
784c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Moore
88ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwinimport java.util.ArrayList;
98ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwinimport java.util.Arrays;
108ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin
1184c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Mooreimport static org.hamcrest.CoreMatchers.equalTo;
128ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwinimport static org.junit.Assert.assertEquals;
1384c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Mooreimport static org.junit.Assert.assertThat;
1484c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Moore
1584c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Moore@RunWith(WithTestDefaultsRunner.class)
1684c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Moorepublic class RadioGroupTest {
178ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin    private static final int BUTTON_ID = 3245;
188ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin
1984c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Moore    @Test
2084c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Moore    public void checkedRadioButtonId() throws Exception {
2184c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Moore        RadioGroup radioGroup = new RadioGroup(null);
2284c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Moore        assertThat(radioGroup.getCheckedRadioButtonId(), equalTo(-1));
2384c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Moore        radioGroup.check(99);
2484c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Moore        assertThat(radioGroup.getCheckedRadioButtonId(), equalTo(99));
2584c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Moore    }
268ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin
278ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin    @Test
288ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin    public void check_shouldCallOnCheckedChangeListener() throws Exception {
298ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        RadioGroup radioGroup = new RadioGroup(null);
308ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        TestOnCheckedChangeListener listener = new TestOnCheckedChangeListener();
318ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        radioGroup.setOnCheckedChangeListener(listener);
328ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin
338ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        radioGroup.check(BUTTON_ID);
348ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin
358ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        assertEquals(Arrays.asList(BUTTON_ID), listener.onCheckedChangedCheckedIds);
368ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        assertEquals(Arrays.asList(radioGroup), listener.onCheckedChangedGroups);
378ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin    }
388ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin
398ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin    @Test
408ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin    public void clearCheck_shouldCallOnCheckedChangeListenerTwice() throws Exception {
418ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        RadioGroup radioGroup = new RadioGroup(null);
428ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        TestOnCheckedChangeListener listener = new TestOnCheckedChangeListener();
438ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin
448ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        radioGroup.check(BUTTON_ID);
458ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        radioGroup.setOnCheckedChangeListener(listener);
468ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        radioGroup.clearCheck();
478ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin
488ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        assertEquals(Arrays.asList(BUTTON_ID, -1), listener.onCheckedChangedCheckedIds);
498ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        assertEquals(Arrays.asList(radioGroup, radioGroup), listener.onCheckedChangedGroups);
508ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin
518ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin    }
528ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin
538ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin    private static class TestOnCheckedChangeListener implements RadioGroup.OnCheckedChangeListener {
548ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        public ArrayList<RadioGroup> onCheckedChangedGroups = new ArrayList<RadioGroup>();
558ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        public ArrayList<Integer> onCheckedChangedCheckedIds = new ArrayList<Integer>();
568ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin
578ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        @Override
588ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        public void onCheckedChanged(RadioGroup group, int checkedId) {
598ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin            onCheckedChangedGroups.add(group);
608ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin            onCheckedChangedCheckedIds.add(checkedId);
618ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin        }
628ad000a99b0143c4579812485ef921dd515b6cc7Aaron VonderHaar & Phil Goodwin    }
6384c8e78264cc160819f32a6006049f87d81c43deDavid Farber & Joe Moore}
64