Home | History | Annotate | Download | only in shadows
      1 package org.robolectric.shadows;
      2 
      3 import static org.junit.Assert.assertEquals;
      4 import static org.robolectric.Shadows.shadowOf;
      5 
      6 import android.content.Context;
      7 import android.view.View;
      8 import android.widget.LinearLayout;
      9 import android.widget.TextView;
     10 import org.junit.Before;
     11 import org.junit.Test;
     12 import org.junit.runner.RunWith;
     13 import org.robolectric.RobolectricTestRunner;
     14 import org.robolectric.RuntimeEnvironment;
     15 
     16 @RunWith(RobolectricTestRunner.class)
     17 public class ViewInnerTextTest {
     18   private Context context;
     19 
     20   @Before
     21   public void setUp() throws Exception {
     22     context = RuntimeEnvironment.application;
     23   }
     24 
     25   @Test
     26   public void testInnerText() throws Exception {
     27     LinearLayout top = new LinearLayout(context);
     28     top.addView(textView("blah"));
     29     top.addView(new View(context));
     30     top.addView(textView("a b c"));
     31 
     32     LinearLayout innerLayout = new LinearLayout(context);
     33     top.addView(innerLayout);
     34 
     35     innerLayout.addView(textView("d e f"));
     36     innerLayout.addView(textView("g h i"));
     37     innerLayout.addView(textView(""));
     38     innerLayout.addView(textView(null));
     39     innerLayout.addView(textView("jkl!"));
     40 
     41     top.addView(textView("mnop"));
     42 
     43     assertEquals("blah a b c d e f g h i jkl! mnop", shadowOf(top).innerText());
     44   }
     45 
     46   @Test
     47   public void shouldOnlyIncludeViewTextViewsText() throws Exception {
     48     LinearLayout top = new LinearLayout(context);
     49     top.addView(textView("blah", View.VISIBLE));
     50     top.addView(textView("blarg", View.GONE));
     51     top.addView(textView("arrg", View.INVISIBLE));
     52 
     53     assertEquals("blah", shadowOf(top).innerText());
     54   }
     55 
     56   @Test
     57   public void shouldNotPrefixBogusSpaces() throws Exception {
     58     LinearLayout top = new LinearLayout(context);
     59     top.addView(textView("blarg", View.GONE));
     60     top.addView(textView("arrg", View.INVISIBLE));
     61     top.addView(textView("blah", View.VISIBLE));
     62 
     63     assertEquals("blah", shadowOf(top).innerText());
     64   }
     65 
     66   private TextView textView(String text) {
     67     return textView(text, View.VISIBLE);
     68   }
     69 
     70   private TextView textView(String text, int visibility) {
     71     TextView textView = new TextView(context);
     72     textView.setText(text);
     73     textView.setVisibility(visibility);
     74     return textView;
     75   }
     76 }
     77