telar_services_core/
paths.rs1use std::path::PathBuf;
2
3pub trait AppPathsProvider: Send + Sync {
4 fn config_dir(&self) -> Option<PathBuf>;
5 fn data_dir(&self) -> Option<PathBuf>;
6 fn cache_dir(&self) -> Option<PathBuf>;
7
8 fn system_fonts_dir(&self) -> Option<PathBuf> {
12 None
13 }
14 fn sans_serif_candidates(&self) -> Vec<String> {
17 Vec::new()
18 }
19}
20
21#[cfg(test)]
22mod tests {
23 use super::*;
24
25 struct MockPathsProvider {
26 config: PathBuf,
27 data: PathBuf,
28 cache: PathBuf,
29 }
30
31 impl AppPathsProvider for MockPathsProvider {
32 fn config_dir(&self) -> Option<PathBuf> {
33 Some(self.config.clone())
34 }
35
36 fn data_dir(&self) -> Option<PathBuf> {
37 Some(self.data.clone())
38 }
39
40 fn cache_dir(&self) -> Option<PathBuf> {
41 Some(self.cache.clone())
42 }
43 }
44
45 #[test]
46 fn test_mock_provider_config_dir() {
47 let provider = MockPathsProvider {
48 config: PathBuf::from("/mock/config"),
49 data: PathBuf::from("/mock/data"),
50 cache: PathBuf::from("/mock/cache"),
51 };
52
53 assert_eq!(provider.config_dir(), Some(PathBuf::from("/mock/config")));
54 }
55
56 #[test]
57 fn test_mock_provider_data_dir() {
58 let provider = MockPathsProvider {
59 config: PathBuf::from("/mock/config"),
60 data: PathBuf::from("/mock/data"),
61 cache: PathBuf::from("/mock/cache"),
62 };
63
64 assert_eq!(provider.data_dir(), Some(PathBuf::from("/mock/data")));
65 }
66
67 #[test]
68 fn test_mock_provider_cache_dir() {
69 let provider = MockPathsProvider {
70 config: PathBuf::from("/mock/config"),
71 data: PathBuf::from("/mock/data"),
72 cache: PathBuf::from("/mock/cache"),
73 };
74
75 assert_eq!(provider.cache_dir(), Some(PathBuf::from("/mock/cache")));
76 }
77
78 struct NonePathsProvider;
79
80 impl AppPathsProvider for NonePathsProvider {
81 fn config_dir(&self) -> Option<PathBuf> {
82 None
83 }
84
85 fn data_dir(&self) -> Option<PathBuf> {
86 None
87 }
88
89 fn cache_dir(&self) -> Option<PathBuf> {
90 None
91 }
92 }
93
94 #[test]
95 fn test_none_provider_handles_missing_paths() {
96 let provider = NonePathsProvider;
97
98 assert_eq!(provider.config_dir(), None);
99 assert_eq!(provider.data_dir(), None);
100 assert_eq!(provider.cache_dir(), None);
101 }
102}