ceremonyclient/bedlam/compiler/parser_test.go
Cassandra Heart e51992f3e8
OT
2025-03-23 21:11:16 -05:00

130 lines
1.7 KiB
Go

//
// Copyright (c) 2019 Markku Rossi
//
// All rights reserved.
//
package compiler
import (
"bytes"
"fmt"
"os"
"testing"
"source.quilibrium.com/quilibrium/monorepo/bedlam/compiler/utils"
)
const (
verbose = false
)
var parserTests = []string{
`
package main
`,
`
package main
func main() {}
`,
`
package main
func main(a int4) {}
`,
`
package main
func main(a int4, b int4) {}
`,
`
package main
func main(a, b int4) {}
`,
`
package main
func main(a, b int4) int5 {}
`,
`
package main
func main(a, b int4) (int5) {}
`,
`
package main
func main(a, b int4) (int5, int6) {}
`,
`
package main
func main(a, b int4) (int5) {
return
}`,
`
package main
func main(a, b int4) (int5) {
return a * b + c * d
}`,
`
package main
func main(a, b int4) (int5) {
return a * b * c
}`,
`
package main
func main(a, b int4) (int5) {
return a + b + c * d + e
}`,
`
package main
func main(a, b int4) (int4) {
if a > b {
return a
}
return b
}`,
`
package main
func main(a, b int4) (int4) {
if a > b {
return a
} else {
return b
}
}`,
`
package main
func main(a, b int4) (int4) {
if a > b || a == b {
return a
} else {
return b
}
}`,
`
package main
func main(a, b int4) int4 {
return max(a, b)
}
func max(a, b int4) int4 {
if a > b {
return a
}
return v
}
`,
}
func TestParser(t *testing.T) {
min := 0
for idx, test := range parserTests {
if idx < min {
continue
}
logger := utils.NewLogger(os.Stdout)
parser := NewParser(fmt.Sprintf("{test %d}", idx), nil, logger,
bytes.NewReader([]byte(test)))
_, err := parser.Parse(nil)
if err != nil {
t.Fatalf("Parse test %d failed: %v", idx, err)
}
}
}