def test_update_remove_way(self):
     self.update_data("r2 v2 Mw2@")
     self.has_changes("test_changeset", ['M1'])
     self.table_equals("test", [
         { 'id' : 1, 'nodes' : [1, 2, 3], 'rels' : [1], 'geom': Line(1, 2, 3) },
         { 'id' : 2, 'nodes' : [3, 4, 5], 'rels' : [1, 2], 'geom': Line(3, 4, 5) }
         ])
 def test_update_delete_relation(self):
     self.update_data("r2 v2 dD")
     self.has_changes("test_changeset", ['M1', 'M2'])
     self.table_equals("test", [
         { 'id' : 1, 'nodes' : [1, 2, 3], 'rels' : [1], 'geom': Line(1, 2, 3) },
         { 'id' : 2, 'nodes' : [3, 4, 5], 'rels' : [1], 'geom': Line(3, 4, 5) }
         ])
 def test_update_remove_node_from_way(self):
     self.update_data("w2 v2 Nn3,n4")
     self.has_changes("test_changeset", ['M2'])
     self.table_equals("test", [
         { 'id' : 1, 'nodes' : [1, 2, 3], 'rels' : [1], 'geom' : Line(1, 2, 3) },
         { 'id' : 2, 'nodes' : [3, 4], 'rels' : [1], 'geom' : Line(3, 4) }
         ])
 def test_update_way_tags_only(self):
     self.update_data("w1 v2 Tfoo=bar Nn1,n2,n3")
     self.has_changes("test_changeset", [])
     self.table_equals("test", [
         { 'id' : 1, 'nodes' : [1, 2, 3], 'rels' : [1], 'geom' : Line(1, 2, 3) },
         { 'id' : 2, 'nodes' : [3, 4, 5], 'rels' : [1], 'geom' : Line(3, 4, 5) }
         ])
 def test_update_add_relation(self):
     self.update_data("r20 Mw1@")
     self.has_changes("test_changeset", ['M1'])
     self.table_equals("test", [
         { 'id' : 1, 'nodes' : [1, 2, 3], 'rels' : [1, 2, 20], 'geom': Line(1, 2, 3) },
         { 'id' : 2, 'nodes' : [3, 4, 5], 'rels' : [1, 2], 'geom': Line(3, 4, 5) }
         ])
 def test_update_add_node_to_way(self):
     self.update_data("w1 v2 Nn1,n10,n2,n3")
     self.has_changes("test_changeset", ['M1'])
     self.table_equals("test", [
         { 'id' : 1, 'nodes' : [1, 10, 2, 3], 'rels' : [1],
           'geom' : Line(1, 10, 2, 3) },
         { 'id' : 2, 'nodes' : [3, 4, 5], 'rels' : [1],
           'geom' : Line(3, 4, 5) }
         ])
 def test_update_move_node(self):
     self.update_data("n3 x1.0 y2.0")
     self.has_changes("test_changeset", ['M1', 'M2'])
     self.table_equals("test", [
         { 'id' : 1, 'nodes' : [1, 2, 3], 'rels' : [1],
           'geom' : Line(1, 2, (1.0, 2.0)) },
         { 'id' : 2, 'nodes' : [3, 4, 5], 'rels' : [1],
           'geom' : Line((1.0, 2.0), 4, 5) }
         ])
 def test_create_single(self):
     self.import_data("""\
         w1 Nn1,n3
         w2 Nn3,n5
         r1 Mw1@,w2@
         """, self.nodes)
     self.table_equals("test", [
         { 'id' : 1, 'nodes' : [1, 3], 'rels' : [1], 'geom' : Line(1, 3) },
         { 'id' : 2, 'nodes' : [3, 5], 'rels' : [1], 'geom' : Line(3, 5) }
         ])
 def test_create_rel_without_way(self):
     self.import_data("""\
         w1 Nn1,n2,n3
         w2 Nn3,n4,n5
         r1 Mw1@,w2@,w3@
         """, self.nodes)
     self.table_equals("test", [
         { 'id' : 1, 'nodes' : [1, 2, 3], 'rels' : [1], 'geom': Line(1, 2, 3) },
         { 'id' : 2, 'nodes' : [3, 4, 5], 'rels' : [1], 'geom': Line(3, 4 ,5) }
         ])
