Go-based FM stereo transmitter with RDS, Windows-first and cross-platform
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

58 satır
1.3KB

  1. package app
  2. import (
  3. "testing"
  4. "github.com/jan/fm-rds-tx/internal/output"
  5. )
  6. func TestRuntimeIndicator(t *testing.T) {
  7. cases := []struct {
  8. name string
  9. queueHealth output.QueueHealth
  10. lateBuffers uint64
  11. want RuntimeIndicator
  12. }{
  13. {
  14. name: "normal",
  15. queueHealth: output.QueueHealthNormal,
  16. lateBuffers: 0,
  17. want: RuntimeIndicatorNormal,
  18. },
  19. {
  20. name: "degradedLateBuffers",
  21. queueHealth: output.QueueHealthNormal,
  22. lateBuffers: 1,
  23. want: RuntimeIndicatorDegraded,
  24. },
  25. {
  26. name: "degradedQueueLow",
  27. queueHealth: output.QueueHealthLow,
  28. lateBuffers: 0,
  29. want: RuntimeIndicatorDegraded,
  30. },
  31. {
  32. name: "queueCritical",
  33. queueHealth: output.QueueHealthCritical,
  34. lateBuffers: 0,
  35. want: RuntimeIndicatorQueueCritical,
  36. },
  37. {
  38. name: "criticalLateBuffers",
  39. queueHealth: output.QueueHealthCritical,
  40. lateBuffers: 3,
  41. want: RuntimeIndicatorQueueCritical,
  42. },
  43. }
  44. for _, tc := range cases {
  45. tc := tc
  46. t.Run(tc.name, func(t *testing.T) {
  47. if got := runtimeIndicator(tc.queueHealth, tc.lateBuffers); got != tc.want {
  48. t.Fatalf("runtime indicator mismatch: queue=%s late=%d want=%s got=%s",
  49. tc.queueHealth, tc.lateBuffers, tc.want, got)
  50. }
  51. })
  52. }
  53. }