in yaml_test_runner/src/step/comparison.rs [67:101]
fn to_tokens(&self, tokens: &mut Tokens) {
let expr = self.expr.expression();
let op = match self.op.as_str() {
"lte" => "<=",
"lt" => "<",
"gt" => ">",
"gte" => ">=",
n => panic!("unsupported op {}", n),
};
match self.value.as_i64() {
Some(i) => self.assert(i, &expr, op, tokens),
None => match self.value.as_f64() {
Some(f) => self.assert(f, &expr, op, tokens),
None => {
match self.value.as_str() {
// handle "set" values
Some(s) if s.starts_with('$') => {
let s = s
.trim_start_matches('$')
.trim_start_matches('{')
.trim_end_matches('}');
let expr_ident = syn::Ident::from(expr.as_str());
let ident = syn::Ident::from(s);
let op_ident = syn::Ident::from(op);
tokens.append(quote! {
assert_comparison_from_set_value!(&json#expr_ident, #op_ident #ident);
});
}
_ => panic!("Expected i64 or f64 but found {:?}", &self.value),
}
}
},
}
}