move tests to separate project

This commit is contained in:
Hannes Janetzek
2014-03-29 12:54:12 +01:00
parent f75702a575
commit 2bf5313c2b
7 changed files with 24 additions and 13 deletions

15
vtm-tests/build.gradle Normal file
View File

@@ -0,0 +1,15 @@
apply plugin: 'java'
apply plugin: 'maven'
dependencies {
compile project(':vtm')
testCompile 'junit:junit:4.11'
testCompile 'org.mockito:mockito-all:1.9.5'
testCompile 'org.easytesting:fest-assert-core:2.0M10'
testCompile 'com.squareup.okhttp:mockwebserver:1.5.2'
}
sourceSets {
main.java.srcDirs = ['src']
test.java.srcDirs = ['test']
}

View File

@@ -0,0 +1,97 @@
package org.oscim.tiling.source;
import com.squareup.okhttp.mockwebserver.MockResponse;
import com.squareup.okhttp.mockwebserver.MockWebServer;
import com.squareup.okhttp.mockwebserver.RecordedRequest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.oscim.core.Tile;
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import static org.fest.assertions.api.Assertions.assertThat;
public class OkHttpEngineTest {
private OkHttpEngine engine;
private MockWebServer server;
private MockResponse mockResponse;
@Before
public void setUp() throws Exception {
mockResponse = new MockResponse();
mockResponse.setBody("TEST RESPONSE".getBytes());
server = new MockWebServer();
server.enqueue(mockResponse);
server.play();
engine = new OkHttpEngine(server.getUrl("/tiles/vtm"));
}
@After
public void tearDown() throws Exception {
server.shutdown();
}
@Test
public void shouldNotBeNull() throws Exception {
assertThat(engine).isNotNull();
}
@Test(expected = IllegalArgumentException.class)
public void sendRequest_shouldRejectNullTile() throws Exception {
engine.sendRequest(null, null);
}
@Test
public void sendRequest_shouldAppendXYZToPath() throws Exception {
engine.sendRequest(new OSciMap4TileSource("http://www.example.org/tiles/vtm"),
new Tile(1, 2, new Integer(3).byteValue()));
RecordedRequest request = server.takeRequest();
assertThat(request.getPath()).isEqualTo("/tiles/vtm/3/1/2.vtm");
}
@Test
public void read_shouldReturnResponseStream() throws Exception {
engine.sendRequest(new OSciMap4TileSource("http://www.example.org/tiles/vtm"),
new Tile(1, 2, new Integer(3).byteValue()));
InputStream responseStream = engine.read();
String response = new BufferedReader(new InputStreamReader(responseStream)).readLine();
assertThat(response).isEqualTo("TEST RESPONSE");
}
@Test(expected = IOException.class)
public void close_shouldCloseInputStream() throws Exception {
engine.sendRequest(new OSciMap4TileSource("http://www.example.org/tiles/vtm"),
new Tile(1, 2, new Integer(3).byteValue()));
engine.close();
// Calling read after the stream is closed should throw an exception.
InputStream responseStream = engine.read();
responseStream.read();
}
@Test(expected = IOException.class)
public void requestCompleted_shouldCloseInputStream() throws Exception {
engine.sendRequest(new OSciMap4TileSource("http://www.example.org/tiles/vtm"),
new Tile(1, 2, new Integer(3).byteValue()));
engine.requestCompleted(true);
// Calling read after the stream is closed should throw an exception.
InputStream responseStream = engine.read();
responseStream.read();
}
@Test
public void requestCompleted_shouldReturnValueGiven() throws Exception {
assertThat(engine.requestCompleted(true)).isTrue();
assertThat(engine.requestCompleted(false)).isFalse();
}
}

View File

