Skip to content

Commit

Permalink
Add test for DirectionFragment and rotation in EasyEdit modes
Browse files Browse the repository at this point in the history
  • Loading branch information
simonpoole committed May 22, 2024
1 parent 8315e70 commit a9b6773
Show file tree
Hide file tree
Showing 3 changed files with 241 additions and 7 deletions.
39 changes: 35 additions & 4 deletions src/androidTest/java/de/blau/android/easyedit/NodeTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.util.HashMap;
import java.util.List;

import org.junit.After;
Expand All @@ -28,6 +29,7 @@
import de.blau.android.osm.Node;
import de.blau.android.osm.OsmElement;
import de.blau.android.osm.StorageDelegator;
import de.blau.android.osm.Tags;
import de.blau.android.osm.Way;
import de.blau.android.prefs.AdvancedPrefDatabase;
import de.blau.android.prefs.Preferences;
Expand Down Expand Up @@ -91,7 +93,7 @@ public void selectNode() {
Node node = (Node) App.getDelegator().getOsmElement(Node.NAME, 3465444349L);
assertNotNull(node);
TestUtils.clickAtCoordinates(device, map, node.getLon(), node.getLat(), true);
TestUtils.clickAwayTip(device, context);
TestUtils.clickAwayTip(device, context);
assertTrue(TestUtils.clickTextContains(device, "Toilets", true, 5000));
node = App.getLogic().getSelectedNode();
assertNotNull(node);
Expand Down Expand Up @@ -121,7 +123,7 @@ public void selectNode() {
@Test
public void dragNode() {
TestUtils.clickAtCoordinates(device, map, 8.38782, 47.390339, true);
TestUtils.clickAwayTip(device, context);
TestUtils.clickAwayTip(device, context);
assertTrue(TestUtils.clickTextContains(device, "Toilets", true, 5000));
Node node = App.getLogic().getSelectedNode();
assertNotNull(node);
Expand Down Expand Up @@ -164,7 +166,7 @@ public void unjoinMergeWays() {
assertEquals(OsmElement.STATE_UNCHANGED, unjoinedWay.getState());

TestUtils.clickAtCoordinates(device, map, 8.3874964, 47.3884769, false);
TestUtils.clickAwayTip(device, context);
TestUtils.clickAwayTip(device, context);
assertTrue(TestUtils.clickTextContains(device, false, " #633468419", false)); // the first node in the list
assertTrue(TestUtils.clickMenuButton(device, context.getString(R.string.menu_merge), false, true));

Expand Down Expand Up @@ -192,7 +194,7 @@ public void unjoinMergeNodes() {
assertEquals(apiNodeCount + 3, delegator.getApiNodeCount());

TestUtils.clickAtCoordinates(device, map, 8.3866386, 47.3904394, false);
TestUtils.clickAwayTip(device, context);
TestUtils.clickAwayTip(device, context);
assertTrue(TestUtils.clickTextContains(device, false, " #-2221", false)); // the first node in the list
assertTrue(TestUtils.clickMenuButton(device, context.getString(R.string.menu_merge), false, true));

Expand Down Expand Up @@ -241,4 +243,33 @@ public void appendWithMenu() {
assertTrue(TestUtils.findText(device, false, context.getString(R.string.actionmode_createpath)));
TestUtils.clickButton(device, device.getCurrentPackageName() + ":id/simpleButton", true);
}

/**
* Select node, set direction tag, rotate
*/
// @SdkSuppress(minSdkVersion = 26)
@Test
public void rotate() {
TestUtils.zoomToLevel(device, main, 21);
TestUtils.clickAtCoordinates(device, map, 8.3881577, 47.3886924, true);
assertTrue(TestUtils.findText(device, false, context.getString(R.string.actionmode_nodeselect)));
Node node = App.getLogic().getSelectedNode();
assertNotNull(node);
java.util.Map<String, String> tags = new HashMap<>();
tags.put("traffic_sign", "stop");
tags.put(Tags.KEY_DIRECTION, "90");
App.getLogic().setTags(main, node, tags);
main.getEasyEditManager().invalidate();
if (!TestUtils.clickMenuButton(device, context.getString(R.string.menu_rotate), false, false)) {
TestUtils.clickOverflowButton(device);
TestUtils.clickText(device, false, context.getString(R.string.menu_rotate), false, false);
}
assertTrue(TestUtils.findText(device, false, context.getString(R.string.actionmode_rotate)));
TestUtils.drag(device, map, 8.3882867, 47.38887072, 8.3882853, 47.3886022, true, 100);

TestUtils.clickButton(device, device.getCurrentPackageName() + ":id/simpleButton", true);
assertTrue(TestUtils.findText(device, false, context.getString(R.string.actionmode_nodeselect)));

assertEquals(205, Integer.parseInt(node.getTagWithKey(Tags.KEY_DIRECTION)), 5);
}
}
69 changes: 69 additions & 0 deletions src/androidTest/java/de/blau/android/easyedit/RelationTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,15 @@
import de.blau.android.Map;
import de.blau.android.R;
import de.blau.android.TestUtils;
import de.blau.android.osm.Node;
import de.blau.android.osm.OsmElement;
import de.blau.android.osm.Relation;
import de.blau.android.osm.RelationMember;
import de.blau.android.osm.Tags;
import de.blau.android.osm.Way;
import de.blau.android.prefs.AdvancedPrefDatabase;
import de.blau.android.prefs.Preferences;
import de.blau.android.presets.Preset;
import de.blau.android.propertyeditor.PropertyEditorActivity;
import de.blau.android.propertyeditor.PropertyEditorTest;

Expand Down Expand Up @@ -174,6 +176,73 @@ public void createRelation() {
assertTrue(TestUtils.clickMenuButton(device, "Delete", false, true));
}

/**
* Create a multipolygon, rotate it
*/
// @SdkSuppress(minSdkVersion = 26)
@Test
public void rotateMultipolygon() {
map.getDataLayer().setVisible(true);
TestUtils.unlock(device);
TestUtils.clickAwayTip(device, main);
TestUtils.zoomToLevel(device, main, 22);
// split building first
TestUtils.clickAtCoordinates(device, map, 8.3882060, 47.3885768, true);
TestUtils.clickAwayTip(device, main);
assertTrue(TestUtils.findText(device, false, context.getString(R.string.actionmode_wayselect)));
assertTrue(TestUtils.clickMenuButton(device, "Split", false, true));
TestUtils.clickAwayTip(device, context);
assertTrue(TestUtils.findText(device, false, context.getString(R.string.actionmode_closed_way_split_1)));
TestUtils.clickAtCoordinates(device, map, 8.3881251, 47.3885077, true);
assertTrue(TestUtils.findText(device, false, context.getString(R.string.actionmode_closed_way_split_2)));
TestUtils.clickAtCoordinates(device, map, 8.3881577, 47.3886924, true);
assertTrue(TestUtils.findText(device, false, context.getString(R.string.actionmode_multiselect)));

assertTrue(TestUtils.clickOverflowButton(device));
TestUtils.scrollTo(context.getString(R.string.menu_relation), false);
assertTrue(TestUtils.clickText(device, false, context.getString(R.string.menu_relation), true, false));

assertTrue(TestUtils.findText(device, false, context.getString(R.string.select_relation_type_title), 2000));
TestUtils.scrollTo("Multipolygon", false);
assertTrue(TestUtils.clickText(device, false, "Multipolygon", true, false));

assertTrue(TestUtils.findText(device, false, context.getString(R.string.menu_relation), 2000));

TestUtils.sleep(3000);

TestUtils.clickButton(device, device.getCurrentPackageName() + ":id/simpleButton", true);

assertTrue(TestUtils.findText(device, false, context.getString(R.string.move_outer_tags_title), 2000));
TestUtils.clickButton(device, "android:id/button1", true);

assertTrue(TestUtils.findText(device, false, "Multipolygon", 2000));
TestUtils.clickHome(device, true);

assertTrue(TestUtils.findText(device, false, context.getString(R.string.actionmode_relationselect), 2000));
TestUtils.sleep();
List<Relation> relations = App.getLogic().getSelectedRelations();
assertNotNull(relations);
assertEquals(1, relations.size());
Relation relation = relations.get(0);
Way way = (Way) relation.getMembers().get(0).getElement();
Node n0 = way.getFirstNode();

assertEquals(83881251, n0.getLon());
assertEquals(473885077, n0.getLat());
if (!TestUtils.clickMenuButton(device, context.getString(R.string.menu_rotate), false, false)) {
TestUtils.clickOverflowButton(device);
TestUtils.clickText(device, false, context.getString(R.string.menu_rotate), false, false);
}
assertTrue(TestUtils.findText(device, false, context.getString(R.string.actionmode_rotate)));
TestUtils.drag(device, map, 8.3882867, 47.38887072, 8.3882853, 47.3886022, true, 100);

TestUtils.clickButton(device, device.getCurrentPackageName() + ":id/simpleButton", true);
assertTrue(TestUtils.findText(device, false, context.getString(R.string.actionmode_relationselect)));

assertEquals(83882342, n0.getLon(), 1000);
assertEquals(473890641, n0.getLat(), 1000);
}

/**
* Create way, create multipolygon, check roles
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.TreeMap;
import java.util.concurrent.CountDownLatch;
Expand Down Expand Up @@ -180,8 +181,6 @@ public void newNode() {
Logic logic = App.getLogic();
Map map = main.getMap();
logic.setZoom(map, 20);
float tolerance = DataStyle.getCurrent().getWayToleranceValue();
System.out.println("Tolerance " + tolerance);

// create a relation for testing
Relation r = logic.createRelation(main, Tags.VALUE_ROUTE, new ArrayList<>());
Expand Down Expand Up @@ -230,6 +229,142 @@ public void newNode() {
assertEquals(1, parents.size());
assertEquals(r, parents.get(0));
}

/**
* Add set a direction value on a new node
*/
@Test
public void nodeWithDirection1() {
Logic logic = App.getLogic();
Map map = main.getMap();
logic.setZoom(map, 20);

logic.setSelectedWay(null);
logic.setSelectedNode(null);
logic.setSelectedRelation(null);
try {
logic.performAdd(main, 1000.0f, 0.0f);
} catch (OsmIllegalOperationException e1) {
fail(e1.getMessage());
}

Node n = logic.getSelectedNode();
assertNotNull(n);

main.performTagEdit(n, null, false, false);
waitForPropertyEditor();
assertTrue(TestUtils.clickText(device, true, main.getString(R.string.tag_menu_preset), false, false));
boolean found = TestUtils.clickText(device, true, getTranslatedPresetGroupName(main, "Highways"), true, false);
assertTrue(found);
found = TestUtils.clickText(device, true, getTranslatedPresetGroupName(main, "Waypoints"), true, false);
assertTrue(found);
found = TestUtils.clickText(device, true, getTranslatedPresetItemName(main, "Traffic sign"), true, true);
assertTrue(found);
UiObject2 direction = null;
try {
direction = getField(device, "For traffic direction", 1);
} catch (UiObjectNotFoundException e) {
fail();
}
assertNotNull(direction);
assertEquals("Type or tap for values", direction.getText());
direction.clickAndWait(Until.newWindow(), 2000);
TestUtils.clickText(device, true, main.getString(R.string.save), true, false);
TestUtils.clickHome(device, true);
try {
assertTrue(Integer.parseInt(direction.getText()) >= 0);
} catch (NumberFormatException nfex) {
fail(nfex.getMessage());
}
}

/**
* Add set a direction value on a new node
*/
@Test
public void nodeWithDirection2() {
Logic logic = App.getLogic();
Map map = main.getMap();
logic.setZoom(map, 20);

logic.setSelectedWay(null);
logic.setSelectedNode(null);
logic.setSelectedRelation(null);
try {
logic.performAdd(main, 1000.0f, 0.0f);
} catch (OsmIllegalOperationException e1) {
fail(e1.getMessage());
}

Node n = logic.getSelectedNode();
assertNotNull(n);

main.performTagEdit(n, null, false, false);
waitForPropertyEditor();
assertTrue(TestUtils.clickText(device, true, main.getString(R.string.tag_menu_preset), false, false));
boolean found = TestUtils.clickText(device, true, getTranslatedPresetGroupName(main, "Highways"), true, false);
assertTrue(found);
found = TestUtils.clickText(device, true, getTranslatedPresetGroupName(main, "Waypoints"), true, false);
assertTrue(found);
found = TestUtils.clickText(device, true, getTranslatedPresetItemName(main, "Traffic sign"), true, true);
assertTrue(found);
UiObject2 direction = null;
try {
direction = getField(device, "For traffic direction", 1);
} catch (UiObjectNotFoundException e) {
fail();
}
assertNotNull(direction);
assertEquals("Type or tap for values", direction.getText());
direction.clickAndWait(Until.newWindow(), 2000);
TestUtils.clickText(device, true, "Forward", false, false);
TestUtils.clickText(device, true, main.getString(R.string.save), true, false);
TestUtils.clickHome(device, true);
assertEquals("forward", direction.getText());
}

@Test
public void nodeWithDirection3() {
Logic logic = App.getLogic();
Map map = main.getMap();
logic.setZoom(map, 20);

logic.setSelectedWay(null);
logic.setSelectedNode(null);
logic.setSelectedRelation(null);
try {
logic.performAdd(main, 1000.0f, 0.0f);
} catch (OsmIllegalOperationException e1) {
fail(e1.getMessage());
}

Node n = logic.getSelectedNode();
assertNotNull(n);
java.util.Map<String,String> tags = new HashMap<>();
tags.put("traffic_sign", "stop");
tags.put("direction", "forward");
logic.setTags(main, n, tags);

main.performTagEdit(n, null, false, false);
waitForPropertyEditor();
UiObject2 direction = null;
try {
direction = getField(device, "For traffic direction", 1);
} catch (UiObjectNotFoundException e) {
fail();
}
assertNotNull(direction);
assertEquals("forward", direction.getText());
direction.clickAndWait(Until.newWindow(), 2000);
TestUtils.clickText(device, true, "Forward", false, false);
TestUtils.clickText(device, true, main.getString(R.string.save), true, false);
TestUtils.clickHome(device, true);
try {
assertTrue(Integer.parseInt(direction.getText()) >= 0);
} catch (NumberFormatException nfex) {
fail(nfex.getMessage());
}
}

/**
* Check that we moan if a duplicate key is added
Expand Down Expand Up @@ -292,7 +427,6 @@ public void duplicateKey() {
}
TestUtils.clickHome(device, true);
assertTrue(n.hasTag("key", "value"));

}

/**
Expand Down

0 comments on commit a9b6773

Please sign in to comment.