Macro test_toolbox::actual[][src]

macro_rules! actual {
    (@ dbg $var : ident : $typ : ty) => { ... };
    (@ rls $var : ident : $typ : ty) => { ... };
    (@ dbg $var : ident : $typ : ty ; $val : expr) => { ... };
    (@ rls $var : ident : $typ : ty ; $val : expr) => { ... };
    (@ dbg mut $var : ident : $typ : ty ; $exp : expr) => { ... };
    (@ rls mut $var : ident : $typ : ty ; $exp : expr) => { ... };
}
Expand description

Macro to define different actual variables for debug and release

This is useful when testing logic with differing actual variable definitions based on build.

Basically erogonomifies the following …

cfg_if! {
   if #[cfg(not(debug_assertions))] {
       let expected = Default::default();
   } else {
       let expected = 42;
   }
}
cfg_if! {
   if #[cfg(not(debug_assertions))] {
       let actual: usize = Default::default();
   } else {
       let actual: usize;
   }
}

#[cfg(debug_assertions)]
{ actual = sut(); }

assert_eq!(expected, actual);

with ..

expect! { expected = Default::default(), 42 }
actual! { @dbg actual: usize }

#[cfg(debug_assertions)]
{ actual = sut(); }

assert_eq!(expected, actual);

Features

Examples

  • debug; uninitialized actual variable release; actual variable initialized to default
expect! { expected: usize = Default::default(), 42 }
actual! { @dbg actual: usize }

#[cfg(debug_assertions)]
{ actual = sut(); }

assert_eq!(expected, actual);
  • release; uninitialized actual variable debug; actual variable initialized to default
expect! { expected: usize = 42, Default::default() }
actual! { @rls actual: usize }

#[cfg(not(debug_assertions))]
{ actual = sut(); }

assert_eq!(expected, actual);
  • debug; uninitialized actual variable release; actual variable initialized to a value
expect! { expected: usize = 2, 42 }
actual! { @dbg actual: usize; 2 }

#[cfg(debug_assertions)]
{ actual = sut(); }

assert_eq!(expected, actual);
  • release; uninitialized actual variable debug; actual variable initialized to a value
expect! { expected: usize = 42, 2 }
actual! { @rls actual: usize; 2 }

#[cfg(not(debug_assertions))]
{ actual = sut(); }

assert_eq!(expected, actual);
  • debug; mutable actual variable initialized to a value release; immutable actual variable initialized to a value
expect! { expected = "", "Forty Two" }
actual! { @dbg mut actual: String; String::new() }

#[cfg(debug_assertions)]
{ actual.push_str(&sut()); }

assert_eq!(expected, &actual);
  • release; mutable actual variable initialized to a value debug; immutable actual variable initialized to a value
expect! { expected = "Forty Two", "" }
actual! { @rls mut actual: String; String::new() }

#[cfg(not(debug_assertions))]
{ actual.push_str(&sut()); }

assert_eq!(expected, &actual);