| # -*- coding: utf-8 -*- |
| from pybind11_tests import tagbased_polymorphic as m |
| |
| |
| def test_downcast(): |
| zoo = m.create_zoo() |
| assert [type(animal) for animal in zoo] == [ |
| m.Labrador, |
| m.Dog, |
| m.Chihuahua, |
| m.Cat, |
| m.Panther, |
| ] |
| assert [animal.name for animal in zoo] == [ |
| "Fido", |
| "Ginger", |
| "Hertzl", |
| "Tiger", |
| "Leo", |
| ] |
| zoo[1].sound = "woooooo" |
| assert [dog.bark() for dog in zoo[:3]] == [ |
| "Labrador Fido goes WOOF!", |
| "Dog Ginger goes woooooo", |
| "Chihuahua Hertzl goes iyiyiyiyiyi and runs in circles", |
| ] |
| assert [cat.purr() for cat in zoo[3:]] == ["mrowr", "mrrrRRRRRR"] |
| zoo[0].excitement -= 1000 |
| assert zoo[0].excitement == 14000 |