()
| 315 | |
| 316 | #[test] |
| 317 | fn test_expression_parser() { |
| 318 | let values = [ |
| 319 | ("-2.0", Expression::Value(Value::Double(-2.0))), |
| 320 | ( |
| 321 | "$num % 2", |
| 322 | Expression::BinaryExpression(Box::new(BinaryExpression { |
| 323 | left: Expression::Value(Value::Variable("num".to_string())), |
| 324 | operator: BinaryExpressionOperator::Remainder, |
| 325 | right: Expression::Value(Value::Int(2)), |
| 326 | })), |
| 327 | ), |
| 328 | ( |
| 329 | "2 + 3 * 4", |
| 330 | Expression::BinaryExpression(Box::new(BinaryExpression { |
| 331 | left: Expression::Value(Value::Int(2)), |
| 332 | operator: BinaryExpressionOperator::Addition, |
| 333 | right: Expression::BinaryExpression(Box::new(BinaryExpression { |
| 334 | left: Expression::Value(Value::Int(3)), |
| 335 | operator: BinaryExpressionOperator::Multiplication, |
| 336 | right: Expression::Value(Value::Int(4)), |
| 337 | })), |
| 338 | })), |
| 339 | ), |
| 340 | ( |
| 341 | "2 * 3 + 4", |
| 342 | Expression::BinaryExpression(Box::new(BinaryExpression { |
| 343 | left: Expression::BinaryExpression(Box::new(BinaryExpression { |
| 344 | left: Expression::Value(Value::Int(2)), |
| 345 | operator: BinaryExpressionOperator::Multiplication, |
| 346 | right: Expression::Value(Value::Int(3)), |
| 347 | })), |
| 348 | operator: BinaryExpressionOperator::Addition, |
| 349 | right: Expression::Value(Value::Int(4)), |
| 350 | })), |
| 351 | ), |
| 352 | ( |
| 353 | "((((((((((26-08-2024))))))))))", |
| 354 | Expression::Value(Value::Date(Date(26, 8, 2024))), |
| 355 | ), |
| 356 | ( |
| 357 | "$selling_price - $cost_price", |
| 358 | Expression::BinaryExpression(Box::new(BinaryExpression { |
| 359 | left: Expression::Value(Value::Variable("selling_price".to_string())), |
| 360 | operator: BinaryExpressionOperator::Subtraction, |
| 361 | right: Expression::Value(Value::Variable("cost_price".to_string())), |
| 362 | })), |
| 363 | ), |
| 364 | ( |
| 365 | "($profit / $cost_price) * 100", |
| 366 | Expression::BinaryExpression(Box::new(BinaryExpression { |
| 367 | left: Expression::BinaryExpression(Box::new(BinaryExpression { |
| 368 | left: Expression::Value(Value::Variable("profit".to_string())), |
| 369 | operator: BinaryExpressionOperator::Division, |
| 370 | right: Expression::Value(Value::Variable("cost_price".to_string())), |
| 371 | })), |
| 372 | operator: BinaryExpressionOperator::Multiplication, |
| 373 | right: Expression::Value(Value::Int(100)), |
| 374 | })), |
nothing calls this directly
no test coverage detected