@@ -0,0 +1,58 @@
package org.oscim.tiling.source;
import com.squareup.okhttp.OkHttpClient;
import org.junit.Before;
import org.junit.Test;
import org.oscim.tiling.ITileDataSource;
import static org.fest.assertions.api.Assertions.assertThat;
public class UrlTileSourceTest {
private UrlTileSource tileSource;
@Before
public void setUp() throws Exception {
tileSource = new TestTileSource("http://example.org/tiles/vtm");
}
@Test
public void shouldNotBeNull() throws Exception {
assertThat(tileSource).isNotNull();
}
@Test
public void shouldUseDefaultHttpEngine() throws Exception {
TestTileDataSource dataSource = (TestTileDataSource) tileSource.getDataSource();
assertThat(dataSource.getConnection()).isInstanceOf(LwHttp.class);
}
@Test
public void shouldUseCustomHttpEngine() throws Exception {
tileSource.setHttpEngine(new OkHttpEngine(tileSource.getUrl()));
TestTileDataSource dataSource = (TestTileDataSource) tileSource.getDataSource();
assertThat(dataSource.getConnection()).isInstanceOf(OkHttpEngine.class);
}
class TestTileSource extends UrlTileSource {
public TestTileSource(String urlString) {
super(urlString);
}
@Override
public ITileDataSource getDataSource() {
return new TestTileDataSource(this, null, getHttpEngine());
}
}
class TestTileDataSource extends UrlTileDataSource {
public TestTileDataSource(UrlTileSource tileSource, ITileDecoder tileDecoder,
HttpEngine conn) {
super(tileSource, tileDecoder, conn);
}
public HttpEngine getConnection() {
return mConn;
}
}
}

View File

@@ -0,0 +1,48 @@
package org.oscim.tiling.source.bitmap;
import static org.fest.assertions.api.Assertions.assertThat;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.source.OkHttpEngine.OkHttpFactory;
import org.oscim.tiling.source.UrlTileDataSource;
public class BitmapTileSourceTest {
private BitmapTileSource tileSource;
@Before
public void setUp() throws Exception {
tileSource = new TestBitmapTileSource("http://tile.openstreetmap.org", 0, 18);
}
@Test
public void shouldNotBeNull() throws Exception {
assertThat(tileSource).isNotNull();
}
@Test
public void shouldUseLwHttp() throws Exception {
LwHttpFactory lwHttp = Mockito.mock(LwHttpFactory.class);
tileSource.setHttpEngine(lwHttp);
ITileDataSource dataSource = tileSource.getDataSource();
dataSource.destroy();
Mockito.verify(lwHttp).close();
}
@Test
public void shouldUseOkHttp() throws Exception {
OkHttpFactory okHttp = Mockito.mock(OkHttpFactory.class);
tileSource.setHttpEngine(okHttp);
UrlTileDataSource dataSource = (UrlTileDataSource) tileSource.getDataSource();
dataSource.destroy();
//Mockito.verify(dataSource.mConn).close();
}
class TestBitmapTileSource extends BitmapTileSource {
public TestBitmapTileSource(String url, int zoomMin, int zoomMax) {
super(url, zoomMin, zoomMax);
}
}
}

View File

@@ -0,0 +1,42 @@
package org.oscim.tiling.source.oscimap4;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.source.LwHttp;
import org.oscim.tiling.source.OkHttpEngine;
import static org.fest.assertions.api.Assertions.assertThat;
public class OSciMap4TileSourceTest {
private OSciMap4TileSource tileSource;
@Before
public void setUp() throws Exception {
tileSource = new OSciMap4TileSource("http://www.example.org/tiles/vtm");
}
@Test
public void shouldNotBeNull() throws Exception {
assertThat(tileSource).isNotNull();
}
@Test
public void shouldUseLwHttp() throws Exception {
LwHttp lwHttp = Mockito.mock(LwHttp.class);
tileSource.setHttpEngine(lwHttp);
ITileDataSource dataSource = tileSource.getDataSource();
dataSource.destroy();
Mockito.verify(lwHttp).close();
}
@Test
public void shouldUseOkHttp() throws Exception {
OkHttpEngine okHttp = Mockito.mock(OkHttpEngine.class);
tileSource.setHttpEngine(okHttp);
ITileDataSource dataSource = tileSource.getDataSource();
dataSource.destroy();
Mockito.verify(okHttp).close();
}
}