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) } } }