Esempio n. 10
0
 def test_create_one_point_way(self):
     self.import_data("""\
         w1 Nn1,n3
         w2 Nn5,n5
         r1 Mw1@,w2@
         """, self.nodes)
     self.table_equals("test", [
         { 'id' : 1, 'nodes' : [1, 3], 'rels' : [1], 'geom' : Line(1, 3) },
         { 'id' : 2, 'nodes' : [5, 5], 'rels' : [1], 'geom' : Line(5, 5) }
         ])
Esempio n. 11
0
 def test_update_add_way(self):
     self.update_data("""\
             w3 v1 Nn10,n11
             r1 v2 Mw1@,w3@,w2@
             """)
     self.has_changes("test_changeset", ['A3'])
     self.table_equals("test", [
         { 'id' : 1, 'nodes' : [1, 2, 3], 'rels' : [1, 2], 'geom': Line(1, 2, 3) },
         { 'id' : 2, 'nodes' : [3, 4, 5], 'rels' : [1, 2], 'geom': Line(3, 4, 5) },
         { 'id' : 3, 'nodes' : [10, 11], 'rels' : [1], 'geom': Line(10, 11) }
         ])
Esempio n. 12
0
 def test_create_overlapping_rels(self):
     self.import_data("""\
         w1 Nn1,n2,n3
         w2 Nn3,n4,n5
         w3 Nn10,n11
         r1 Mw1@,w2@
         r2 Mw2@,w3@
         """, self.nodes)
     self.table_equals("test", [
         { 'id': 1, 'nodes': [1, 2, 3], 'rels': [1], 'geom': Line(1, 2, 3) },
         { 'id': 2, 'nodes': [3, 4, 5], 'rels': [1, 2], 'geom': Line(3, 4, 5) },
         { 'id': 3, 'nodes': [10, 11], 'rels': [2], 'geom': Line(10, 11) }
         ])
Esempio n. 13
0
 def test_create_way_with_duplicate_node(self):
     self.import_data("""\
         w1 Nn1,n2,n2,n4,n5
         r1 Mw1@
         """, self.nodes)
     self.table_equals("test", [
         { 'id': 1, 'nodes': [1, 2, 2, 4, 5], 'rels': [1],
           'geom': Line(1, 2, 2, 4, 5) }
         ])
 def test_update_add_node(self):
     self.import_data(self.baseimport, self.nodes)
     self.update_data("""w101 v2 Tname=first Nn1,n2,n3""")
     self.has_changes("test_changeset", ['M101'])
     self.table_equals("test", [
         self.expect_w103, {
             'id': 101,
             'tags': {
                 'name': 'first'
             },
             'nodes': [1, 2, 3],
             'geom': Line(1, 2, 3)
         }
     ])
 def test_update_add_way(self):
     self.import_data(self.baseimport, self.nodes)
     self.update_data("""w3 Tx=y Nn101,n103""")
     self.has_changes("test_changeset", ['A3'])
     self.table_equals("test", [
         self.expect_w101, self.expect_w103, {
             'id': 3,
             'tags': {
                 'x': 'y'
             },
             'nodes': [101, 103],
             'geom': Line(101, 103)
         }
     ])
 def test_move_node(self):
     self.import_data(self.baseimport, self.nodes)
     self.update_data("""n2 v2 x0.9 y2.1""")
     self.has_changes("test_changeset", ['M101'])
     self.table_equals("test", [
         self.expect_w103, {
             'id': 101,
             'tags': {
                 'name': 'first'
             },
             'nodes': [1, 2],
             'geom': Line(1, (0.9, 2.1))
         }
     ])
Esempio n. 17
0
 def test_move_node(self):
     self.import_data("""\
         n1 x23.0 y-3.0
         n2 x23.001 y-3.43
         w1 Tref=1 Nn1,n2
         """)
     self.update_data("n2 x23.002 y-3.43")
     self.has_changes("test_changeset", ['A2', 'D1'])
     self.table_equals("test", ({
         'tags': {
             'ref': '1'
         },
         'nodes': [1, 2],
         'ways': [1],
         'geom': Line((23.0, -3.0), (23.002, -3.43))
     }, ))
