1- # SPDX-License-Identifier: BSD
1+ # SPDX-License-Identifier: BSD-2-Clause
22#
3- # This file is part of Pyosmium.
3+ # This file is part of pyosmium. (https://osmcode.org/pyosmium/)
44#
5- # Copyright (C) 2022 Sarah Hoffmann.
6-
5+ # Copyright (C) 2025 Sarah Hoffmann <[email protected] > and others . 6+ # For a full list of authors see the git log.
77from pathlib import Path
88
99import pytest
10+ import osmium
1011
1112TEST_DIR = (Path (__file__ ) / '..' ).resolve ()
1213
13- import osmium as o
1414
1515class DanglingReferenceBase :
1616 """ Base class for tests that try to keep a reference to the object
@@ -27,8 +27,8 @@ def keep(self, obj, func):
2727 self .refkeeper .append ((obj , func ))
2828
2929 def test_keep_reference (self ):
30- h = o .make_simple_handler (node = self .node , way = self .way ,
31- relation = self .relation , area = self .area )
30+ h = osmium .make_simple_handler (node = self .node , way = self .way ,
31+ relation = self .relation , area = self .area )
3232 h .apply_file (TEST_DIR / 'example-test.osc' )
3333 assert self .refkeeper
3434
@@ -40,7 +40,7 @@ def test_keep_reference(self):
4040 repr (obj )
4141
4242 def test_keep_reference_generator (self ):
43- for obj in o .FileProcessor (TEST_DIR / 'example-test.osc' ).with_areas ():
43+ for obj in osmium .FileProcessor (TEST_DIR / 'example-test.osc' ).with_areas ():
4444 if obj .type_str () == 'n' and self .node is not None :
4545 self .node (obj )
4646 elif obj .type_str () == 'w' and self .way is not None :
@@ -65,77 +65,89 @@ class TestKeepNodeRef(DanglingReferenceBase):
6565 def node (self , n ):
6666 self .keep (n , lambda n : n .id )
6767
68+
6869class TestKeepWayRef (DanglingReferenceBase ):
6970
7071 def way (self , w ):
7172 self .keep (w , lambda n : n .id )
7273
74+
7375class TestKeepRelationRef (DanglingReferenceBase ):
7476
7577 def relation (self , r ):
7678 self .keep (r , lambda n : n .id )
7779
80+
7881class TestKeepAreaRef (DanglingReferenceBase ):
7982
8083 def area (self , a ):
8184 self .keep (a , lambda n : n .id )
8285
86+
8387class TestKeepNodeTagsRef (DanglingReferenceBase ):
8488
8589 def node (self , n ):
8690 self .keep (n .tags , lambda t : 'foo' in t )
8791
92+
8893class TestKeepWayTagsRef (DanglingReferenceBase ):
8994
9095 def way (self , w ):
9196 self .keep (w .tags , lambda t : 'foo' in t )
9297
98+
9399class TestKeepRelationTagsRef (DanglingReferenceBase ):
94100
95101 def relation (self , r ):
96102 self .keep (r .tags , lambda t : 'foo' in t )
97103
104+
98105class TestKeepAreaTagsRef (DanglingReferenceBase ):
99106
100107 def area (self , a ):
101108 self .keep (a .tags , lambda t : 'foo' in t )
102109
110+
103111class TestKeepTagListIterator (DanglingReferenceBase ):
104112
105113 def node (self , n ):
106114 self .keep (n .tags .__iter__ (), lambda t : next (t ))
107115
116+
108117class TestKeepOuterRingIterator (DanglingReferenceBase ):
109118
110119 def area (self , r ):
111120 self .keep (r .outer_rings (), lambda t : next (t ))
112121
122+
113123class TestKeepOuterRing (DanglingReferenceBase ):
114124
115125 def area (self , r ):
116126 for ring in r .outer_rings ():
117127 self .keep (ring , lambda t : len (t ))
118128
129+
119130class TestKeepInnerRingIterator (DanglingReferenceBase ):
120131
121132 def area (self , r ):
122133 for ring in r .outer_rings ():
123134 self .keep (r .inner_rings (ring ), lambda t : next (t ))
124135
136+
125137class TestKeepInnerRing (DanglingReferenceBase ):
126138
127139 def area (self , r ):
128140 for outer in r .outer_rings ():
129141 for inner in r .inner_rings (outer ):
130142 self .keep (inner , lambda t : len (t ))
131143
144+
132145class TestKeepRelationMemberIterator (DanglingReferenceBase ):
133146
134147 def relation (self , r ):
135148 self .keep (r .members , lambda t : next (t ))
136149
137150
138-
139151class NotADanglingReferenceBase :
140152 """ Base class for tests that ensure that the callback does not
141153 bail out because of dangling references when POD types are
@@ -152,16 +164,16 @@ def keep(self, obj, func):
152164 self .refkeeper .append ((obj , func ))
153165
154166 def test_keep_reference (self ):
155- h = o .make_simple_handler (node = self .node , way = self .way ,
156- relation = self .relation , area = self .area )
167+ h = osmium .make_simple_handler (node = self .node , way = self .way ,
168+ relation = self .relation , area = self .area )
157169 h .apply_file (TEST_DIR / 'example-test.pbf' )
158170 assert self .refkeeper
159171
160172 for obj , func in self .refkeeper :
161173 func (obj )
162174
163175 def test_keep_reference_generator (self ):
164- for obj in o .FileProcessor (TEST_DIR / 'example-test.pbf' ).with_areas ():
176+ for obj in osmium .FileProcessor (TEST_DIR / 'example-test.pbf' ).with_areas ():
165177 if obj .is_node () and self .node is not None :
166178 self .node (obj )
167179 elif obj .is_way () and self .way is not None :
@@ -180,14 +192,16 @@ def test_keep_reference_generator(self):
180192class TestKeepLocation (NotADanglingReferenceBase ):
181193
182194 def node (self , n ):
183- self .keep (n .location , lambda l : l .x )
195+ self .keep (n .location , lambda loc : loc .x )
196+
184197
185198class TestKeepNode (NotADanglingReferenceBase ):
186199
187200 def node (self , n ):
188201 for t in n .tags :
189202 self .keep (t , lambda t : t .k )
190203
204+
191205class TestKeepMember (NotADanglingReferenceBase ):
192206
193207 def relation (self , r ):
0 commit comments