frs/cmds/rsl/output/format/
misordered_visibility.rs1use 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}