62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
package lang
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestGenerateExternalGoStructConstruction(t *testing.T) {
|
|
prog, err := Parse(`package demo
|
|
import platform "example/platform"
|
|
fun create(issuer: String, audience: String, jwksUrl: String): *platform.Authorizer {
|
|
return platform.Authorizer(issuer = issuer, audience = audience, jwksUrl = jwksUrl)
|
|
}`)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
out, err := GenerateGo(prog)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
want := `&platform.Authorizer{Issuer: issuer, Audience: audience, JWKSURL: jwksUrl}`
|
|
if !strings.Contains(string(out), want) {
|
|
t.Fatalf("missing %q:\n%s", want, out)
|
|
}
|
|
}
|
|
|
|
func TestGenerateEmbeddedValue(t *testing.T) {
|
|
prog, err := Parse(`package demo
|
|
import embed
|
|
@embed("assets/*") val assets: embed.FS
|
|
fun main() { println(assets) }`)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
out, err := GenerateGo(prog)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, want := range []string{`"embed"`, `//go:embed assets/*`, `var assets embed.FS`} {
|
|
if !strings.Contains(string(out), want) {
|
|
t.Fatalf("missing %q:\n%s", want, out)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestGenerateEmbeddedStringAddsBlankImport(t *testing.T) {
|
|
prog, err := Parse(`package demo
|
|
@embed("schema.sql") val schema: String
|
|
fun main() { println(schema) }`)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
out, err := GenerateGo(prog)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, want := range []string{`_ "embed"`, `//go:embed schema.sql`, `var schema string`} {
|
|
if !strings.Contains(string(out), want) {
|
|
t.Fatalf("missing %q:\n%s", want, out)
|
|
}
|
|
}
|
|
}
|