clean_dev_dirs/config/
filter.rs1use clap::ValueEnum;
7
8#[derive(Clone, Copy, PartialEq, Debug, ValueEnum, Default)]
13pub enum ProjectFilter {
14 #[default]
16 All,
17
18 Rust,
20
21 Node,
23
24 Python,
26
27 Go,
29}
30
31#[derive(Clone)]
36pub struct FilterOptions {
37 pub keep_size: String,
39
40 pub keep_days: u32,
42}
43
44#[cfg(test)]
45mod tests {
46 use super::*;
47
48 #[test]
49 fn test_project_filter_equality() {
50 assert_eq!(ProjectFilter::All, ProjectFilter::All);
51 assert_eq!(ProjectFilter::Rust, ProjectFilter::Rust);
52 assert_eq!(ProjectFilter::Node, ProjectFilter::Node);
53 assert_eq!(ProjectFilter::Python, ProjectFilter::Python);
54 assert_eq!(ProjectFilter::Go, ProjectFilter::Go);
55
56 assert_ne!(ProjectFilter::All, ProjectFilter::Rust);
57 assert_ne!(ProjectFilter::Rust, ProjectFilter::Node);
58 assert_ne!(ProjectFilter::Node, ProjectFilter::Python);
59 assert_ne!(ProjectFilter::Python, ProjectFilter::Go);
60 }
61
62 #[test]
63 fn test_project_filter_copy() {
64 let original = ProjectFilter::Rust;
65 let copied = original;
66
67 assert_eq!(original, copied);
68 }
69
70 #[test]
71 fn test_project_filter_default() {
72 let default_filter = ProjectFilter::default();
73 assert_eq!(default_filter, ProjectFilter::All);
74 }
75
76 #[test]
77 fn test_filter_options_creation() {
78 let filter_opts = FilterOptions {
79 keep_size: "100MB".to_string(),
80 keep_days: 30,
81 };
82
83 assert_eq!(filter_opts.keep_size, "100MB");
84 assert_eq!(filter_opts.keep_days, 30);
85 }
86
87 #[test]
88 fn test_filter_options_clone() {
89 let original = FilterOptions {
90 keep_size: "100MB".to_string(),
91 keep_days: 30,
92 };
93 let cloned = original.clone();
94
95 assert_eq!(original.keep_size, cloned.keep_size);
96 assert_eq!(original.keep_days, cloned.keep_days);
97 }
98}