balsa/read/
bond.rs

1use lyn::Scanner;
2
3use crate::feature::BondKind;
4
5pub fn bond(scanner: &mut Scanner) -> Option<BondKind> {
6    scanner.transform(|target| match target {
7        '-' => Some(BondKind::Single),
8        '=' => Some(BondKind::Double),
9        '#' => Some(BondKind::Triple),
10        '/' => Some(BondKind::Up),
11        '\\' => Some(BondKind::Down),
12        _ => None,
13    })
14}
15
16#[cfg(test)]
17mod tests {
18    use super::*;
19    use pretty_assertions::assert_eq;
20
21    #[test]
22    fn invalid() {
23        let mut scanner = Scanner::new("x");
24
25        assert_eq!(bond(&mut scanner), None)
26    }
27
28    #[test]
29    fn valid() {
30        let mut scanner = Scanner::new("-");
31
32        assert_eq!(bond(&mut scanner), Some(BondKind::Single))
33    }
34}