package org.robolectric.shadows; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RuntimeEnvironment; import org.robolectric.TestRunners; import static android.content.ClipboardManager.OnPrimaryClipChangedListener; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; @RunWith(TestRunners.MultiApiSelfTest.class) public class ShadowClipboardManagerTest { private ClipboardManager clipboardManager; @Before public void setUp() throws Exception { clipboardManager = (ClipboardManager) RuntimeEnvironment.application.getSystemService(Context.CLIPBOARD_SERVICE); } @Test public void shouldStoreText() throws Exception { clipboardManager.setText("BLARG!!!"); assertThat(clipboardManager.getText().toString()).isEqualTo("BLARG!!!"); } @Test public void shouldNotHaveTextIfTextIsNull() throws Exception { clipboardManager.setText(null); assertThat(clipboardManager.hasText()).isFalse(); } @Test public void shouldNotHaveTextIfTextIsEmpty() throws Exception { clipboardManager.setText(""); assertThat(clipboardManager.hasText()).isFalse(); } @Test public void shouldHaveTextIfEmptyString() throws Exception { clipboardManager.setText(" "); assertThat(clipboardManager.hasText()).isTrue(); } @Test public void shouldHaveTextIfString() throws Exception { clipboardManager.setText("BLARG"); assertThat(clipboardManager.hasText()).isTrue(); } @Test public void shouldStorePrimaryClip() { ClipData clip = ClipData.newPlainText(null, "BLARG?"); clipboardManager.setPrimaryClip(clip); assertThat(clipboardManager.getPrimaryClip()).isEqualTo(clip); } @Test public void shouldNotHaveTextIfPrimaryClipIsNull() throws Exception { clipboardManager.setPrimaryClip(null); assertThat(clipboardManager.hasText()).isFalse(); } @Test public void shouldNotHaveTextIfPrimaryClipIsEmpty() throws Exception { clipboardManager.setPrimaryClip(ClipData.newPlainText(null, "")); assertThat(clipboardManager.hasText()).isFalse(); } @Test public void shouldHaveTextIfEmptyPrimaryClip() throws Exception { clipboardManager.setPrimaryClip(ClipData.newPlainText(null, " ")); assertThat(clipboardManager.hasText()).isTrue(); } @Test public void shouldHaveTextIfPrimaryClip() { clipboardManager.setPrimaryClip(ClipData.newPlainText(null, "BLARG?")); assertThat(clipboardManager.hasText()).isTrue(); } @Test public void shouldHavePrimaryClipIfText() { clipboardManager.setText("BLARG?"); assertThat(clipboardManager.hasPrimaryClip()).isTrue(); } @Test public void shouldFireListeners() { OnPrimaryClipChangedListener listener = mock(OnPrimaryClipChangedListener.class); clipboardManager.addPrimaryClipChangedListener(listener); clipboardManager.setPrimaryClip(ClipData.newPlainText(null, "BLARG?")); verify(listener).onPrimaryClipChanged(); clipboardManager.removePrimaryClipChangedListener(listener); clipboardManager.setPrimaryClip(ClipData.newPlainText(null, "BLARG?")); verifyNoMoreInteractions(listener); } }