114299Sbbruce@ucdavis.edufrom pybind11_tests import tagbased_polymorphic as m 214299Sbbruce@ucdavis.edu 314299Sbbruce@ucdavis.edu 414299Sbbruce@ucdavis.edudef test_downcast(): 514299Sbbruce@ucdavis.edu zoo = m.create_zoo() 614299Sbbruce@ucdavis.edu assert [type(animal) for animal in zoo] == [ 714299Sbbruce@ucdavis.edu m.Labrador, m.Dog, m.Chihuahua, m.Cat, m.Panther 814299Sbbruce@ucdavis.edu ] 914299Sbbruce@ucdavis.edu assert [animal.name for animal in zoo] == [ 1014299Sbbruce@ucdavis.edu "Fido", "Ginger", "Hertzl", "Tiger", "Leo" 1114299Sbbruce@ucdavis.edu ] 1214299Sbbruce@ucdavis.edu zoo[1].sound = "woooooo" 1314299Sbbruce@ucdavis.edu assert [dog.bark() for dog in zoo[:3]] == [ 1414299Sbbruce@ucdavis.edu "Labrador Fido goes WOOF!", 1514299Sbbruce@ucdavis.edu "Dog Ginger goes woooooo", 1614299Sbbruce@ucdavis.edu "Chihuahua Hertzl goes iyiyiyiyiyi and runs in circles" 1714299Sbbruce@ucdavis.edu ] 1814299Sbbruce@ucdavis.edu assert [cat.purr() for cat in zoo[3:]] == ["mrowr", "mrrrRRRRRR"] 1914299Sbbruce@ucdavis.edu zoo[0].excitement -= 1000 2014299Sbbruce@ucdavis.edu assert zoo[0].excitement == 14000 21