/*
* WARNING, All test cases exist in osmdroid-android-it/src/main/java (maven project)
*
* During build time (with gradle), these tests are copied from osmdroid-android-it to OpenStreetMapViewer/src/androidTest/java
* DO NOT Modify files in OpenSteetMapViewer/src/androidTest. You will loose your changes when building!
*
*/
package org.osmdroid.views;
import org.osmdroid.StarterMapActivity;
import org.osmdroid.StarterMapFragment;
import org.osmdroid.R;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.Projection;
import org.osmdroid.tileprovider.util.Counters;
import android.graphics.Point;
import android.test.ActivityInstrumentationTestCase2;
import android.test.UiThreadTest;
import android.support.v4.app.FragmentManager;
/**
* @author Neil Boyd
*
*/
public class OpenStreetMapViewTest extends ActivityInstrumentationTestCase2<StarterMapActivity> {
public OpenStreetMapViewTest() {
super(StarterMapActivity.class);
Counters.reset();
}
private MapView mOpenStreetMapView;
@Override
protected void setUp() throws Exception {
FragmentManager fm = getActivity().getSupportFragmentManager();
StarterMapFragment fragment = (StarterMapFragment)fm.findFragmentById(R.id.map_container);
mOpenStreetMapView = fragment.getMapView();
super.setUp();
}
/**
* This test will check whether calling setCenter() will position the maps so the location is
* at the center of the screen.
*/
@UiThreadTest
public void test_toMapPixels_0_0() {
final GeoPoint zz = new GeoPoint(0, 0);
mOpenStreetMapView.getController().setCenter(zz);
mOpenStreetMapView.getController().setZoom(8);
final Projection projection = mOpenStreetMapView.getProjection();
final Point point = projection.toPixels(zz, null);
final int width_2 = mOpenStreetMapView.getWidth() / 2;
final int height_2 = mOpenStreetMapView.getHeight() / 2;
assertTrue("MapView does not have layout. Make sure device is unlocked.", width_2 > 0 && height_2 > 0);
final Point expected = new Point(width_2, height_2);
assertEquals("TODO describe test", expected, point);
}
/**
* This test was retrospectively added based on current implementation. TODO a manual
* calculation and verify that this test gives the correct result.
*
* This test was commented out because it's is screen dpi dependent when the map view is set to scale
* tiles to screen dpi, which is now on by default across the example app
@UiThreadTest
public void test_toMapPixels_Hannover() {
final GeoPoint hannover = new GeoPoint(52370816, 9735936);
mOpenStreetMapView.getController().setCenter(hannover);
mOpenStreetMapView.getController().setZoom(8);
final Projection projection = mOpenStreetMapView.getProjection();
final Point point = projection.toPixels(hannover, null);
projection.toMercatorPixels(point.x, point.y, point);
final Point expected = new Point(51811, 32306);
assertEquals("TODO describe test", expected, point);
} */
}