Home | History | Annotate | Download | only in shadows
      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