|
@@ -0,0 +1,97 @@
|
|
|
|
|
+package rgb
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "reflect"
|
|
|
|
|
+ "testing"
|
|
|
|
|
+
|
|
|
|
|
+ intrgb "github.com/wobkey/rgb/internal/rgb"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+func TestResolveEffectTargetsBacklightOnly(t *testing.T) {
|
|
|
|
|
+ targets, skipped, err := resolveEffectTargets("rainbow_moving_chevron", intrgb.AllZones())
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ t.Fatalf("resolveEffectTargets() unexpected error: %v", err)
|
|
|
|
|
+ }
|
|
|
|
|
+ wantTargets := []intrgb.EffectTarget{{Zone: intrgb.ZoneBacklight, ID: 17}}
|
|
|
|
|
+ if !reflect.DeepEqual(targets, wantTargets) {
|
|
|
|
|
+ t.Errorf("resolveEffectTargets() targets = %v, want %v", targets, wantTargets)
|
|
|
|
|
+ }
|
|
|
|
|
+ wantSkipped := []intrgb.Zone{intrgb.ZoneLogo, intrgb.ZoneSide}
|
|
|
|
|
+ if !reflect.DeepEqual(skipped, wantSkipped) {
|
|
|
|
|
+ t.Errorf("resolveEffectTargets() skipped = %v, want %v", skipped, wantSkipped)
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func TestResolveEffectTargetsBreathing(t *testing.T) {
|
|
|
|
|
+ targets, skipped, err := resolveEffectTargets("breathing", intrgb.AllZones())
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ t.Fatalf("resolveEffectTargets() unexpected error: %v", err)
|
|
|
|
|
+ }
|
|
|
|
|
+ wantTargets := []intrgb.EffectTarget{
|
|
|
|
|
+ {Zone: intrgb.ZoneLogo, ID: 4},
|
|
|
|
|
+ {Zone: intrgb.ZoneBacklight, ID: 5},
|
|
|
|
|
+ {Zone: intrgb.ZoneSide, ID: 4},
|
|
|
|
|
+ }
|
|
|
|
|
+ if !reflect.DeepEqual(targets, wantTargets) {
|
|
|
|
|
+ t.Errorf("resolveEffectTargets() targets = %v, want %v", targets, wantTargets)
|
|
|
|
|
+ }
|
|
|
|
|
+ if len(skipped) != 0 {
|
|
|
|
|
+ t.Errorf("resolveEffectTargets() skipped = %v, want none", skipped)
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func TestResolveEffectTargetsExplicitUnsupported(t *testing.T) {
|
|
|
|
|
+ cases := []struct {
|
|
|
|
|
+ name string
|
|
|
|
|
+ zones []intrgb.Zone
|
|
|
|
|
+ }{
|
|
|
|
|
+ {"rainbow_moving_chevron", []intrgb.Zone{intrgb.ZoneLogo}},
|
|
|
|
|
+ {"rainbow_wave", []intrgb.Zone{intrgb.ZoneBacklight}},
|
|
|
|
|
+ {"splash", []intrgb.Zone{intrgb.ZoneSide}},
|
|
|
|
|
+ }
|
|
|
|
|
+ for _, tc := range cases {
|
|
|
|
|
+ t.Run(tc.name+string(tc.zones[0]), func(t *testing.T) {
|
|
|
|
|
+ targets, skipped, err := resolveEffectTargets(tc.name, tc.zones)
|
|
|
|
|
+ if err == nil {
|
|
|
|
|
+ t.Fatal("resolveEffectTargets() expected error, got nil")
|
|
|
|
|
+ }
|
|
|
|
|
+ if len(targets) != 0 {
|
|
|
|
|
+ t.Errorf("resolveEffectTargets() targets = %v, want none", targets)
|
|
|
|
|
+ }
|
|
|
|
|
+ if len(skipped) != 0 {
|
|
|
|
|
+ t.Errorf("resolveEffectTargets() skipped = %v, want none", skipped)
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func TestResolveEffectTargetsUnknownName(t *testing.T) {
|
|
|
|
|
+ targets, skipped, err := resolveEffectTargets("not_an_effect", intrgb.AllZones())
|
|
|
|
|
+ if err == nil {
|
|
|
|
|
+ t.Fatal("resolveEffectTargets() expected error, got nil")
|
|
|
|
|
+ }
|
|
|
|
|
+ if len(targets) != 0 {
|
|
|
|
|
+ t.Errorf("resolveEffectTargets() targets = %v, want none", targets)
|
|
|
|
|
+ }
|
|
|
|
|
+ if len(skipped) != 0 {
|
|
|
|
|
+ t.Errorf("resolveEffectTargets() skipped = %v, want none", skipped)
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func TestResolveEffectTargetsStaticCompatibility(t *testing.T) {
|
|
|
|
|
+ targets, skipped, err := resolveEffectTargets("static", intrgb.AllZones())
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ t.Fatalf("resolveEffectTargets() unexpected error: %v", err)
|
|
|
|
|
+ }
|
|
|
|
|
+ wantTargets := []intrgb.EffectTarget{
|
|
|
|
|
+ {Zone: intrgb.ZoneLogo, ID: 5},
|
|
|
|
|
+ {Zone: intrgb.ZoneBacklight, ID: 1},
|
|
|
|
|
+ {Zone: intrgb.ZoneSide, ID: 5},
|
|
|
|
|
+ }
|
|
|
|
|
+ if !reflect.DeepEqual(targets, wantTargets) {
|
|
|
|
|
+ t.Errorf("resolveEffectTargets() targets = %v, want %v", targets, wantTargets)
|
|
|
|
|
+ }
|
|
|
|
|
+ if len(skipped) != 0 {
|
|
|
|
|
+ t.Errorf("resolveEffectTargets() skipped = %v, want none", skipped)
|
|
|
|
|
+ }
|
|
|
|
|
+}
|