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