mirror of
https://github.com/QuilibriumNetwork/ceremonyclient.git
synced 2026-02-21 18:37:26 +08:00
130 lines
1.7 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|