#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct AcsChar(pub char);
impl AcsChar {
pub fn as_char(&self) -> char {
self.0
}
}
pub const ACS_ULCORNER: AcsChar = AcsChar('┌');
pub const ACS_LLCORNER: AcsChar = AcsChar('└');
pub const ACS_URCORNER: AcsChar = AcsChar('┐');
pub const ACS_LRCORNER: AcsChar = AcsChar('┘');
pub const ACS_HLINE: AcsChar = AcsChar('─');
pub const ACS_VLINE: AcsChar = AcsChar('│');
pub const ACS_LTEE: AcsChar = AcsChar('├');
pub const ACS_RTEE: AcsChar = AcsChar('┤');
pub const ACS_TTEE: AcsChar = AcsChar('┬');
pub const ACS_BTEE: AcsChar = AcsChar('┴');
pub const ACS_PLUS: AcsChar = AcsChar('┼');
pub const ACS_DIAMOND: AcsChar = AcsChar('◆');
pub const ACS_CKBOARD: AcsChar = AcsChar('░');
pub const ACS_DEGREE: AcsChar = AcsChar('°');
pub const ACS_PLMINUS: AcsChar = AcsChar('±');
pub const ACS_BULLET: AcsChar = AcsChar('•');
pub const ACS_LARROW: AcsChar = AcsChar('←');
pub const ACS_RARROW: AcsChar = AcsChar('→');
pub const ACS_DARROW: AcsChar = AcsChar('↓');
pub const ACS_UARROW: AcsChar = AcsChar('↑');
pub const ACS_BOARD: AcsChar = AcsChar('▒');
pub const ACS_LANTERN: AcsChar = AcsChar('▓');
pub const ACS_BLOCK: AcsChar = AcsChar('█');
pub const ACS_S1: AcsChar = AcsChar('⎺');
pub const ACS_S3: AcsChar = AcsChar('⎻');
pub const ACS_S7: AcsChar = AcsChar('⎼');
pub const ACS_S9: AcsChar = AcsChar('⎽');
pub const ACS_LEQUAL: AcsChar = AcsChar('≤');
pub const ACS_GEQUAL: AcsChar = AcsChar('≥');
pub const ACS_PI: AcsChar = AcsChar('π');
pub const ACS_NEQUAL: AcsChar = AcsChar('≠');
pub const ACS_STERLING: AcsChar = AcsChar('£');
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_acs_corners() {
assert_eq!(ACS_ULCORNER.as_char(), '┌');
assert_eq!(ACS_URCORNER.as_char(), '┐');
assert_eq!(ACS_LLCORNER.as_char(), '└');
assert_eq!(ACS_LRCORNER.as_char(), '┘');
}
#[test]
fn test_acs_lines() {
assert_eq!(ACS_HLINE.as_char(), '─');
assert_eq!(ACS_VLINE.as_char(), '│');
}
#[test]
fn test_acs_tees() {
assert_eq!(ACS_LTEE.as_char(), '├');
assert_eq!(ACS_RTEE.as_char(), '┤');
assert_eq!(ACS_TTEE.as_char(), '┬');
assert_eq!(ACS_BTEE.as_char(), '┴');
assert_eq!(ACS_PLUS.as_char(), '┼');
}
#[test]
fn test_acs_symbols() {
assert_eq!(ACS_DIAMOND.as_char(), '◆');
assert_eq!(ACS_BULLET.as_char(), '•');
assert_eq!(ACS_BLOCK.as_char(), '█');
}
#[test]
fn test_acs_arrows() {
assert_eq!(ACS_LARROW.as_char(), '←');
assert_eq!(ACS_RARROW.as_char(), '→');
assert_eq!(ACS_UARROW.as_char(), '↑');
assert_eq!(ACS_DARROW.as_char(), '↓');
}
#[test]
fn test_acs_math() {
assert_eq!(ACS_LEQUAL.as_char(), '≤');
assert_eq!(ACS_GEQUAL.as_char(), '≥');
assert_eq!(ACS_PI.as_char(), 'π');
assert_eq!(ACS_PLMINUS.as_char(), '±');
}
#[test]
fn test_acs_equality() {
assert_eq!(ACS_ULCORNER, ACS_ULCORNER);
assert_ne!(ACS_ULCORNER, ACS_URCORNER);
}
#[test]
fn test_acs_char_clone() {
let ch1 = ACS_DIAMOND;
let ch2 = ch1;
assert_eq!(ch1, ch2);
}
}