Add analyzer tests to switch statements

This commit is contained in:
Sasha Koshka 2024-03-25 19:49:48 -04:00
parent a50a5febb9
commit f3bdfef5c5
1 changed files with 72 additions and 0 deletions

View File

@ -100,6 +100,78 @@ U: (| Int F64 UInt)
`)
}
func TestSwitch (test *testing.T) {
testString (test,
`
[switch x:Int]:Int = switch x
| 0 5
| 1 4
| 2 3
* 0
`)
}
func TestSwitchReturn (test *testing.T) {
testString (test,
`
[is5 x:Int]:Bool = {
switch x | 5 [return true]
false
}
`)
}
func TestSwitchReturnValueUsed (test *testing.T) {
testString (test,
`
[is5 x:Int]:Bool = switch x
| 5 [return true]
* false
`)
}
func TestSwitchErrBadLiteral (test *testing.T) {
testStringErr (test,
"cannot use array literal as Int", 4, 4,
`
[switch x:Int]:Int = switch x
| 0 5
| (1) 4
| 2 3
* 0
`)
}
func TestSwitchErrNotConstant (test *testing.T) {
testStringErr (test,
"y cannot represent a constant integer", 7, 4,
`
[switch x:Int]:Int = {
y:Int = 1
switch x
| 0 5
| y 4
| 2 3
* 0
}
`)
}
func TestSwitchErrDuplicate (test *testing.T) {
testStringErr (test,
"65 already listed in match at stream0.fspl:6:2", 7, 4,
`
[switch x:I8]:Int = switch x
| 0 5
| 1 4
| 2 3
| 65 2
| 'A' 1
* 0
`)
}
func TestIfElseReturnValueUsed (test *testing.T) {
testString (test,
`