@@ -331,6 +331,48 @@ class Invalid:
331
331
cbook ._define_aliases ({'prop' : ['alias1' , 'alias2' ]})(Invalid )
332
332
333
333
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
+
334
376
fail_mapping = (
335
377
({'a' : 1 }, {'forbidden' : ('a' )}),
336
378
({'a' : 1 }, {'required' : ('b' )}),
0 commit comments