예제 #1
0
        public void TestAddRelationAndMembers()
        {
            Way testWay = new Way();

            testWay.Id    = 1;
            testWay.Nodes = new List <long>();
            testWay.Nodes.Add(1);
            testWay.Nodes.Add(2);

            Node node1 = new Node();

            node1.Id        = 1;
            node1.Longitude = 0;
            node1.Latitude  = 0;
            Node node2 = new Node();

            node2.Id        = 2;
            node2.Longitude = 0;
            node2.Latitude  = 0;

            Relation relationAsMember = new Relation();

            relationAsMember.Id = 2;

            Relation relation = new Relation();

            relation.Id      = 1;
            relation.Members = new List <RelationMember>();
            relation.Members.Add(new RelationMember()
            {
                MemberId   = 1,
                MemberRole = "node",
                MemberType = OsmGeoType.Node
            });
            relation.Members.Add(new RelationMember()
            {
                MemberId   = 2,
                MemberRole = "node",
                MemberType = OsmGeoType.Node
            });
            relation.Members.Add(new RelationMember()
            {
                MemberId   = 1,
                MemberRole = "way",
                MemberType = OsmGeoType.Way
            });
            relation.Members.Add(new RelationMember()
            {
                MemberId   = 2,
                MemberRole = "relation",
                MemberType = OsmGeoType.Relation
            });

            var source = new MemoryDataSource();

            source.AddRelation(relation);

            // test positive cases.
            IList <Relation> resultRelations = source.GetRelationsFor(node1);

            Assert.IsNotNull(resultRelations);
            Assert.AreEqual(1, resultRelations.Count);
            Assert.AreEqual(relation, resultRelations[0]);
            resultRelations = source.GetRelationsFor(node2);
            Assert.IsNotNull(resultRelations);
            Assert.AreEqual(1, resultRelations.Count);
            Assert.AreEqual(relation, resultRelations[0]);
            resultRelations = source.GetRelationsFor(testWay);
            Assert.IsNotNull(resultRelations);
            Assert.AreEqual(1, resultRelations.Count);
            Assert.AreEqual(relation, resultRelations[0]);
            resultRelations = source.GetRelationsFor(relationAsMember);
            Assert.IsNotNull(resultRelations);
            Assert.AreEqual(1, resultRelations.Count);
            Assert.AreEqual(relation, resultRelations[0]);

            // test negative cases.
            resultRelations = source.GetRelationsFor(OsmGeoType.Node, 10000);
            Assert.IsNotNull(resultRelations);
            Assert.AreEqual(0, resultRelations.Count);
            resultRelations = source.GetRelationsFor(OsmGeoType.Way, 10000);
            Assert.IsNotNull(resultRelations);
            Assert.AreEqual(0, resultRelations.Count);
            resultRelations = source.GetRelationsFor(OsmGeoType.Relation, 10000);
            Assert.IsNotNull(resultRelations);
            Assert.AreEqual(0, resultRelations.Count);
        }