-
Notifications
You must be signed in to change notification settings - Fork 28
/
case_test.go
34 lines (31 loc) 路 763 Bytes
/
case_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
package sqlingo
import (
"errors"
"testing"
)
func TestCase(t *testing.T) {
c1 := expression{
builder: func(scope scope) (string, error) {
return "c1", nil
},
}
c2 := expression{
builder: func(scope scope) (string, error) {
return "c2", nil
},
}
assertValue(t, Case().WhenThen(c1, 1).WhenThen(c2, 2),
"CASE WHEN c1 THEN 1 WHEN c2 THEN 2 END")
assertValue(t, Case().WhenThen(c1, 1).WhenThen(c2, 2).Else(0),
"CASE WHEN c1 THEN 1 WHEN c2 THEN 2 ELSE 0 END")
assertValue(t, Case().Else(0),
"0")
ee := expression{
builder: func(scope scope) (string, error) {
return "", errors.New("error")
},
}
assertError(t, Case().WhenThen(ee, 2))
assertError(t, Case().WhenThen(c1, ee))
assertError(t, Case().WhenThen(c1, 1).Else(ee))
}