ord/
macros.rs

1#[macro_export]
2macro_rules! define_table {
3  ($name:ident, $key:ty, $value:ty) => {
4    const $name: TableDefinition<$key, $value> = TableDefinition::new(stringify!($name));
5  };
6}
7
8#[macro_export]
9macro_rules! define_multimap_table {
10  ($name:ident, $key:ty, $value:ty) => {
11    const $name: MultimapTableDefinition<$key, $value> =
12      MultimapTableDefinition::new(stringify!($name));
13  };
14}
15
16#[macro_export]
17macro_rules! tprintln {
18  ($($arg:tt)*) => {
19    if cfg!(test) {
20      eprint!("==> ");
21      eprintln!($($arg)*);
22    }
23  };
24}
25
26#[macro_export]
27macro_rules! assert_regex_match {
28  ($value:expr, $pattern:expr $(,)?) => {
29    let regex = Regex::new(&format!("^(?s){}$", $pattern)).unwrap();
30    let string = $value.to_string();
31
32    if !regex.is_match(string.as_ref()) {
33      eprintln!("Regex did not match:");
34      pretty_assert_eq!(regex.as_str(), string);
35    }
36  };
37}
38
39#[macro_export]
40macro_rules! assert_matches {
41  ($expression:expr, $( $pattern:pat_param )|+ $( if $guard:expr )? $(,)?) => {
42    match $expression {
43      $( $pattern )|+ $( if $guard )? => {}
44      left => panic!(
45        "assertion failed: (left ~= right)\n  left: `{:?}`\n right: `{}`",
46        left,
47        stringify!($($pattern)|+ $(if $guard)?)
48      ),
49    }
50  }
51}