From bbc912eb75bd0fb724e447ca66ed0f315cbdde7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Teemu=20P=C3=A4tsi?= Date: Tue, 27 May 2025 04:00:09 +0300 Subject: [PATCH] expr: Add tests for regex range quantifiers --- tests/by-util/test_expr.rs | 68 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/tests/by-util/test_expr.rs b/tests/by-util/test_expr.rs index b573ea098..38028a54b 100644 --- a/tests/by-util/test_expr.rs +++ b/tests/by-util/test_expr.rs @@ -406,6 +406,74 @@ fn test_regex_dollar() { .stdout_only("0\n"); } +#[test] +fn test_regex_range_quantifier() { + new_ucmd!() + .args(&["a", ":", "a\\{1\\}"]) + .succeeds() + .stdout_only("1\n"); + new_ucmd!() + .args(&["aaaaaaaaaa", ":", "a\\{1,\\}"]) + .succeeds() + .stdout_only("10\n"); + new_ucmd!() + .args(&["aaa", ":", "a\\{,3\\}"]) + .succeeds() + .stdout_only("3\n"); + new_ucmd!() + .args(&["aa", ":", "a\\{1,3\\}"]) + .succeeds() + .stdout_only("2\n"); + new_ucmd!() + .args(&["aaaa", ":", "a\\{,\\}"]) + .succeeds() + .stdout_only("4\n"); + new_ucmd!() + .args(&["a", ":", "ab\\{,3\\}"]) + .succeeds() + .stdout_only("1\n"); + new_ucmd!() + .args(&["abbb", ":", "ab\\{,3\\}"]) + .succeeds() + .stdout_only("4\n"); + new_ucmd!() + .args(&["abcabc", ":", "\\(abc\\)\\{,\\}"]) + .succeeds() + .stdout_only("abc\n"); + new_ucmd!() + .args(&["a", ":", "a\\{,6\\}"]) + .succeeds() + .stdout_only("1\n"); + new_ucmd!() + .args(&["{abc}", ":", "\\{abc\\}"]) + .succeeds() + .stdout_only("5\n"); + new_ucmd!() + .args(&["a{bc}", ":", "a\\(\\{bc\\}\\)"]) + .succeeds() + .stdout_only("{bc}\n"); + new_ucmd!() + .args(&["{b}", ":", "a\\|\\{b\\}"]) + .succeeds() + .stdout_only("3\n"); + new_ucmd!() + .args(&["{", ":", "a\\|\\{"]) + .succeeds() + .stdout_only("1\n"); + new_ucmd!() + .args(&["{}}}", ":", "\\{\\}\\}\\}"]) + .succeeds() + .stdout_only("4\n"); + new_ucmd!() + .args(&["a{}}}", ":", "a\\{\\}\\}\\}"]) + .fails() + .stderr_only("expr: Invalid content of \\{\\}\n"); + new_ucmd!() + .args(&["ab", ":", "ab\\{\\}"]) + .fails() + .stderr_only("expr: Invalid content of \\{\\}\n"); +} + #[test] fn test_substr() { new_ucmd!()