|
| 1 | +import pytest |
| 2 | + |
| 3 | +from simple_ddl_parser import utils |
| 4 | + |
| 5 | + |
| 6 | +@pytest.mark.parametrize( |
| 7 | + "expression, expected_result", |
| 8 | + [ |
| 9 | + ([], []), |
| 10 | + (["("], []), |
| 11 | + ([")"], []), |
| 12 | + (["(", ")"], []), |
| 13 | + ([")", "("], []), |
| 14 | + (["(", "A"], ["A"]), |
| 15 | + (["A", ")"], ["A"]), |
| 16 | + (["(", "A", ")"], ["A"]), |
| 17 | + (["A", ")", ")"], ["A"]), |
| 18 | + (["(", "(", "A"], ["A"]), |
| 19 | + (["A", "B", "C"], ["A", "B", "C"]), |
| 20 | + (["A", "(", "(", "B", "C", "("], ["A", "B", "C"]), |
| 21 | + (["A", ")", "B", ")", "(", "C"], ["A", "B", "C"]), |
| 22 | + (["(", "A", ")", "B", "C", ")"], ["A", "B", "C"]), |
| 23 | + ([dict()], [dict()]), # Edge case (unhashable types) |
| 24 | + ] |
| 25 | +) |
| 26 | +def test_remove_par(expression, expected_result): |
| 27 | + assert utils.remove_par(expression) == expected_result |
| 28 | + |
| 29 | + |
| 30 | +@pytest.mark.parametrize( |
| 31 | + "expression, expected_result", |
| 32 | + [ |
| 33 | + ("", ""), |
| 34 | + ("simple", "simple"), |
| 35 | +
|
| 36 | + ("'pars_m_t'", "'\t'"), |
| 37 | + ("'pars_m_n'", "'\n'"), |
| 38 | + ("'pars_m_dq'", '"'), |
| 39 | + ("pars_m_single", "'"), |
| 40 | +
|
| 41 | + ("STRING_'pars_m_t'STRING", "STRING_'\t'STRING"), |
| 42 | + ("STRING_'pars_m_n'STRING", "STRING_'\n'STRING"), |
| 43 | + ("STRING_'pars_m_dq'STRING", "STRING_\"STRING"), |
| 44 | + ("STRING_pars_m_singleSTRING", "STRING_'STRING"), |
| 45 | +
|
| 46 | + ("pars_m_single pars_m_single", "' '"), |
| 47 | + ("'pars_m_t''pars_m_n'", "'\t''pars_m_n'"), # determined by dict element order |
| 48 | + ] |
| 49 | +) |
| 50 | +def test_check_spec(expression, expected_result): |
| 51 | + assert utils.check_spec(expression) == expected_result |
| 52 | + |
| 53 | + |
| 54 | +@pytest.mark.parametrize( |
| 55 | + "expression, expected_result", |
| 56 | + [ |
| 57 | + (")", 0), |
| 58 | + (")()", 0), |
| 59 | + ("())", 2), |
| 60 | + ("()())", 4), |
| 61 | + ("", None), |
| 62 | + ("text", None), |
| 63 | + ("()", None), |
| 64 | + ("(balanced) (brackets)", None), |
| 65 | + ("(not)) (balanced) (brackets", 5) |
| 66 | + ] |
| 67 | +) |
| 68 | +def test_find_first_unpair_closed_par(expression, expected_result): |
| 69 | + assert utils.find_first_unpair_closed_par(expression) == expected_result |
0 commit comments