-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathis_balanced_test.go
48 lines (41 loc) · 1.56 KB
/
is_balanced_test.go
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
45
46
47
48
package parentheses_test
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/thenativeweb/codingcircle/parentheses"
)
func TestIsBalanced(t *testing.T) {
t.Run("empty string", func(t *testing.T) {
assert.True(t, parentheses.IsBalanced(""))
})
t.Run("balanced string", func(t *testing.T) {
assert.True(t, parentheses.IsBalanced("()"))
assert.True(t, parentheses.IsBalanced("(())"))
assert.True(t, parentheses.IsBalanced("()()"))
assert.True(t, parentheses.IsBalanced("(()())"))
assert.True(t, parentheses.IsBalanced("((()))"))
})
t.Run("unbalanced string", func(t *testing.T) {
assert.False(t, parentheses.IsBalanced("("))
assert.False(t, parentheses.IsBalanced(")"))
assert.False(t, parentheses.IsBalanced(")("))
assert.False(t, parentheses.IsBalanced("())"))
assert.False(t, parentheses.IsBalanced("(()"))
assert.False(t, parentheses.IsBalanced("((())"))
})
t.Run("balanced string with wildcard", func(t *testing.T) {
assert.True(t, parentheses.IsBalanced("*"))
assert.True(t, parentheses.IsBalanced("(*)"))
assert.True(t, parentheses.IsBalanced("(*))"))
assert.True(t, parentheses.IsBalanced("(**))*"))
assert.True(t, parentheses.IsBalanced("*((**))*"))
assert.True(t, parentheses.IsBalanced("(***"))
})
t.Run("unbalanced string with wildcard", func(t *testing.T) {
assert.False(t, parentheses.IsBalanced("*("))
assert.False(t, parentheses.IsBalanced("*)("))
assert.False(t, parentheses.IsBalanced("***("))
assert.False(t, parentheses.IsBalanced("(***(()"))
assert.False(t, parentheses.IsBalanced("(**("))
})
}