#![allow(unused_macros)]
pub use dangerous::{error::*, *};
pub use indoc::indoc;
pub use paste::paste;
macro_rules! assert_str_eq {
($actual:expr, $expected:expr) => {{
let actual = &$actual;
let expected = &$expected;
if actual != expected {
panic!(
indoc! {"
string not expected value:
============================EXPECTED==========================
{}
=============================ACTUAL===========================
{}
==============================DIFF============================
{}
==============================================================
"},
expected,
actual,
colored_diff::PrettyDifference { expected, actual },
);
}
}};
}
macro_rules! input {
($input:expr) => {
dangerous::input(&$input)
};
}
macro_rules! read_all {
($input:expr, $read_fn:expr) => {
input!($input).read_all::<_, _, dangerous::Expected>($read_fn)
};
}
macro_rules! read_partial {
($input:expr, $read_fn:expr) => {
input!($input).read_partial::<_, _, dangerous::Expected>($read_fn)
};
}
macro_rules! read_infallible {
($input:expr, $read_fn:expr) => {
input!($input).read_infallible($read_fn)
};
}
macro_rules! read_all_ok {
($input:expr, $read_fn:expr) => {
read_all!($input, $read_fn).unwrap()
};
}
macro_rules! read_all_err {
($input:expr, $read_fn:expr) => {
read_all!($input, $read_fn).unwrap_err()
};
}
macro_rules! read_partial_ok {
($input:expr, $read_fn:expr) => {
read_partial!($input, $read_fn).unwrap()
};
}
macro_rules! read_partial_err {
($input:expr, $read_fn:expr) => {
read_partial!($input, $read_fn).unwrap_err()
};
}