/ tests / common / mod.rs
mod.rs
 1  use korni::{parse, Entry};
 2  
 3  #[allow(dead_code)]
 4  pub fn parse_single_pair(input: &str) -> Option<(String, String)> {
 5      let entries = parse(input);
 6      entries.into_iter().find_map(|e| {
 7          if let Entry::Pair(kv) = e {
 8              Some((kv.key.to_string(), kv.value.to_string()))
 9          } else {
10              None
11          }
12      })
13  }
14  
15  #[allow(dead_code)]
16  pub fn assert_pair(input: &str, expected_key: &str, expected_value: &str) {
17      let pair =
18          parse_single_pair(input).expect(&format!("Failed to parse pair from input: {:?}", input));
19      assert_eq!(pair.0, expected_key, "Key mismatch");
20      assert_eq!(pair.1, expected_value, "Value mismatch");
21  }
22  
23  #[allow(dead_code)]
24  pub fn assert_error(input: &str, expected_part: &str) {
25      let entries = parse(input);
26      let error = entries.iter().find_map(|e| {
27          if let Entry::Error(err) = e {
28              Some(err.to_string())
29          } else {
30              None
31          }
32      });
33  
34      assert!(
35          error.is_some(),
36          "Expected error for input: {:?} but got success",
37          input
38      );
39      let msg = error.unwrap();
40      assert!(
41          msg.contains(expected_part),
42          "Error message {:?} did not contain {:?}",
43          msg,
44          expected_part
45      );
46  }
47  
48  #[allow(dead_code)]
49  pub fn assert_exported(input: &str, expected_key: &str, expected_value: &str) {
50      let entries = parse(input);
51      let kv = entries
52          .iter()
53          .find_map(|e| e.as_pair().map(|p| p.clone()))
54          .unwrap();
55      assert_eq!(kv.key, expected_key);
56      assert_eq!(kv.value, expected_value);
57      assert!(kv.is_exported, "Expected exported flag to be true");
58  }
59  
60  #[allow(dead_code)]
61  pub fn assert_not_exported(input: &str, expected_key: &str, expected_value: &str) {
62      let entries = parse(input);
63      let kv = entries
64          .iter()
65          .find_map(|e| e.as_pair().map(|p| p.clone()))
66          .unwrap();
67      assert_eq!(kv.key, expected_key);
68      assert_eq!(kv.value, expected_value);
69      assert!(!kv.is_exported, "Expected exported flag to be false");
70  }