MCPcopy Create free account
hub / github.com/cosdata/cosdata / test_expression_parser

Function test_expression_parser

src/cosql/expression.rs:317–383  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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 })),

Callers

nothing calls this directly

Calls 4

BinaryExpressionClass · 0.85
DateClass · 0.85
parse_expressionFunction · 0.85
ValueEnum · 0.70

Tested by

no test coverage detected