|
4 | 4 | import static org.junit.jupiter.api.Assertions.assertThrows;
|
5 | 5 | import static org.junit.jupiter.api.Assertions.assertTrue;
|
6 | 6 |
|
| 7 | +import java.util.stream.Stream; |
7 | 8 | import org.junit.jupiter.api.Test;
|
| 9 | +import org.junit.jupiter.params.ParameterizedTest; |
| 10 | +import org.junit.jupiter.params.provider.Arguments; |
| 11 | +import org.junit.jupiter.params.provider.MethodSource; |
8 | 12 |
|
9 | 13 | class BalancedBracketsTest {
|
10 | 14 |
|
11 |
| - @Test |
12 |
| - void testIsPaired() { |
13 |
| - assertTrue(BalancedBrackets.isPaired('(', ')')); |
14 |
| - assertTrue(BalancedBrackets.isPaired('[', ']')); |
15 |
| - assertTrue(BalancedBrackets.isPaired('{', '}')); |
16 |
| - assertTrue(BalancedBrackets.isPaired('<', '>')); |
| 15 | + @ParameterizedTest |
| 16 | + @MethodSource("providePairedBracketsForTrue") |
| 17 | + void testIsPairedTrue(char opening, char closing) { |
| 18 | + assertTrue(BalancedBrackets.isPaired(opening, closing)); |
| 19 | + } |
17 | 20 |
|
18 |
| - assertFalse(BalancedBrackets.isPaired('(', ']')); |
19 |
| - assertFalse(BalancedBrackets.isPaired('[', ')')); |
20 |
| - assertFalse(BalancedBrackets.isPaired('{', '>')); |
21 |
| - assertFalse(BalancedBrackets.isPaired('<', ')')); |
| 21 | + @ParameterizedTest |
| 22 | + @MethodSource("providePairedBracketsForFalse") |
| 23 | + void testIsPairedFalse(char opening, char closing) { |
| 24 | + assertFalse(BalancedBrackets.isPaired(opening, closing)); |
| 25 | + } |
22 | 26 |
|
23 |
| - assertFalse(BalancedBrackets.isPaired('a', 'b')); |
24 |
| - assertFalse(BalancedBrackets.isPaired('!', '@')); |
| 27 | + @ParameterizedTest |
| 28 | + @MethodSource("provideBalancedStringsForTrue") |
| 29 | + void testIsBalancedTrue(String input) { |
| 30 | + assertTrue(BalancedBrackets.isBalanced(input)); |
25 | 31 | }
|
26 | 32 |
|
27 |
| - @Test |
28 |
| - void testIsBalanced() { |
29 |
| - assertTrue(BalancedBrackets.isBalanced("[()]{}{[()()]()}")); |
30 |
| - assertTrue(BalancedBrackets.isBalanced("()")); |
31 |
| - assertTrue(BalancedBrackets.isBalanced("[]")); |
32 |
| - assertTrue(BalancedBrackets.isBalanced("{}")); |
33 |
| - assertTrue(BalancedBrackets.isBalanced("<>")); |
34 |
| - assertTrue(BalancedBrackets.isBalanced("[{<>}]")); |
35 |
| - assertTrue(BalancedBrackets.isBalanced("")); |
36 |
| - |
37 |
| - assertFalse(BalancedBrackets.isBalanced("[(])")); |
38 |
| - assertFalse(BalancedBrackets.isBalanced("([)]")); |
39 |
| - assertFalse(BalancedBrackets.isBalanced("{[<]>}")); |
40 |
| - assertFalse(BalancedBrackets.isBalanced("[")); |
41 |
| - assertFalse(BalancedBrackets.isBalanced(")")); |
42 |
| - assertFalse(BalancedBrackets.isBalanced("[{")); |
43 |
| - assertFalse(BalancedBrackets.isBalanced("]")); |
44 |
| - |
45 |
| - assertFalse(BalancedBrackets.isBalanced("[a+b]")); |
46 |
| - assertFalse(BalancedBrackets.isBalanced("a+b")); |
| 33 | + @ParameterizedTest |
| 34 | + @MethodSource("provideBalancedStringsForFalse") |
| 35 | + void testIsBalancedFalse(String input) { |
| 36 | + assertFalse(BalancedBrackets.isBalanced(input)); |
47 | 37 | }
|
48 | 38 |
|
49 | 39 | @Test
|
50 | 40 | void testIsBalancedNull() {
|
51 | 41 | assertThrows(IllegalArgumentException.class, () -> BalancedBrackets.isBalanced(null));
|
52 | 42 | }
|
| 43 | + |
| 44 | + private static Stream<Arguments> providePairedBracketsForTrue() {return Stream.of(Arguments.of('(', ')'), Arguments.of('[', ']'), Arguments.of('{', '}'), Arguments.of('<', '>')); |
| 45 | + } |
| 46 | + |
| 47 | + private static Stream<Arguments> providePairedBracketsForFalse() { |
| 48 | + return Stream.of(Arguments.of('(', ']'), Arguments.of('[', ')'), Arguments.of('{', '>'), Arguments.of('<', ')'), Arguments.of('a', 'b'), Arguments.of('!', '@')); |
| 49 | + } |
| 50 | + |
| 51 | + private static Stream<Arguments> provideBalancedStringsForTrue() { |
| 52 | + return Stream.of(Arguments.of("[()]{}{[()()]()}"), Arguments.of("()"), Arguments.of("[]"), Arguments.of("{}"), Arguments.of("<>"), Arguments.of("[{<>}]"), Arguments.of("")); |
| 53 | + } |
| 54 | + |
| 55 | + private static Stream<Arguments> provideBalancedStringsForFalse() { |
| 56 | + return Stream.of(Arguments.of("[(])"), Arguments.of("([)]"), Arguments.of("{[<]>}"), Arguments.of("["), Arguments.of(")"), Arguments.of("[{"), Arguments.of("]"), Arguments.of("[a+b]"), Arguments.of("a+b")); |
| 57 | + } |
53 | 58 | }
|
0 commit comments