()
| 790 | |
| 791 | #[test] |
| 792 | fn apply_providers_property_priority() { |
| 793 | let mut class = make_class("Foo"); |
| 794 | |
| 795 | let high_priority = Box::new(TestProvider { |
| 796 | methods: Vec::new(), |
| 797 | properties: vec![make_property("name", Some("string"))], |
| 798 | }) as Box<dyn VirtualMemberProvider>; |
| 799 | |
| 800 | let low_priority = Box::new(TestProvider { |
| 801 | methods: Vec::new(), |
| 802 | properties: vec![ |
| 803 | make_property("name", Some("mixed")), |
| 804 | make_property("email", Some("string")), |
| 805 | ], |
| 806 | }) as Box<dyn VirtualMemberProvider>; |
| 807 | |
| 808 | let providers: Vec<Box<dyn VirtualMemberProvider>> = vec![high_priority, low_priority]; |
| 809 | let class_loader = |_: &str| -> Option<Arc<ClassInfo>> { None }; |
| 810 | |
| 811 | apply_virtual_members(&mut class, &class_loader, &providers, None); |
| 812 | |
| 813 | assert_eq!(class.properties.len(), 2); |
| 814 | |
| 815 | let name = class.properties.iter().find(|p| p.name == "name").unwrap(); |
| 816 | assert_eq!( |
| 817 | name.type_hint, |
| 818 | Some(PhpType::parse("string")), |
| 819 | "higher-priority provider property should win" |
| 820 | ); |
| 821 | |
| 822 | let email = class.properties.iter().find(|p| p.name == "email").unwrap(); |
| 823 | assert_eq!(email.type_hint, Some(PhpType::parse("string"))); |
| 824 | } |
| 825 | |
| 826 | /// When a higher-priority provider contributes a `mixed` property and |
| 827 | /// a lower-priority provider has a specific type, the specific type |
nothing calls this directly
no test coverage detected