Add tests for left-hand side of assignment being an identifier.
Relates to #106
This commit is contained in:
parent
563d82a525
commit
65fadfd164
@ -444,7 +444,7 @@ pub(crate) fn tokenize(string: &str) -> EvalexprResult<Vec<Token>> {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::token::{char_to_partial_token, tokenize};
|
||||
use crate::token::{char_to_partial_token, tokenize, Token};
|
||||
use std::fmt::Write;
|
||||
|
||||
#[test]
|
||||
@ -474,4 +474,17 @@ mod tests {
|
||||
|
||||
assert_eq!(token_string, result_string);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn assignment_lhs_is_identifier() {
|
||||
let tokens = tokenize("a = 1").unwrap();
|
||||
assert_eq!(
|
||||
tokens.as_slice(),
|
||||
[
|
||||
Token::Identifier("a".to_string()),
|
||||
Token::Assign,
|
||||
Token::Int(1)
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -2083,3 +2083,28 @@ fn test_try_from() {
|
||||
);
|
||||
assert_eq!(EmptyType::try_from(value.clone()), Ok(()));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn assignment_lhs_is_identifier() {
|
||||
let tree = build_operator_tree("a = 1").unwrap();
|
||||
let operators: Vec<_> = tree.iter().map(|node| node.operator().clone()).collect();
|
||||
|
||||
let mut context = HashMapContext::new();
|
||||
tree.eval_empty_with_context_mut(&mut context).unwrap();
|
||||
assert_eq!(context.get_value("a"), Some(&Value::Int(1)));
|
||||
|
||||
assert!(
|
||||
matches!(
|
||||
operators.as_slice(),
|
||||
[
|
||||
Operator::Assign,
|
||||
Operator::VariableIdentifier { identifier: value },
|
||||
Operator::Const {
|
||||
value: Value::Int(1)
|
||||
}
|
||||
] if value == "a"
|
||||
),
|
||||
"actual: {:#?}",
|
||||
operators
|
||||
);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user