public void TestDecodeRelation() { var block = new PrimitiveBlock(); block.date_granularity = 1000; block.granularity = 100; block.lat_offset = 0; block.lon_offset = 0; block.stringtable = new StringTable(); block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes(string.Empty)); // always encode empty string as '0'. block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("highway")); block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("residential")); block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("Ben")); block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("fake role")); var pbfRelation = new OsmSharp.IO.PBF.Relation() { id = 1, info = new Info() { changeset = 10, timestamp = 10, uid = 100, user_sid = 3, version = 2 } }; pbfRelation.keys.Add(1); pbfRelation.vals.Add(2); pbfRelation.memids.Add(10); pbfRelation.memids.Add(1); // delta-encoding. pbfRelation.roles_sid.Add(4); pbfRelation.roles_sid.Add(4); pbfRelation.types.Add(OsmSharp.IO.PBF.Relation.MemberType.NODE); pbfRelation.types.Add(OsmSharp.IO.PBF.Relation.MemberType.WAY); var relation = Encoder.DecodeRelation(block, pbfRelation); Assert.IsNotNull(relation); Assert.AreEqual(1, relation.Id); Assert.AreEqual(10, relation.ChangeSetId); Assert.AreEqual(PBFExtensions.FromUnixTime(10000), relation.TimeStamp); Assert.AreEqual(OsmSharp.OsmGeoType.Relation, relation.Type); Assert.AreEqual(100, relation.UserId); Assert.AreEqual("Ben", relation.UserName); Assert.AreEqual(2, relation.Version); Assert.AreEqual(2, relation.Members.Length); Assert.AreEqual(10, relation.Members[0].Id); Assert.AreEqual(OsmSharp.OsmGeoType.Node, relation.Members[0].Type); Assert.AreEqual("fake role", relation.Members[0].Role); Assert.AreEqual(11, relation.Members[1].Id); Assert.AreEqual(OsmSharp.OsmGeoType.Way, relation.Members[1].Type); Assert.AreEqual("fake role", relation.Members[1].Role); }
public void TestDecodeWay() { var block = new PrimitiveBlock(); block.date_granularity = 1000; block.granularity = 100; block.lat_offset = 0; block.lon_offset = 0; block.stringtable = new StringTable(); block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes(string.Empty)); // always encode empty string as '0'. block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("highway")); block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("residential")); block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("Ben")); var pbfWay = new OsmSharp.IO.PBF.Way() { id = 1, info = new Info() { changeset = 10, timestamp = 10, uid = 100, user_sid = 3, version = 2 } }; pbfWay.keys.Add(1); pbfWay.vals.Add(2); pbfWay.refs.Add(0); pbfWay.refs.Add(1); var way = Encoder.DecodeWay(block, pbfWay); Assert.IsNotNull(way); Assert.AreEqual(1, way.Id); Assert.AreEqual(10, way.ChangeSetId); Assert.AreEqual(PBFExtensions.FromUnixTime(10000), way.TimeStamp); Assert.AreEqual(OsmSharp.OsmGeoType.Way, way.Type); Assert.AreEqual(100, way.UserId); Assert.AreEqual("Ben", way.UserName); Assert.AreEqual(2, way.Version); Assert.AreEqual(2, way.Nodes.Length); Assert.AreEqual(0, way.Nodes[0]); Assert.AreEqual(1, way.Nodes[1]); }
public void TestDecodeNode() { var block = new PrimitiveBlock(); block.date_granularity = 1000; block.granularity = 100; block.lat_offset = 0; block.lon_offset = 0; block.stringtable = new StringTable(); block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes(string.Empty)); // always encode empty string as '0'. block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("highway")); block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("residential")); block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("Ben")); var pbfNode = new OsmSharp.IO.PBF.Node() { id = 1, info = new Info() { changeset = 10, timestamp = 10, uid = 100, user_sid = 3, version = 2 }, lat = Encoder.EncodeLatLon(10.9f, block.lat_offset, block.granularity), lon = Encoder.EncodeLatLon(11.0f, block.lat_offset, block.granularity) }; pbfNode.keys.Add(1); pbfNode.vals.Add(2); var node = Encoder.DecodeNode(block, pbfNode); Assert.IsNotNull(node); Assert.AreEqual(1, node.Id); Assert.AreEqual(10, node.ChangeSetId); Assert.AreEqual(10.9f, node.Latitude); Assert.AreEqual(11.0f, node.Longitude); Assert.AreEqual(PBFExtensions.FromUnixTime(10000), node.TimeStamp); Assert.AreEqual(OsmSharp.OsmGeoType.Node, node.Type); Assert.AreEqual(100, node.UserId); Assert.AreEqual("Ben", node.UserName); Assert.AreEqual(2, node.Version); }