test_tagbased_polymorphic.py revision 14299:2fbea9df56d2
1from pybind11_tests import tagbased_polymorphic as m 2 3 4def test_downcast(): 5 zoo = m.create_zoo() 6 assert [type(animal) for animal in zoo] == [ 7 m.Labrador, m.Dog, m.Chihuahua, m.Cat, m.Panther 8 ] 9 assert [animal.name for animal in zoo] == [ 10 "Fido", "Ginger", "Hertzl", "Tiger", "Leo" 11 ] 12 zoo[1].sound = "woooooo" 13 assert [dog.bark() for dog in zoo[:3]] == [ 14 "Labrador Fido goes WOOF!", 15 "Dog Ginger goes woooooo", 16 "Chihuahua Hertzl goes iyiyiyiyiyi and runs in circles" 17 ] 18 assert [cat.purr() for cat in zoo[3:]] == ["mrowr", "mrrrRRRRRR"] 19 zoo[0].excitement -= 1000 20 assert zoo[0].excitement == 14000 21