use super::RULE;
#[test]
fn test_good_parse_command() {
let good = "'name:john age:30' | parse '{name}:{age}'";
RULE.assert_ignores(good);
}
#[test]
fn test_good_parse_with_patterns() {
let good = "'User: alice, ID: 123' | parse 'User: {name}, ID: {id}'";
RULE.assert_ignores(good);
}
#[test]
fn test_good_simple_split() {
let good = "'a,b,c' | split row ','";
RULE.assert_ignores(good);
}
#[test]
fn test_good_split_for_iteration() {
let good = "'a,b,c' | split row ',' | each { |item| $item | str upcase }";
RULE.assert_ignores(good);
}
#[test]
fn test_good_split_column() {
let good = "'name,age,city' | split column ',' name age city";
RULE.assert_ignores(good);
}
#[test]
fn test_good_from_csv() {
let good = "'name,age\\njohn,30\\njane,25' | from csv";
RULE.assert_ignores(good);
}
#[test]
fn test_good_parse_user_data() {
let good = r#"
let data = "user:john:1000"
let parsed = ($data | parse "{username}:{name}:{uid}")
let username = ($parsed | get username)
"#;
RULE.assert_ignores(good);
}
#[test]
fn test_good_parse_ip_port() {
let good = "'192.168.1.100:8080' | parse '{ip}:{port}'";
RULE.assert_ignores(good);
}
#[test]
fn test_good_parse_log_format() {
let good = "'[2024-01-15] INFO: Server started' | parse '[{date}] {level}: {message}'";
RULE.assert_ignores(good);
}
#[test]
fn test_good_parse_device_info() {
let good = "'Device AA:BB:CC:DD:EE:FF MyDevice' | parse 'Device {mac} {name}'";
RULE.assert_ignores(good);
}
#[test]
fn test_good_parse_email() {
let good = "'user@example.com' | parse '{username}@{domain}'";
RULE.assert_ignores(good);
}
#[test]
fn test_good_parse_key_value() {
let good = "'key=value' | parse '{key}={value}'";
RULE.assert_ignores(good);
}
#[test]
fn test_good_parse_with_regex() {
let good = r"'foo bar baz' | parse --regex '\\s+(?<word>\\w+)\\s+'";
RULE.assert_ignores(good);
}
#[test]
fn test_good_split_without_indexing() {
let good = r#"
let parts = ("a,b,c" | split row ",")
$parts | each { |p| print $p }
"#;
RULE.assert_ignores(good);
}
#[test]
fn test_good_parse_temperature() {
let good = "'Temperature: 25.5°C' | parse 'Temperature: {temp}°C'";
RULE.assert_ignores(good);
}
#[test]
fn test_good_parse_structured_log() {
let good = "'ERROR [module:function] Something went wrong' | parse '{level} \
[{module}:{function}] {message}'";
RULE.assert_ignores(good);
}
#[test]
fn test_good_split_with_filter() {
let good = r#"
"a,b,c,d" | split row "," | where $it != "b"
"#;
RULE.assert_ignores(good);
}
#[test]
fn test_good_parse_with_underscore_ignore() {
let good = "'hello world' | parse '{word} {_}'";
RULE.assert_ignores(good);
}
#[test]
fn test_good_from_json() {
let good = r#"'{"name": "john", "age": 30}' | from json"#;
RULE.assert_ignores(good);
}
#[test]
fn test_good_parse_multiline() {
let good = r#"
let logs = [
"[INFO] Starting server"
"[ERROR] Connection failed"
]
$logs | each { |line| $line | parse '[{level}] {message}' }
"#;
RULE.assert_ignores(good);
}
#[test]
fn test_ignore_parse_usage() {
let good_code = r#"
open data.txt | parse "{name} {value}"
"#;
RULE.assert_ignores(good_code);
}
#[test]
fn test_ignore_split_without_each() {
let good_code = r#"
"one,two,three" | split row ","
"#;
RULE.assert_ignores(good_code);
}