Esempio n. 18
0
def R(nodes, ways, **kargs):
    return make_db_line(Any(),
                        nodes=nodes,
                        ways=ways,
                        geom=Line(*nodes),
                        **kargs)
Esempio n. 19
0
 def is_unchanged(self):
     self.has_changes("test_changeset", [])
     self.table_equals("test", [
         { 'id': 1, 'nodes': [1, 2, 3], 'rels': [1, 2], 'geom': Line(1, 2, 3) },
         { 'id': 2, 'nodes': [3, 4, 5], 'rels': [1, 2], 'geom': Line(3, 4, 5) }
         ])
Esempio n. 20
0
 def test_update_shorten_way_to_one_node(self):
     self.update_data("w2 v2 Nn3")
     self.has_changes("test_changeset", ['D2'])
     self.table_equals("test", [
         { 'id' : 1, 'nodes' : [1, 2, 3], 'rels' : [1], 'geom' : Line(1, 2, 3) }
         ])
class TestPlainWayTableUnchanged(TableTestFixture):

    nodes = {
        1: (1.0, 2.1),
        2: (1.0, 2.2),
        3: (1.0, 2.3),
        34: (0.9, 2.1),
        36: (1.2, 2.5),
        101: (4.5, -34.1),
        103: (4.51, -34.111)
    }

    baseimport = """\
                   w101 Tname=first Nn1,n2
                   w103 Tname=second Nn34,n1,n36
                 """

    expect_w101 = {
        'id': 101,
        'tags': {
            'name': 'first'
        },
        'nodes': [1, 2],
        'geom': Line(1, 2)
    }
    expect_w103 = {
        'id': 103,
        'tags': {
            'name': 'second'
        },
        'nodes': [34, 1, 36],
        'geom': Line(34, 1, 36)
    }

    def create_tables(self, db):
        return [PlainWayTable(db.metadata, "test", db.osmdata.way, db.osmdata)]

    def test_create(self):
        self.import_data(self.baseimport, self.nodes)
        self.table_equals("test", [self.expect_w101, self.expect_w103])

    def test_update_add_way(self):
        self.import_data(self.baseimport, self.nodes)
        self.update_data("""w3 Tx=y Nn101,n103""")
        self.has_changes("test_changeset", ['A3'])
        self.table_equals("test", [
            self.expect_w101, self.expect_w103, {
                'id': 3,
                'tags': {
                    'x': 'y'
                },
                'nodes': [101, 103],
                'geom': Line(101, 103)
            }
        ])

    def test_update_delete_way(self):
        self.import_data(self.baseimport, self.nodes)
        self.update_data("""w101 v2 dD""")
        self.has_changes("test_changeset", ['D101'])
        self.table_equals("test", [self.expect_w103])

    def test_update_change_tags(self):
        self.import_data(self.baseimport, self.nodes)
        self.update_data("""w101 v2 Tname=new Nn1,n2""")
        self.has_changes("test_changeset", ['M101'])
        new_w101 = dict(self.expect_w101)
        new_w101.update({'tags': {"name": "new"}})
        self.table_equals("test", [new_w101, self.expect_w103])

    def test_update_add_node(self):
        self.import_data(self.baseimport, self.nodes)
        self.update_data("""w101 v2 Tname=first Nn1,n2,n3""")
        self.has_changes("test_changeset", ['M101'])
        self.table_equals("test", [
            self.expect_w103, {
                'id': 101,
                'tags': {
                    'name': 'first'
                },
                'nodes': [1, 2, 3],
                'geom': Line(1, 2, 3)
            }
        ])

    def test_delete_node_invalidate_way(self):
        self.import_data(self.baseimport, self.nodes)
        self.update_data("""w101 v2 Tname=first Nn1""")
        self.has_changes("test_changeset", ['D101'])
        self.table_equals("test", [self.expect_w103])

    def test_move_node(self):
        self.import_data(self.baseimport, self.nodes)
        self.update_data("""n2 v2 x0.9 y2.1""")
        self.has_changes("test_changeset", ['M101'])
        self.table_equals("test", [
            self.expect_w103, {
                'id': 101,
                'tags': {
                    'name': 'first'
                },
                'nodes': [1, 2],
                'geom': Line(1, (0.9, 2.1))
            }
        ])