package com.spatialdev.osm.model;
import android.test.InstrumentationTestCase;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import java.io.InputStream;
import java.util.List;
public class ChecksumTest extends InstrumentationTestCase {
private OSMWay way;
private OSMWay way2;
private OSMNode donutHappy;
public void setUp() throws Exception {
super.setUp();
InputStream in = getInstrumentation().getTargetContext().getResources().getAssets().open("test/osm/checksum_way.osm");
OSMDataSet ds = OSMXmlParser.parseFromInputStream(in);
way = ds.getClosedWays().get(0);
InputStream in2 = getInstrumentation().getTargetContext().getResources().getAssets().open("test/osm/checksum_way2.osm");
OSMDataSet ds2 = OSMXmlParser.parseFromInputStream(in2);
way2 = ds2.getClosedWays().get(0);
InputStream in3 = getInstrumentation().getTargetContext().getResources().getAssets().open("test/osm/donut_happy.osm");
OSMDataSet ds3 = OSMXmlParser.parseFromInputStream(in3);
donutHappy = ds3.getStandaloneNodes().get(0);
}
public void tearDown() throws Exception {
super.tearDown();
}
public void testSha1OnAString() throws Exception {
String testStr = "test";
String sha1 = new String(Hex.encodeHex(DigestUtils.sha1(testStr)));
assertEquals("a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", sha1);
}
public void testWayTagsAsSortedKVString() throws Exception {
String str = way.tagsAsSortedKVString().toString();
assertEquals("buildingcommercialbuilding:conditiongoodbuilding:levels1building:materialconcretenameJava the Hut", str);
}
public void testWayChecksum() throws Exception {
String checksum = way.checksum();
assertEquals("add90109a0ca34d12d28292ccd05c588d2220f0a", checksum);
}
public void testWayChecksum2() throws Exception {
String checksum = way2.checksum();
assertEquals("3854296ef0b8fc4810454dd5d8de79dc59f7f007", checksum);
}
public void testNodesInWayChecksums() throws Exception {
List<OSMNode> nodes = way.getNodes();
for (OSMNode n : nodes) {
long id = n.getId();
if (id == 3969314187L) {
assertEquals("6f3b2e85e05dbdc496f9250931693f7a3e427807", n.checksum());
} else if (id == 3969314188L) {
assertEquals("e52eb00f4e028a8010e32a9cfca788273f49a675", n.checksum());
} else if (id == 3969314189L) {
assertEquals("3f7514c1b2ca88dfc53fdd7daecc0851bfeba081", n.checksum());
} else if (id == 3969314190L) {
assertEquals("c3010e77a9f5d322bfd0081c607dfc7109b86ba9", n.checksum());
}
}
}
public void testPreWayChecksum() throws Exception {
String preChecksum = way.preChecksum();
assertEquals("buildingcommercialbuilding:conditiongoodbuilding:levels1building:materialconcretenameJava the Hut6f3b2e85e05dbdc496f9250931693f7a3e427807c3010e77a9f5d322bfd0081c607dfc7109b86ba93f7514c1b2ca88dfc53fdd7daecc0851bfeba081e52eb00f4e028a8010e32a9cfca788273f49a6756f3b2e85e05dbdc496f9250931693f7a3e427807", preChecksum);
}
public void testDonutHappyPreChecksum() throws Exception {
String preChecksum = donutHappy.preChecksum();
assertEquals("addr:citySacramentoaddr:housenumber5049-Daddr:postcode95841addr:stateCAaddr:streetCollege Oak Dr.amenitycafénameDonut Happyshopbakery38.65838277039187-121.3510830389408", preChecksum);
}
public void testDonutHappyChecksum() throws Exception {
String checksum = donutHappy.checksum();
assertEquals("27b1bf1412ab7f02f0991e37d783f92d83ed1d52", checksum);
}
public void testAccentEigu() throws Exception {
String str = "café";
String sha1 = new String(Hex.encodeHex(DigestUtils.sha1(str)));
assertEquals("f424452a9673918c6f09b0cdd35b20be8e6ae7d7", sha1);
}
}