Go-based FM stereo transmitter with RDS, Windows-first and cross-platform
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

52 行
965B

  1. package rds
  2. import (
  3. "math"
  4. "testing"
  5. )
  6. func TestEncoderGenerate(t *testing.T) {
  7. cfg := DefaultConfig()
  8. enc, err := NewEncoder(cfg)
  9. if err != nil {
  10. t.Fatalf("unexpected error: %v", err)
  11. }
  12. samples := enc.Generate(128)
  13. if len(samples) != 128 {
  14. t.Fatalf("expected 128 samples, got %d", len(samples))
  15. }
  16. var max float64
  17. var sum float64
  18. for _, s := range samples {
  19. sum += math.Abs(s)
  20. if math.Abs(s) > max {
  21. max = math.Abs(s)
  22. }
  23. }
  24. if sum == 0 {
  25. t.Fatalf("expected non-zero samples")
  26. }
  27. if max > 0.1 {
  28. t.Fatalf("samples exceed configured amplitude: %v", max)
  29. }
  30. }
  31. func TestEncoderReset(t *testing.T) {
  32. cfg := DefaultConfig()
  33. enc, err := NewEncoder(cfg)
  34. if err != nil {
  35. t.Fatalf("unexpected error: %v", err)
  36. }
  37. sampleA := enc.Generate(1)[0]
  38. enc.Generate(10)
  39. enc.Reset()
  40. if sampleB := enc.Generate(1)[0]; math.Abs(sampleA-sampleB) > 1e-9 {
  41. t.Fatalf("expected reset to replay initial sample: %v vs %v", sampleA, sampleB)
  42. }
  43. }