• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.robolectric.shadows;
2 
3 import static com.google.common.truth.Truth.assertThat;
4 import static org.junit.Assert.assertEquals;
5 
6 import android.app.Application;
7 import android.view.View;
8 import android.widget.ArrayAdapter;
9 import android.widget.ListView;
10 import android.widget.TextView;
11 import androidx.test.core.app.ApplicationProvider;
12 import androidx.test.ext.junit.runners.AndroidJUnit4;
13 import java.util.ArrayList;
14 import java.util.Collections;
15 import java.util.List;
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.junit.runner.RunWith;
19 import org.robolectric.R;
20 import org.robolectric.Shadows;
21 
22 @RunWith(AndroidJUnit4.class)
23 public class ShadowArrayAdapterTest {
24   private ArrayAdapter<Integer> arrayAdapter;
25   private Application context;
26 
setUp()27   @Before public void setUp() throws Exception {
28     List<Integer> list = new ArrayList<>();
29     list.add(1);
30     list.add(2);
31     list.add(3);
32 
33     context = ApplicationProvider.getApplicationContext();
34     arrayAdapter = new ArrayAdapter<>(context, 0, list);
35   }
36 
37   @Test
verifyContext()38   public void verifyContext() {
39     assertThat(arrayAdapter.getContext()).isSameInstanceAs(context);
40   }
41 
42   @Test
43   @SuppressWarnings("BoxedPrimitiveConstructor")
verifyListContent()44   public void verifyListContent() {
45     assertEquals(3, arrayAdapter.getCount());
46     assertEquals(Integer.valueOf(1), arrayAdapter.getItem(0));
47     assertEquals(Integer.valueOf(2), arrayAdapter.getItem(1));
48     assertEquals(Integer.valueOf(3), arrayAdapter.getItem(2));
49   }
50 
51   @Test
usesTextViewResourceIdToSetTextWithinListItemView()52   public void usesTextViewResourceIdToSetTextWithinListItemView() {
53     ListView parent = new ListView(context);
54     ArrayAdapter<String> arrayAdapter =
55         new ArrayAdapter<>(context, R.layout.main, R.id.title, new String[] {"first value"});
56     View listItemView = arrayAdapter.getView(0, null, parent);
57     TextView titleTextView = listItemView.findViewById(R.id.title);
58     assertEquals("first value", titleTextView.getText().toString());
59   }
60 
61   @Test
hasTheCorrectConstructorResourceIDs()62   public void hasTheCorrectConstructorResourceIDs() {
63     ArrayAdapter<String> arrayAdapter =
64         new ArrayAdapter<>(context, R.id.title, new String[] {"first value"});
65 
66     //this assertion may look a little backwards since R.id.title is labeled
67     //textViewResourceId in the constructor parameter list, but the output is correct.
68     assertThat(Shadows.shadowOf(arrayAdapter).getResourceId()).isEqualTo(R.id.title);
69     assertThat(Shadows.shadowOf(arrayAdapter).getTextViewResourceId()).isNotEqualTo(R.id.title);
70     assertThat(Shadows.shadowOf(arrayAdapter).getTextViewResourceId()).isEqualTo(0);
71 
72     ArrayAdapter<String> arrayAdapter2 = new ArrayAdapter<>(context, R.id.title);
73 
74     //this assertion may look a little backwards since R.id.title is labeled
75     //textViewResourceId in the constructor parameter list, but the output is correct.
76     assertThat(Shadows.shadowOf(arrayAdapter2).getResourceId()).isEqualTo(R.id.title);
77     assertThat(Shadows.shadowOf(arrayAdapter2).getTextViewResourceId()).isNotEqualTo(R.id.title);
78     assertThat(Shadows.shadowOf(arrayAdapter2).getTextViewResourceId()).isEqualTo(0);
79 
80     ArrayAdapter<String> arrayAdapter3 =
81         new ArrayAdapter<>(context, R.id.title, Collections.singletonList("first value"));
82 
83     //this assertion may look a little backwards since R.id.title is labeled
84     //textViewResourceId in the constructor parameter list, but the output is correct.
85     assertThat(Shadows.shadowOf(arrayAdapter3).getResourceId()).isEqualTo(R.id.title);
86     assertThat(Shadows.shadowOf(arrayAdapter3).getTextViewResourceId()).isNotEqualTo(R.id.title);
87     assertThat(Shadows.shadowOf(arrayAdapter3).getTextViewResourceId()).isEqualTo(0);
88   }
89 
90   @Test
shouldClear()91   public void shouldClear() {
92     arrayAdapter.clear();
93     assertEquals(0, arrayAdapter.getCount());
94   }
95 
96   @Test
97   @SuppressWarnings("BoxedPrimitiveConstructor")
test_remove()98   public void test_remove() {
99     Integer firstItem = arrayAdapter.getItem(0);
100     assertEquals(3, arrayAdapter.getCount());
101     assertEquals(Integer.valueOf(1), firstItem);
102 
103     arrayAdapter.remove(firstItem);
104 
105     assertEquals(2, arrayAdapter.getCount());
106     assertEquals(Integer.valueOf(2), arrayAdapter.getItem(0));
107     assertEquals(Integer.valueOf(3), arrayAdapter.getItem(1));
108   }
109 }
110