Automate testing of the examples directory
This commit is contained in:
parent
4cde5179f1
commit
a7a5018f38
53
examples/examples_test.go
Normal file
53
examples/examples_test.go
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
package examples_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"embed"
|
||||||
|
"fmt"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"code.betamike.com/mediocregopher/ginger/gg"
|
||||||
|
"code.betamike.com/mediocregopher/ginger/vm"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
//go:embed *.gg
|
||||||
|
var examplesFS embed.FS
|
||||||
|
|
||||||
|
func TestAllExamples(t *testing.T) {
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
path string
|
||||||
|
in vm.Value
|
||||||
|
exp vm.Value
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
path: "fib.gg",
|
||||||
|
in: vm.Value{Value: gg.Number(5)},
|
||||||
|
exp: vm.Value{Value: gg.Number(5)},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "fib.gg",
|
||||||
|
in: vm.Value{Value: gg.Number(10)},
|
||||||
|
exp: vm.Value{Value: gg.Number(55)},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "fib.gg",
|
||||||
|
in: vm.Value{Value: gg.Number(69)},
|
||||||
|
exp: vm.Value{Value: gg.Number(117669030460994)},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
t.Run(fmt.Sprintf("%s_%v", test.path, test.in), func(t *testing.T) {
|
||||||
|
f, err := examplesFS.Open(test.path)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
got, err := vm.EvaluateSource(f, test.in, vm.GlobalScope)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, test.exp.Equal(got), "%v != %v", test.exp, got)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user