use crate::scheme::SchemeEngine;
use anyhow::Result;
pub fn register_character_primitives(engine: &mut SchemeEngine) -> Result<()> {
engine.register_fn("char-upcase", char_upcase);
engine.register_fn("char-downcase", char_downcase);
Ok(())
}
fn char_upcase(ch: char) -> char {
ch.to_ascii_uppercase()
}
fn char_downcase(ch: char) -> char {
ch.to_ascii_lowercase()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_char_upcase() {
assert_eq!(char_upcase('a'), 'A');
assert_eq!(char_upcase('z'), 'Z');
assert_eq!(char_upcase('A'), 'A'); }
#[test]
fn test_char_downcase() {
assert_eq!(char_downcase('A'), 'a');
assert_eq!(char_downcase('Z'), 'z');
assert_eq!(char_downcase('a'), 'a'); }
}