package org.robolectric.shadows;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Handler;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.TestRunners;
import static org.assertj.core.api.Assertions.assertThat;
@RunWith(TestRunners.MultiApiSelfTest.class)
public class ShadowContentObserverTest {
private TestContentObserver observer;
@Before
public void setUp() throws Exception {
observer = new TestContentObserver(null);
}
@Test
public void testDispatchChangeBooleanUri() {
assertThat(observer.changed).isFalse();
assertThat(observer.selfChange).isFalse();
assertThat(observer.uri).isNull();
Uri uri = Uri.parse("http://www.somewhere.com");
observer.dispatchChange(true, uri);
assertThat(observer.changed).isTrue();
assertThat(observer.selfChange).isTrue();
assertThat(observer.uri).isSameAs(uri);
}
@Test
public void testDispatchChangeBoolean() {
assertThat(observer.changed).isFalse();
assertThat(observer.selfChange).isFalse();
Uri uri = Uri.parse("http://www.somewhere.com");
observer.dispatchChange(true);
assertThat(observer.changed).isTrue();
assertThat(observer.selfChange).isTrue();
}
private class TestContentObserver extends ContentObserver {
public TestContentObserver(Handler handler) {
super(handler);
}
public boolean changed = false;
public boolean selfChange = false;
public Uri uri = null;
@Override
public void onChange(boolean selfChange) {
changed = true;
this.selfChange = selfChange;
}
@Override
public void onChange(boolean selfChange, Uri uri) {
changed = true;
this.selfChange = selfChange;
this.uri = uri;
}
}
}