From 199fb195f334b582e4ee3fccaa9a33aa2a06ca48 Mon Sep 17 00:00:00 2001 From: ecyrbe Date: Sat, 29 Feb 2020 18:35:45 +0100 Subject: test: add ResourceTable tests (#4185) --- core/resources.rs | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'core') diff --git a/core/resources.rs b/core/resources.rs index a5563bed3..53b1c84bf 100644 --- a/core/resources.rs +++ b/core/resources.rs @@ -83,3 +83,60 @@ impl ResourceTable { pub trait Resource: Downcast + Any + Send {} impl Resource for T where T: Downcast + Any + Send {} impl_downcast!(Resource); + +#[cfg(test)] +mod tests { + use super::*; + + struct FakeResource { + not_empty: u128, + } + + impl FakeResource { + fn new(value: u128) -> FakeResource { + FakeResource { not_empty: value } + } + } + + #[test] + fn test_create_resource_table_default() { + let table = ResourceTable::default(); + assert_eq!(table.map.len(), 0); + } + + #[test] + fn test_add_to_resource_table_not_empty() { + let mut table = ResourceTable::default(); + table.add("fake1", Box::new(FakeResource::new(1))); + table.add("fake2", Box::new(FakeResource::new(2))); + assert_eq!(table.map.len(), 2); + } + + #[test] + fn test_add_to_resource_table_are_contiguous() { + let mut table = ResourceTable::default(); + let rid1 = table.add("fake1", Box::new(FakeResource::new(1))); + let rid2 = table.add("fake2", Box::new(FakeResource::new(2))); + assert_eq!(rid1 + 1, rid2); + } + + #[test] + fn test_get_from_resource_table_is_what_was_given() { + let mut table = ResourceTable::default(); + let rid = table.add("fake", Box::new(FakeResource::new(7))); + let resource = table.get::(rid); + assert_eq!(resource.unwrap().not_empty, 7); + } + + #[test] + fn test_remove_from_resource_table() { + let mut table = ResourceTable::default(); + let rid1 = table.add("fake1", Box::new(FakeResource::new(1))); + let rid2 = table.add("fake2", Box::new(FakeResource::new(2))); + assert_eq!(table.map.len(), 2); + table.close(rid1); + assert_eq!(table.map.len(), 1); + table.close(rid2); + assert_eq!(table.map.len(), 0); + } +} -- cgit v1.2.3