use super::*;
use crate::expand;
#[test]
fn then_without_start() {
let x = expand!("%t");
let y = expand!("%e");
let z = expand!("%;");
assert_eq!(x, Err(Error::BrokenConditional));
assert_eq!(y, Err(Error::BrokenConditional));
assert_eq!(z, Err(Error::BrokenConditional));
}
#[test]
fn else_without_then() {
let x = expand!("%?%e");
assert_eq!(x, Err(Error::BrokenConditional));
}
#[test]
fn then_skips_else() {
let x = expand!("%?%{1}%tabc%edef%;");
assert_eq!(x, Ok(b"abc".to_vec()));
}
#[test]
fn else_skips_then() {
let x = expand!("%?%{0}%tabc%edef%;");
assert_eq!(x, Ok(b"def".to_vec()));
}
#[test]
fn elseif_works() {
let x = expand!("%?%{0}%tabc%edef%{1}%tghi%ejkl%;");
assert_eq!(x, Ok(b"defghi".to_vec()));
}
#[test]
fn no_double_else() {
let x = expand!("%?%{0}%t%e%e%;");
assert_eq!(x, Err(Error::BrokenConditional));
}
#[test]
fn empty() {
let x = expand!("%?%{1}%t%e%;");
let y = expand!("%?%{0}%t%e%;");
assert_eq!(x, Ok(vec![]));
assert_eq!(y, Ok(vec![]));
}
#[test]
fn formatting() {
let a = expand!("%p1%#8x", 0x1234);
let b = expand!("%p1%#-8x", 0x1234);
assert_eq!(a, Ok(b" 0x1234".to_vec()));
assert_eq!(b, Ok(b"0x1234 ".to_vec()));
}