Skip to content

Commit 43a4cf1

Browse files
committed
Add test of subclassing with cbook._define_aliases.
1 parent 687906e commit 43a4cf1

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

lib/matplotlib/tests/test_cbook.py

+42
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,48 @@ class Invalid:
331331
cbook._define_aliases({'prop': ['alias1', 'alias2']})(Invalid)
332332

333333

334+
def test_define_aliases_subclass():
335+
@cbook._define_aliases({'prop': ['alias']})
336+
class Base:
337+
def __init__(self):
338+
self.call_count = {'Base:set_prop': 0}
339+
340+
def set_prop(self):
341+
self.call_count['Base:set_prop'] += 1
342+
343+
class Derived(Base):
344+
def __init__(self):
345+
super().__init__()
346+
self.call_count['Derived:set_prop'] = 0
347+
348+
def set_prop(self):
349+
self.call_count['Derived:set_prop'] += 1
350+
351+
# Calling original or alias should run the same method.
352+
b = Base()
353+
b.set_prop()
354+
assert b.call_count['Base:set_prop'] == 1
355+
b.set_alias()
356+
assert b.call_count['Base:set_prop'] == 2
357+
358+
d = Derived()
359+
# Calling original or alias should run the same derived method.
360+
d.set_prop()
361+
assert d.call_count['Base:set_prop'] == 0
362+
assert d.call_count['Derived:set_prop'] == 1
363+
d.set_alias()
364+
assert d.call_count['Base:set_prop'] == 0
365+
assert d.call_count['Derived:set_prop'] == 2
366+
367+
# Calling original or alias should run the same base method.
368+
Base.set_prop(d)
369+
assert d.call_count['Base:set_prop'] == 1
370+
assert d.call_count['Derived:set_prop'] == 2
371+
Base.set_alias(d)
372+
assert d.call_count['Base:set_prop'] == 2
373+
assert d.call_count['Derived:set_prop'] == 2
374+
375+
334376
fail_mapping = (
335377
({'a': 1}, {'forbidden': ('a')}),
336378
({'a': 1}, {'required': ('b')}),

0 commit comments

Comments
 (0)