18a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackersederpackage com.xtremelabs.robolectric.shadows;
28a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder
38a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackersederimport static org.hamcrest.CoreMatchers.equalTo;
48a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackersederimport static org.hamcrest.CoreMatchers.is;
58a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackersederimport static org.hamcrest.CoreMatchers.notNullValue;
68a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackersederimport static org.junit.Assert.assertThat;
78a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder
88a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackersederimport java.util.Map;
98a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder
108a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackersederimport org.junit.Before;
118a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackersederimport org.junit.Test;
128a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackersederimport org.junit.runner.RunWith;
138a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder
148a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackersederimport android.content.ContentProviderOperation;
158a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackersederimport android.content.ContentProviderOperation.Builder;
168a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder
178a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackersederimport com.xtremelabs.robolectric.Robolectric;
188a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackersederimport com.xtremelabs.robolectric.WithTestDefaultsRunner;
198a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder
208a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder@RunWith(WithTestDefaultsRunner.class)
218a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackersederpublic class ContentProviderOperationBuilderTest {
228a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder    private Builder builder;
238a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder    private ShadowContentProviderOperationBuilder shadowBuilder;
248a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder
258a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder    @Before
268a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder    public void before() {
278a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder        builder = Robolectric.newInstanceOf(Builder.class);
288a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder        shadowBuilder = Robolectric.shadowOf(builder);
298a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder    }
308a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder
318a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder    @Test
328a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder    public void withValue() {
338a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder        builder
348a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder            .withValue("stringTest", "bar")
358a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder            .withValue("intTest", 5)
368a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder            .withValue("longTest", 10L);
378a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder
388a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder        Map<String, Object> values = shadowBuilder.getValues();
398a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder        assertThat(values.size(), is(3));
408a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder        assertThat(values.get("stringTest").toString(), equalTo("bar"));
418a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder        assertThat(Integer.parseInt(values.get("intTest").toString()), equalTo(5));
428a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder        assertThat(Long.parseLong(values.get("longTest").toString()), equalTo(10L));
438a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder    }
448a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder
458a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder    @Test
468a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder    public void withSelection() {
478a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder        builder
488a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder            .withSelection("first", new String[] { "a", "b" })
498a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder            .withSelection("second", new String[] { "c", "d" });
508a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder
518a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder        Map<String, String[]> selections = shadowBuilder.getSelections();
528a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder        assertThat(selections.size(), is(2));
538a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder        assertThat(selections.get("first"), equalTo(new String[] { "a", "b" }));
548a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder        assertThat(selections.get("second"), equalTo(new String[] { "c", "d" }));
558a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder    }
568a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder
578a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder    @Test
589f1a5eff8521170f104c95f2fbdb43ffd31f68f0Christian Rackerseder    public void withValueBackReference() {
599f1a5eff8521170f104c95f2fbdb43ffd31f68f0Christian Rackerseder        builder.withValueBackReference("foo", 5);
609f1a5eff8521170f104c95f2fbdb43ffd31f68f0Christian Rackerseder
619f1a5eff8521170f104c95f2fbdb43ffd31f68f0Christian Rackerseder        int backReference = shadowBuilder.getWithValueBackReference("foo");
629f1a5eff8521170f104c95f2fbdb43ffd31f68f0Christian Rackerseder        assertThat(backReference, is(5));
639f1a5eff8521170f104c95f2fbdb43ffd31f68f0Christian Rackerseder    }
649f1a5eff8521170f104c95f2fbdb43ffd31f68f0Christian Rackerseder
659f1a5eff8521170f104c95f2fbdb43ffd31f68f0Christian Rackerseder    @Test
668a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder    public void build() {
678a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder        ContentProviderOperation operation = builder.build();
688a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder        assertThat(operation, notNullValue());
698a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder    }
708a7f9095c36492812d268ee4d2a1745a542d6434Christian Rackerseder}