effect_test.go 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package rgb
  2. import (
  3. "reflect"
  4. "testing"
  5. intrgb "github.com/wobkey/rgb/internal/rgb"
  6. )
  7. func TestResolveEffectTargetsBacklightOnly(t *testing.T) {
  8. targets, skipped, err := resolveEffectTargets("rainbow_moving_chevron", intrgb.AllZones())
  9. if err != nil {
  10. t.Fatalf("resolveEffectTargets() unexpected error: %v", err)
  11. }
  12. wantTargets := []intrgb.EffectTarget{{Zone: intrgb.ZoneBacklight, ID: 17}}
  13. if !reflect.DeepEqual(targets, wantTargets) {
  14. t.Errorf("resolveEffectTargets() targets = %v, want %v", targets, wantTargets)
  15. }
  16. wantSkipped := []intrgb.Zone{intrgb.ZoneLogo, intrgb.ZoneSide}
  17. if !reflect.DeepEqual(skipped, wantSkipped) {
  18. t.Errorf("resolveEffectTargets() skipped = %v, want %v", skipped, wantSkipped)
  19. }
  20. }
  21. func TestResolveEffectTargetsBreathing(t *testing.T) {
  22. targets, skipped, err := resolveEffectTargets("breathing", intrgb.AllZones())
  23. if err != nil {
  24. t.Fatalf("resolveEffectTargets() unexpected error: %v", err)
  25. }
  26. wantTargets := []intrgb.EffectTarget{
  27. {Zone: intrgb.ZoneLogo, ID: 4},
  28. {Zone: intrgb.ZoneBacklight, ID: 5},
  29. {Zone: intrgb.ZoneSide, ID: 4},
  30. }
  31. if !reflect.DeepEqual(targets, wantTargets) {
  32. t.Errorf("resolveEffectTargets() targets = %v, want %v", targets, wantTargets)
  33. }
  34. if len(skipped) != 0 {
  35. t.Errorf("resolveEffectTargets() skipped = %v, want none", skipped)
  36. }
  37. }
  38. func TestResolveEffectTargetsExplicitUnsupported(t *testing.T) {
  39. cases := []struct {
  40. name string
  41. zones []intrgb.Zone
  42. }{
  43. {"rainbow_moving_chevron", []intrgb.Zone{intrgb.ZoneLogo}},
  44. {"rainbow_wave", []intrgb.Zone{intrgb.ZoneBacklight}},
  45. {"splash", []intrgb.Zone{intrgb.ZoneSide}},
  46. }
  47. for _, tc := range cases {
  48. t.Run(tc.name+string(tc.zones[0]), func(t *testing.T) {
  49. targets, skipped, err := resolveEffectTargets(tc.name, tc.zones)
  50. if err == nil {
  51. t.Fatal("resolveEffectTargets() expected error, got nil")
  52. }
  53. if len(targets) != 0 {
  54. t.Errorf("resolveEffectTargets() targets = %v, want none", targets)
  55. }
  56. if len(skipped) != 0 {
  57. t.Errorf("resolveEffectTargets() skipped = %v, want none", skipped)
  58. }
  59. })
  60. }
  61. }
  62. func TestResolveEffectTargetsUnknownName(t *testing.T) {
  63. targets, skipped, err := resolveEffectTargets("not_an_effect", intrgb.AllZones())
  64. if err == nil {
  65. t.Fatal("resolveEffectTargets() expected error, got nil")
  66. }
  67. if len(targets) != 0 {
  68. t.Errorf("resolveEffectTargets() targets = %v, want none", targets)
  69. }
  70. if len(skipped) != 0 {
  71. t.Errorf("resolveEffectTargets() skipped = %v, want none", skipped)
  72. }
  73. }
  74. func TestResolveEffectTargetsStaticCompatibility(t *testing.T) {
  75. targets, skipped, err := resolveEffectTargets("static", intrgb.AllZones())
  76. if err != nil {
  77. t.Fatalf("resolveEffectTargets() unexpected error: %v", err)
  78. }
  79. wantTargets := []intrgb.EffectTarget{
  80. {Zone: intrgb.ZoneLogo, ID: 5},
  81. {Zone: intrgb.ZoneBacklight, ID: 1},
  82. {Zone: intrgb.ZoneSide, ID: 5},
  83. }
  84. if !reflect.DeepEqual(targets, wantTargets) {
  85. t.Errorf("resolveEffectTargets() targets = %v, want %v", targets, wantTargets)
  86. }
  87. if len(skipped) != 0 {
  88. t.Errorf("resolveEffectTargets() skipped = %v, want none", skipped)
  89. }
  90. }