Go-based FM stereo transmitter with RDS, Windows-first and cross-platform
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
989B

  1. package config
  2. import (
  3. "os"
  4. "path/filepath"
  5. "testing"
  6. )
  7. func TestDefaultValidate(t *testing.T) {
  8. cfg := Default()
  9. if err := cfg.Validate(); err != nil {
  10. t.Fatalf("default config invalid: %v", err)
  11. }
  12. }
  13. func TestLoadAndValidate(t *testing.T) {
  14. dir := t.TempDir()
  15. path := filepath.Join(dir, "config.json")
  16. if err := os.WriteFile(path, []byte(`{"fm":{"frequencyMHz":99.9},"backend":{"kind":"file","outputPath":"out.f32"},"control":{"listenAddress":"127.0.0.1:8088"}}`), 0o644); err != nil {
  17. t.Fatalf("write config: %v", err)
  18. }
  19. cfg, err := Load(path)
  20. if err != nil {
  21. t.Fatalf("load config: %v", err)
  22. }
  23. if cfg.FM.FrequencyMHz != 99.9 {
  24. t.Fatalf("unexpected frequency: %v", cfg.FM.FrequencyMHz)
  25. }
  26. }
  27. func TestValidateRejectsBadFrequency(t *testing.T) {
  28. cfg := Default()
  29. cfg.FM.FrequencyMHz = 200
  30. if err := cfg.Validate(); err == nil {
  31. t.Fatal("expected validation error")
  32. }
  33. }