1
exercism fetch ceylon bracket-push

source/bracketpush/BracketsTest.ceylon

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import ceylon.test {
    ...
}

// Tests adapted from problem-specifications version 1.3.0

{[String, Boolean]*} cases => {
    // paired square brackets
    ["[]", true],
    // empty string
    ["", true],
    // unpaired brackets
    ["[[", false],
    // wrong ordered brackets
    ["}{", false],
    // wrong closing bracket
    ["{]", false],
    // paired with whitespace
    ["{ }", true],
    // partially paired brackets
    ["{[])", false],
    // simple nested brackets
    ["{[]}", true],
    // several paired brackets
    ["{}[]", true],
    // paired and nested brackets
    ["([{}({}[])])", true],
    // unopened closing brackets
    ["{[)][]}", false],
    // unpaired and nested brackets
    ["([{])", false],
    // paired and wrong nested brackets
    ["[({]})", false],
    // math expression
    ["(((185 + 223.85) * 15) - 543)/2", true],
    // complex latex expression
    ["\\left(\\begin{array}{cc} \\frac{1}{3} & x\\\\ \\mathrm{e}^{x} &... x^2 \\end{array}\\right)", true]
};

test
parameters (`value cases`)
void testBalanced(String brackets, Boolean expected) {
    assertEquals(balanced(brackets), expected);
}