From d678492e8f4e3f6322987dbf3734011602c226e8 Mon Sep 17 00:00:00 2001 From: san-smith Date: Sun, 24 Sep 2023 20:45:26 +0700 Subject: [PATCH] fix: tests for ResourceManagerState --- fyrox-resource/src/manager.rs | 50 ++++++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/fyrox-resource/src/manager.rs b/fyrox-resource/src/manager.rs index e15504acc..f3a34445f 100644 --- a/fyrox-resource/src/manager.rs +++ b/fyrox-resource/src/manager.rs @@ -478,7 +478,9 @@ impl ResourceManagerState { #[cfg(test)] mod test { - use std::{fs::File, time::Duration}; + use std::{any::Any, fs::File, time::Duration}; + + use crate::loader::{BoxedLoaderFuture, ResourceLoader}; use super::*; @@ -493,7 +495,7 @@ mod test { impl ResourceData for Stub { fn path(&self) -> std::borrow::Cow { - std::borrow::Cow::Borrowed(Path::new("")) + std::borrow::Cow::Borrowed(Path::new("test.txt")) } fn set_path(&mut self, _path: std::path::PathBuf) {} @@ -521,6 +523,36 @@ mod test { } } + impl ResourceLoader for Stub { + fn extensions(&self) -> &[&str] { + &["txt"] + } + + fn into_any(self: Box) -> Box { + self + } + + fn as_any(&self) -> &dyn Any { + self + } + + fn as_any_mut(&mut self) -> &mut dyn Any { + self + } + + fn load( + &self, + resource: UntypedResource, + event_broadcaster: ResourceEventBroadcaster, + reload: bool, + ) -> BoxedLoaderFuture { + Box::pin(async move { + resource.commit_ok(Stub::default()); + event_broadcaster.broadcast_loaded_or_reloaded(resource, reload); + }) + } + } + #[test] fn resource_wait_context_is_all_loaded() { assert!(ResourceWaitContext::default().is_all_loaded()); @@ -670,12 +702,13 @@ mod test { assert_eq!(res.path(), path.clone()); assert_eq!(res.type_uuid(), type_uuid); - assert!(res.is_loading()); + assert!(!res.is_loading()); } #[test] fn resource_manager_state_reload_resource() { let mut state = ResourceManagerState::new(); + state.loaders.set(Stub {}); let resource = UntypedResource::new_ok(Stub {}); state.push(resource.clone()); @@ -687,6 +720,7 @@ mod test { #[test] fn resource_manager_state_reload_resources() { let mut state = ResourceManagerState::new(); + state.loaders.set(Stub {}); let resource = UntypedResource::new_ok(Stub {}); state.push(resource.clone()); @@ -699,6 +733,8 @@ mod test { #[test] fn resource_manager_state_try_reload_resource_from_path() { let mut state = ResourceManagerState::new(); + state.loaders.set(Stub {}); + let resource = UntypedResource::new_load_error(PathBuf::from("test.txt"), None, Uuid::default()); state.push(resource.clone()); @@ -747,10 +783,10 @@ mod test { fn resource_manager_request() { let manager = ResourceManager::new(); let resource = UntypedResource::new_ok(Stub {}); - let res = manager.register(resource.clone(), PathBuf::from("test.txt"), |_, __| true); + let res = manager.register(resource.clone(), PathBuf::from("foo.txt"), |_, __| true); assert!(res.is_ok()); - let res: Resource = manager.request(Path::new("")); + let res: Resource = manager.request(Path::new("test.txt")); assert_eq!( res, Resource { @@ -764,10 +800,10 @@ mod test { fn resource_manager_request_untyped() { let manager = ResourceManager::new(); let resource = UntypedResource::new_ok(Stub {}); - let res = manager.register(resource.clone(), PathBuf::from("test.txt"), |_, __| true); + let res = manager.register(resource.clone(), PathBuf::from("foo.txt"), |_, __| true); assert!(res.is_ok()); - let res = manager.request_untyped(Path::new(""), Uuid::default()); + let res = manager.request_untyped(Path::new("test.txt"), Uuid::default()); assert_eq!(res, resource); }