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