package compiler_test
import (
"context"
"encoding/json"
"fmt"
"github.com/MontFerret/ferret/pkg/compiler"
. "github.com/smartystreets/goconvey/convey"
"testing"
)
func TestString(t *testing.T) {
Convey("Should be possible to use multi line string", t, func() {
out := compiler.New().
MustCompile(`
RETURN "
FOO
BAR
"
`).
MustRun(context.Background())
So(string(out), ShouldEqual, `"\nFOO\nBAR\n"`)
})
Convey("Should be possible to use multi line string with nested strings using backtick", t, func() {
compiler.New().
MustCompile(fmt.Sprintf(`
RETURN %s
GetTitle
Hello world
%s
`, "`", "`")).
MustRun(context.Background())
out, err := json.Marshal(`
GetTitle
Hello world
`)
So(err, ShouldBeNil)
So(string(out), ShouldEqual, string(out))
})
Convey("Should be possible to use multi line string with nested strings using tick", t, func() {
compiler.New().
MustCompile(fmt.Sprintf(`
RETURN %s
GetTitle
Hello world
%s
`, "´", "´")).
MustRun(context.Background())
out, err := json.Marshal(`
GetTitle
Hello world
`)
So(err, ShouldBeNil)
So(string(out), ShouldEqual, string(out))
})
}
func BenchmarkStringLiteral(b *testing.B) {
p := compiler.New().MustCompile(`
RETURN "
FOO
BAR
"
`)
for n := 0; n < b.N; n++ {
p.Run(context.Background())
}
}