Skip to main content

dependency_check_updates_core/
style.rs

1/// Detected indentation style.
2#[derive(Debug, Clone, Copy, PartialEq, Eq)]
3pub enum IndentStyle {
4    Spaces(u8),
5    Tab,
6}
7
8impl Default for IndentStyle {
9    fn default() -> Self {
10        Self::Spaces(2)
11    }
12}
13
14/// Detected line ending style.
15#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
16pub enum LineEnding {
17    #[default]
18    Lf,
19    CrLf,
20}
21
22/// The detected formatting style of a file.
23#[derive(Debug, Clone, Copy, PartialEq, Eq)]
24pub struct FileStyle {
25    pub indent: IndentStyle,
26    pub line_ending: LineEnding,
27    pub trailing_newline: bool,
28}
29
30impl Default for FileStyle {
31    fn default() -> Self {
32        Self {
33            indent: IndentStyle::default(),
34            line_ending: LineEnding::default(),
35            trailing_newline: true,
36        }
37    }
38}
39
40#[cfg(test)]
41mod tests {
42    use super::*;
43
44    #[test]
45    fn test_file_style_default() {
46        let style = FileStyle::default();
47        assert_eq!(style.indent, IndentStyle::Spaces(2));
48        assert_eq!(style.line_ending, LineEnding::Lf);
49        assert!(style.trailing_newline);
50    }
51
52    #[test]
53    fn test_indent_style_default() {
54        let indent = IndentStyle::default();
55        assert_eq!(indent, IndentStyle::Spaces(2));
56    }
57
58    #[test]
59    fn test_line_ending_default() {
60        let ending = LineEnding::default();
61        assert_eq!(ending, LineEnding::Lf);
62    }
63}