TextViewTest.java revision 9d1f4261b8e45bd2589eb1b1d9c9ecb8b725ca4d
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)package com.xtremelabs.robolectric.shadows; 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.text.style.URLSpan; 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.view.KeyEvent; 5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)import android.view.inputmethod.EditorInfo; 6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import android.widget.TextView; 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)import com.xtremelabs.robolectric.WithTestDefaultsRunner; 88bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)import org.junit.Test; 98bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)import org.junit.runner.RunWith; 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import java.util.ArrayList; 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuimport java.util.List; 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)import static com.xtremelabs.robolectric.Robolectric.shadowOf; 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)import static java.util.Arrays.asList; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import static org.hamcrest.CoreMatchers.equalTo; 178bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)import static org.hamcrest.CoreMatchers.is; 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import static org.junit.Assert.assertThat; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu@RunWith(WithTestDefaultsRunner.class) 21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)public class TextViewTest { 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) @Test 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public void shouldTriggerTheImeListener() { 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) TextView textView = new TextView(null); 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) TestOnEditorActionListener actionListener = new TestOnEditorActionListener(); 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) textView.setOnEditorActionListener(actionListener); 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) shadowOf(textView).triggerEditorAction(EditorInfo.IME_ACTION_GO); 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) assertThat(actionListener.textView, is(textView)); 31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertThat(actionListener.sentImeId, equalTo(EditorInfo.IME_ACTION_GO)); 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) @Test 3508fd22434aed8d58d4e04bbbc0df2a942440bcc5Bo Liu public void testGetUrls() throws Exception { 3608fd22434aed8d58d4e04bbbc0df2a942440bcc5Bo Liu TextView textView = new TextView(null); 3708fd22434aed8d58d4e04bbbc0df2a942440bcc5Bo Liu textView.setText("here's some text http://google.com/\nblah\thttp://another.com/123?456 blah"); 3808fd22434aed8d58d4e04bbbc0df2a942440bcc5Bo Liu 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) assertThat(urlStringsFrom(textView.getUrls()), equalTo(asList( 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "http://google.com/", 41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "http://another.com/123?456" 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ))); 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 44a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private List<String> urlStringsFrom(URLSpan[] urlSpans) { 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) List<String> urls = new ArrayList<String>(); 47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) for (URLSpan urlSpan : urlSpans) { 48a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) urls.add(urlSpan.getURL()); 498bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) } 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return urls; 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private static class TestOnEditorActionListener implements TextView.OnEditorActionListener { 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private TextView textView; 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private int sentImeId; 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) @Override public boolean onEditorAction(TextView textView, int sentImeId, KeyEvent keyEvent) { 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.textView = textView; 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.sentImeId = sentImeId; 6008fd22434aed8d58d4e04bbbc0df2a942440bcc5Bo Liu return false; 6108fd22434aed8d58d4e04bbbc0df2a942440bcc5Bo Liu } 6208fd22434aed8d58d4e04bbbc0df2a942440bcc5Bo Liu } 6308fd22434aed8d58d4e04bbbc0df2a942440bcc5Bo Liu} 6408fd22434aed8d58d4e04bbbc0df2a942440bcc5Bo Liu