def test_way_relation_split_on_edge_node(self):
        wayRelation = WayRelation(mockOSMWay_01_01_LongCurvy)
        edge_node_ids = wayRelation.edge_nodes_ids

        for edge_node_id in edge_node_ids:
            wrs = wayRelation.split(edge_node_id)
            self.assertEqual(len(wrs), 1)
            self.assertEqual(wrs[0], wayRelation)
            self.assertEqual(wrs[0].way.tags, wayRelation.way.tags)
    def test_way_relation_split_on_internal_node(self):
        wayRelation = WayRelation(mockOSMWay_01_01_LongCurvy)
        way_ids = [-10, -20]

        for idx, node_id in enumerate(wayRelation._nodes_ids):
            if idx == 0 or idx == len(wayRelation._nodes_ids) - 1:
                continue
            wrs = wayRelation.split(node_id, way_ids)
            self.assertEqual(len(wrs), 2)
            assert_array_almost_equal(wrs[0]._nodes_ids,
                                      wayRelation._nodes_ids[:idx + 1])
            assert_array_almost_equal(wrs[1]._nodes_ids,
                                      wayRelation._nodes_ids[idx:])
            self.assertIn(node_id, wrs[0].edge_nodes_ids)
            self.assertIn(node_id, wrs[1].edge_nodes_ids)
            self.assertEqual(wrs[0].way.tags, wayRelation.way.tags)
            self.assertEqual(wrs[1].way.tags, wayRelation.way.tags)
            self.assertEqual(way_ids, [wr.id for wr in wrs])
    def test_way_relation_split_use_correct_ids(self):
        wayRelation = WayRelation(mockOSMWay_01_01_LongCurvy)

        wrs = wayRelation.split(wayRelation._nodes_ids[5], [-100, -200])
        self.assertEqual(wrs[0].id, -100)
        self.assertEqual(wrs[1].id, -200)
    def test_way_relation_split_no_matching_node(self):
        wayRelation = WayRelation(mockOSMWay_01_01_LongCurvy)

        wrs = wayRelation.split(0)
        self.assertEqual(len(wrs), 0)