Skip to main content

frs/cmds/rsl/output/format/
misordered_visibility.rs

1use super::super::ViolationOutputFormat;
2use super::FormattedRuleViolation;
3use super::format_violation;
4use crate::cmds::rsl::rules::TypedRule;
5use crate::cmds::rsl::rules::misordered_visibility::MisorderedVisibilityRule;
6use crate::cmds::rsl::rules::misordered_visibility::MisorderedVisibilityViolation;
7
8impl FormattedRuleViolation for MisorderedVisibilityViolation {
9    fn format(&self, output_format: ViolationOutputFormat) -> String {
10        format_violation(
11            &self.location,
12            <MisorderedVisibilityRule as TypedRule>::code(),
13            &format!(
14                "move `{}` before `{}`",
15                self.details.item_label, self.details.expected_before
16            ),
17            output_format,
18        )
19    }
20}
21
22#[cfg(test)]
23mod tests {
24    use std::path::PathBuf;
25
26    use super::super::super::ViolationOutputFormat;
27    use super::super::FormattedRuleViolation;
28    use crate::cmds::rsl::rules::common::Location;
29    use crate::cmds::rsl::rules::misordered_visibility::MisorderedVisibilityDetails;
30    use crate::cmds::rsl::rules::misordered_visibility::MisorderedVisibilityViolation;
31
32    #[test]
33    fn test_misordered_visibility_violation_when_details_are_present_formats_compact_output() {
34        let violation = MisorderedVisibilityViolation {
35            location: Location::new(PathBuf::from("test.rs"), 3, 17),
36            details: MisorderedVisibilityDetails {
37                expected_before: "fn private".to_owned(),
38                item_label: "fn public".to_owned(),
39            },
40        };
41
42        assert_eq!(
43            FormattedRuleViolation::format(&violation, ViolationOutputFormat::Compact),
44            "test.rs:3:17,move `fn public` before `fn private`"
45        );
46    }
47}