use quip::quip;
use quote::quote;
use utilities::compare::token_streams_eq;
#[test]
fn no_expression_interpolations() {
let output = quip! {
impl Shape for Triangle {
const SIDES: usize = 3;
}
};
let expected = quip! {
impl Shape for Triangle {
const SIDES: usize = 3;
}
};
assert!(token_streams_eq(output, expected));
}
#[test]
fn single_expression_interpolation() {
let shape = quote!(Triangle);
let output = quip! {
impl Shape for #{shape} {
const SIDES: usize = 3;
}
};
let expected = quip! {
impl Shape for Triangle {
const SIDES: usize = 3;
}
};
assert!(token_streams_eq(output, expected));
}
#[test]
fn multiple_expression_interpolations() {
let shape = quote!(Triangle);
let sides = quote!(3);
let output = quip! {
impl Shape for #{shape} {
const SIDES: usize = #{sides};
}
};
let expected = quip! {
impl Shape for Triangle {
const SIDES: usize = 3;
}
};
assert!(token_streams_eq(output, expected));
}
#[test]
fn expression_interpolation_contains_temporary_value() {
let output = quip!(#{[&String::new()][0]});
let expected = quote!("");
assert!(token_streams_eq(output, expected));
}