| 997 | |
| 998 | #[test] |
| 999 | fn test_entry_creation() { |
| 1000 | // Test with empty vector |
| 1001 | let empty_list = CachedFileList::new(vec![]); |
| 1002 | let now = Instant::now(); |
| 1003 | let entry = ListFilesEntry::try_new(empty_list, None, now); |
| 1004 | assert!(entry.is_none()); |
| 1005 | |
| 1006 | // Validate entry size |
| 1007 | let metas: Vec<ObjectMeta> = (0..5) |
| 1008 | .map(|i| create_test_object_meta(&format!("file{i}"), 30)) |
| 1009 | .collect(); |
| 1010 | let cached_list = CachedFileList::new(metas); |
| 1011 | let entry = ListFilesEntry::try_new(cached_list, None, now).unwrap(); |
| 1012 | assert_eq!(entry.metas.files.len(), 5); |
| 1013 | // Size should be: capacity * sizeof(ObjectMeta) + (5 * 30) for heap bytes |
| 1014 | let expected_size = (entry.metas.files.capacity() * size_of::<ObjectMeta>()) |
| 1015 | + (entry.metas.files.len() * 30); |
| 1016 | assert_eq!(entry.size_bytes, expected_size); |
| 1017 | |
| 1018 | // Test with TTL |
| 1019 | let meta = create_test_object_meta("file", 50); |
| 1020 | let ttl = Duration::from_secs(10); |
| 1021 | let cached_list = CachedFileList::new(vec![meta]); |
| 1022 | let entry = ListFilesEntry::try_new(cached_list, Some(ttl), now).unwrap(); |
| 1023 | assert!(entry.expires.unwrap() > now); |
| 1024 | } |
| 1025 | |
| 1026 | #[test] |
| 1027 | fn test_memory_tracking() { |