/*
* Copyright (C) 2013 Square, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.squareup.picasso;
import android.content.res.Resources;
import java.io.IOException;
import okio.Buffer;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricGradleTestRunner;
import static com.squareup.picasso.TestUtils.RESOURCE_ID_1;
import static com.squareup.picasso.TestUtils.RESOURCE_ID_URI;
import static com.squareup.picasso.TestUtils.RESOURCE_TYPE_URI;
import static com.squareup.picasso.TestUtils.URI_1;
import static com.squareup.picasso.TestUtils.mockPackageResourceContext;
import static com.squareup.picasso.Utils.createKey;
import static com.squareup.picasso.Utils.isWebPFile;
import static org.fest.assertions.api.Assertions.assertThat;
@RunWith(RobolectricGradleTestRunner.class)
public class UtilsTest {
@Test public void matchingRequestsHaveSameKey() throws Exception {
Request request = new Request.Builder(URI_1).build();
String key1 = createKey(request);
String key2 = createKey(request);
assertThat(key1).isEqualTo(key2);
Transformation t1 = new TestTransformation("foo", null);
Transformation t2 = new TestTransformation("foo", null);
Request requestTransform1 = new Request.Builder(URI_1).transform(t1).build();
Request requestTransform2 = new Request.Builder(URI_1).transform(t2).build();
String single1 = createKey(requestTransform1);
String single2 = createKey(requestTransform2);
assertThat(single1).isEqualTo(single2);
Transformation t3 = new TestTransformation("foo", null);
Transformation t4 = new TestTransformation("bar", null);
Request requestTransform3 = new Request.Builder(URI_1).transform(t3).transform(t4).build();
Request requestTransform4 = new Request.Builder(URI_1).transform(t3).transform(t4).build();
String double1 = createKey(requestTransform3);
String double2 = createKey(requestTransform4);
assertThat(double1).isEqualTo(double2);
Transformation t5 = new TestTransformation("foo", null);
Transformation t6 = new TestTransformation("bar", null);
Request requestTransform5 = new Request.Builder(URI_1).transform(t5).transform(t6).build();
Request requestTransform6 = new Request.Builder(URI_1).transform(t6).transform(t5).build();
String order1 = createKey(requestTransform5);
String order2 = createKey(requestTransform6);
assertThat(order1).isNotEqualTo(order2);
}
@Test public void detectedWebPFile() throws Exception {
assertThat(isWebPFile(new Buffer().writeUtf8("RIFFxxxxWEBP"))).isTrue();
assertThat(isWebPFile(new Buffer().writeUtf8("RIFFxxxxxWEBP"))).isFalse();
assertThat(isWebPFile(new Buffer().writeUtf8("ABCDxxxxWEBP"))).isFalse();
assertThat(isWebPFile(new Buffer().writeUtf8("RIFFxxxxABCD"))).isFalse();
assertThat(isWebPFile(new Buffer().writeUtf8("RIFFxxWEBP"))).isFalse();
}
@Test public void ensureBuilderIsCleared() throws Exception {
Request request1 = new Request.Builder(RESOURCE_ID_URI).build();
Request request2 = new Request.Builder(URI_1).build();
Utils.createKey(request1);
assertThat(Utils.MAIN_THREAD_KEY_BUILDER.length()).isEqualTo(0);
Utils.createKey(request2);
assertThat(Utils.MAIN_THREAD_KEY_BUILDER.length()).isEqualTo(0);
}
@Test public void getResourceById() throws IOException {
Request request = new Request.Builder(RESOURCE_ID_URI).build();
Resources res = Utils.getResources(mockPackageResourceContext(), request);
int id = Utils.getResourceId(res, request);
assertThat(id).isEqualTo(RESOURCE_ID_1);
}
@Test public void getResourceByTypeAndName() throws IOException {
Request request = new Request.Builder(RESOURCE_TYPE_URI).build();
Resources res = Utils.getResources(mockPackageResourceContext(), request);
int id = Utils.getResourceId(res, request);
assertThat(id).isEqualTo(RESOURCE_ID_1);
}
}