package com.crossbow.volley;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.volley.VolleyError;
import com.crossbow.BuildConfig;
import com.crossbow.volley.mock.MockFileRequest;
import com.crossbow.volley.mock.MockFileStack;
import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.util.Collection;
import java.util.concurrent.CountDownLatch;
import static junit.framework.Assert.*;
/**
*/
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class)
public class FileQueueTest {
FileQueue fileQueue;
CountDownLatch countDownLatch;
@Before
public void setUp() throws Exception {
MockFileStack mockFileStack = new MockFileStack();
MockFileDelivery mockFileDelivery = new MockFileDelivery(true);
fileQueue = new FileQueue(mockFileDelivery, mockFileStack);
}
@Test
public void testFileReadRequest() throws InterruptedException {
MockFileRequest fileRequest = new MockFileRequest("tests/res/test-file.txt", new FileResponse.Listener<String>() {
@Override
public void onResponse(String response) {
countDownLatch.countDown();
assertEquals("mockdatarequest", response);
}
}, errorListener);
countDownLatch = new CountDownLatch(1);
fileQueue.start();
fileQueue.add(fileRequest);
countDownLatch.await();
}
@Test
public void testFileRequestCancel() throws InterruptedException {
MockFileRequest request1 = new MockFileRequest("123", null, null);
request1.setTag("test_tag");
MockFileRequest request2 = new MockFileRequest("456", null,null);
request2.setTag("test_tag_2");
MockFileRequest request3 = new MockFileRequest("789",null, null);
request3.setTag("test_tag");
fileQueue.add(request1);
fileQueue.add(request2);
fileQueue.add(request3);
fileQueue.cancelAll("test_tag");
assertTrue(request1.isCanceled());
assertFalse(request2.isCanceled());
assertTrue(request3.isCanceled());
}
@Test
public void testFileBlocking() {
MockFileRequest request1 = new MockFileRequest("123", null, null);
request1.setTag("test_tag");
MockFileRequest request2 = new MockFileRequest("123", null, null);
request2.setTag("test_tag_2");
MockFileRequest request3 = new MockFileRequest("123",null, null);
request3.setTag("test_tag");
fileQueue.add(request1);
fileQueue.add(request2);
fileQueue.add(request3);
Collection<FileRequest<?>> requestQueue = fileQueue.getRequestQueue();
assertTrue(requestQueue.contains(request1));
assertFalse(requestQueue.contains(request2));
assertFalse(requestQueue.contains(request3));
}
@After
public void tearDown() throws Exception {
fileQueue.stop();
}
private FileResponse.ErrorListener errorListener = new FileResponse.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
countDownLatch.countDown();
}
};
}