kittenipc/kitcom/internal/tsgo/tsoptions/parsinghelpers_test.go
2025-10-15 10:12:44 +03:00

37 lines
922 B
Go

package tsoptions
import (
"reflect"
"strings"
"testing"
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/core"
)
func TestParseCompilerOptionNoMissingFields(t *testing.T) {
t.Parallel()
var missingKeys []string
for _, field := range reflect.VisibleFields(reflect.TypeFor[core.CompilerOptions]()) {
if !field.IsExported() {
continue
}
keyName := field.Name
// use the JSON key from the tag, if present
// e.g. `json:"dog[,anythingelse]"` --> dog
if jsonTag, ok := field.Tag.Lookup("json"); ok {
keyName = strings.SplitN(jsonTag, ",", 2)[0]
}
val := reflect.Zero(field.Type).Interface()
co := core.CompilerOptions{}
found := parseCompilerOptions(keyName, val, &co)
if !found {
missingKeys = append(missingKeys, keyName)
}
}
if len(missingKeys) > 0 {
t.Errorf("The following keys are missing entries in the ParseCompilerOptions"+
" switch statement:\n%v", missingKeys)
}
}