diff --git a/src/output/render/links.rs b/src/output/render/links.rs new file mode 100644 index 0000000000000000000000000000000000000000..659b854a9f3b55b656f224be1e669bdd5887eb66 --- /dev/null +++ b/src/output/render/links.rs @@ -0,0 +1,81 @@ +use output::cell::TextCell; +use output::colours::Colours; +use fs::fields as f; + +use locale; + + +impl f::Links { + pub fn render(&self, colours: &Colours, numeric: &locale::Numeric) -> TextCell { + let style = if self.multiple { colours.links.multi_link_file } + else { colours.links.normal }; + + TextCell::paint(style, numeric.format_int(self.count)) + } +} + + +#[cfg(test)] +pub mod test { + use output::details::Details; + use output::cell::{TextCell, DisplayWidth}; + use fs::fields as f; + + use ansi_term::Colour::*; + use locale; + + + #[test] + fn regular_file() { + let mut details = Details::default(); + details.colours.links.normal = Blue.normal(); + + let stati = f::Links { + count: 1, + multiple: false, + }; + + let expected = TextCell { + width: DisplayWidth::from(1), + contents: vec![ Blue.paint("1") ].into(), + }; + + assert_eq!(expected, stati.render(&details.colours, &locale::Numeric::english()).into()); + } + + #[test] + fn regular_directory() { + let mut details = Details::default(); + details.colours.links.normal = Blue.normal(); + + let stati = f::Links { + count: 3005, + multiple: false, + }; + + let expected = TextCell { + width: DisplayWidth::from(5), + contents: vec![ Blue.paint("3,005") ].into(), + }; + + assert_eq!(expected, stati.render(&details.colours, &locale::Numeric::english()).into()); + } + + #[test] + fn popular_file() { + let mut details = Details::default(); + details.colours.links.multi_link_file = Blue.on(Red); + + let stati = f::Links { + count: 3005, + multiple: true, + }; + + let expected = TextCell { + width: DisplayWidth::from(5), + contents: vec![ Blue.on(Red).paint("3,005") ].into(), + }; + + assert_eq!(expected, stati.render(&details.colours, &locale::Numeric::english()).into()); + } +} diff --git a/src/output/render/mod.rs b/src/output/render/mod.rs index 20acde30a2934efe80f94cf0fa4f93fcc17bd622..dee26ed14610141ebe44f0201fce43dd05e14be9 100644 --- a/src/output/render/mod.rs +++ b/src/output/render/mod.rs @@ -1,5 +1,6 @@ mod git; mod groups; +mod links; mod permissions; mod size; mod users; @@ -13,15 +14,6 @@ use datetime::fmt::DateFormat; use locale; -impl f::Links { - pub fn render(&self, colours: &Colours, numeric: &locale::Numeric) -> TextCell { - let style = if self.multiple { colours.links.multi_link_file } - else { colours.links.normal }; - - TextCell::paint(style, numeric.format_int(self.count)) - } -} - impl f::Blocks { pub fn render(&self, colours: &Colours) -> TextCell {