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}