mirror of
https://github.com/ivanizag/izapple2.git
synced 2025-01-02 20:29:44 +00:00
77 lines
1.8 KiB
Go
77 lines
1.8 KiB
Go
package izapple2
|
|
|
|
import (
|
|
"flag"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestConfigurationModel(t *testing.T) {
|
|
|
|
t.Run("test that the default model exists", func(t *testing.T) {
|
|
_, _, err := loadConfigurationModelsAndDefault()
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
})
|
|
|
|
t.Run("test preconfigured models are complete", func(t *testing.T) {
|
|
models, _, err := loadConfigurationModelsAndDefault()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
requiredFields := []string{
|
|
confRom, confCharRom, confCpu, confSpeed, confRamworks, confNsc,
|
|
confTrace, confProfile, confForceCaps, confRgb, confRomx,
|
|
confS0, confS1, confS2, confS3, confS4, confS5, confS6, confS7,
|
|
}
|
|
availabledModels := models.availableModels()
|
|
for _, modelName := range availabledModels {
|
|
model, err := models.get(modelName)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
for _, field := range requiredFields {
|
|
if _, ok := model.getHas(field); !ok {
|
|
t.Errorf("missing field '%s' in the preconfigured model '%s'", field, modelName)
|
|
}
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestCommandLineHelp(t *testing.T) {
|
|
t.Run("test command line help", func(t *testing.T) {
|
|
models, configuration, err := loadConfigurationModelsAndDefault()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
prevFlags := flag.CommandLine
|
|
flag.CommandLine = flag.NewFlagSet("izapple2", flag.ExitOnError)
|
|
|
|
setupFlags(models, configuration)
|
|
|
|
buffer := strings.Builder{}
|
|
flag.CommandLine.SetOutput(&buffer)
|
|
flag.Usage()
|
|
usage := buffer.String()
|
|
|
|
flag.CommandLine = prevFlags
|
|
|
|
prevous, err := os.ReadFile("doc/usage.txt")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if usage != string(prevous) {
|
|
os.WriteFile("doc/usage_new.txt", []byte(usage), 0644)
|
|
t.Errorf(`Usage has changed, check doc/usage_new.txt for the new version.
|
|
If it is correct, execute \"go run update_readme.go\" in the doc folder.`)
|
|
}
|
|
})
|
|
}
|