#[test]
fn test_pipe_inside_string_literal() {
let query = r#"from("events") | filter(name == "test|value")"#;
let result = liven::parser::parse_query(query);
assert!(result.is_ok(), "Should parse query with pipe in string");
let parsed = result.unwrap();
assert!(matches!(parsed, liven::types::Query::Pipeline(_)));
}
#[test]
fn test_string_escape_sequences() {
let test_cases = vec![
(r#"filter(msg == "hello\nworld")"#, "newline"),
(r#"filter(msg == "hello\tworld")"#, "tab"),
(r#"filter(msg == "hello\"world")"#, "quote"),
(r#"filter(msg == "hello\\world")"#, "backslash"),
];
for (query, desc) in test_cases {
let result = liven::parser::parse_query(query);
assert!(result.is_ok(), "Should parse query with {} escape", desc);
}
}
#[test]
fn test_numeric_queries_with_edge_cases() {
let test_cases = vec![
(r#"filter(age == 25)"#, true), (r#"filter(age == 999999999999999999)"#, true), (r#"filter(price == 123.456)"#, true), (r#"filter(code == "123")"#, true), ];
for (query_part, should_pass) in test_cases {
let full_query = format!("from(\"test\") | {}", query_part);
let result = liven::parser::parse_query(&full_query);
if should_pass {
assert!(result.is_ok(), "Should parse: {}", full_query);
} else {
assert!(result.is_err(), "Should fail gracefully: {}", full_query);
}
}
}