mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-13 00:42:49 -05:00
switch hto monorepo structure
This commit is contained in:
185
backend/internal/server/brightness/sysfs_test.go
Normal file
185
backend/internal/server/brightness/sysfs_test.go
Normal file
@@ -0,0 +1,185 @@
|
||||
package brightness
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSysfsBackend_PercentConversions(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
device *sysfsDevice
|
||||
percent int
|
||||
wantValue int
|
||||
tolerance int
|
||||
}{
|
||||
{
|
||||
name: "backlight 0% should be minValue=1",
|
||||
device: &sysfsDevice{maxBrightness: 100, minValue: 1, class: ClassBacklight},
|
||||
percent: 0,
|
||||
wantValue: 1,
|
||||
tolerance: 0,
|
||||
},
|
||||
{
|
||||
name: "backlight 1% should be minValue=1",
|
||||
device: &sysfsDevice{maxBrightness: 100, minValue: 1, class: ClassBacklight},
|
||||
percent: 1,
|
||||
wantValue: 1,
|
||||
tolerance: 0,
|
||||
},
|
||||
{
|
||||
name: "backlight 50% should be ~50",
|
||||
device: &sysfsDevice{maxBrightness: 100, minValue: 1, class: ClassBacklight},
|
||||
percent: 50,
|
||||
wantValue: 50,
|
||||
tolerance: 1,
|
||||
},
|
||||
{
|
||||
name: "backlight 100% should be max",
|
||||
device: &sysfsDevice{maxBrightness: 100, minValue: 1, class: ClassBacklight},
|
||||
percent: 100,
|
||||
wantValue: 100,
|
||||
tolerance: 0,
|
||||
},
|
||||
{
|
||||
name: "led 0% should be 0",
|
||||
device: &sysfsDevice{maxBrightness: 255, minValue: 0, class: ClassLED},
|
||||
percent: 0,
|
||||
wantValue: 0,
|
||||
tolerance: 0,
|
||||
},
|
||||
{
|
||||
name: "led 1% should be ~2-3",
|
||||
device: &sysfsDevice{maxBrightness: 255, minValue: 0, class: ClassLED},
|
||||
percent: 1,
|
||||
wantValue: 2,
|
||||
tolerance: 3,
|
||||
},
|
||||
{
|
||||
name: "led 50% should be ~127",
|
||||
device: &sysfsDevice{maxBrightness: 255, minValue: 0, class: ClassLED},
|
||||
percent: 50,
|
||||
wantValue: 127,
|
||||
tolerance: 2,
|
||||
},
|
||||
{
|
||||
name: "led 100% should be max",
|
||||
device: &sysfsDevice{maxBrightness: 255, minValue: 0, class: ClassLED},
|
||||
percent: 100,
|
||||
wantValue: 255,
|
||||
tolerance: 0,
|
||||
},
|
||||
}
|
||||
|
||||
b := &SysfsBackend{}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := b.PercentToValue(tt.percent, tt.device, false)
|
||||
diff := got - tt.wantValue
|
||||
if diff < 0 {
|
||||
diff = -diff
|
||||
}
|
||||
if diff > tt.tolerance {
|
||||
t.Errorf("percentToValue() = %v, want %v (±%d)", got, tt.wantValue, tt.tolerance)
|
||||
}
|
||||
|
||||
gotPercent := b.ValueToPercent(got, tt.device, false)
|
||||
if tt.percent > 1 && gotPercent == 0 {
|
||||
t.Errorf("valueToPercent() returned 0 for non-zero input (percent=%d, got value=%d)", tt.percent, got)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestSysfsBackend_ValueToPercent(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
device *sysfsDevice
|
||||
value int
|
||||
wantPercent int
|
||||
}{
|
||||
{
|
||||
name: "backlight min value",
|
||||
device: &sysfsDevice{maxBrightness: 100, minValue: 1, class: ClassBacklight},
|
||||
value: 1,
|
||||
wantPercent: 1,
|
||||
},
|
||||
{
|
||||
name: "backlight max value",
|
||||
device: &sysfsDevice{maxBrightness: 100, minValue: 1, class: ClassBacklight},
|
||||
value: 100,
|
||||
wantPercent: 100,
|
||||
},
|
||||
{
|
||||
name: "led zero",
|
||||
device: &sysfsDevice{maxBrightness: 255, minValue: 0, class: ClassLED},
|
||||
value: 0,
|
||||
wantPercent: 0,
|
||||
},
|
||||
}
|
||||
|
||||
b := &SysfsBackend{}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := b.ValueToPercent(tt.value, tt.device, false)
|
||||
if got != tt.wantPercent {
|
||||
t.Errorf("valueToPercent() = %v, want %v", got, tt.wantPercent)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestSysfsBackend_ScanDevices(t *testing.T) {
|
||||
tmpDir := t.TempDir()
|
||||
|
||||
backlightDir := filepath.Join(tmpDir, "backlight", "test_backlight")
|
||||
if err := os.MkdirAll(backlightDir, 0755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if err := os.WriteFile(filepath.Join(backlightDir, "max_brightness"), []byte("100\n"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := os.WriteFile(filepath.Join(backlightDir, "brightness"), []byte("50\n"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
ledsDir := filepath.Join(tmpDir, "leds", "test_led")
|
||||
if err := os.MkdirAll(ledsDir, 0755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if err := os.WriteFile(filepath.Join(ledsDir, "max_brightness"), []byte("255\n"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := os.WriteFile(filepath.Join(ledsDir, "brightness"), []byte("128\n"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
b := &SysfsBackend{
|
||||
basePath: tmpDir,
|
||||
classes: []string{"backlight", "leds"},
|
||||
deviceCache: make(map[string]*sysfsDevice),
|
||||
}
|
||||
|
||||
if err := b.scanDevices(); err != nil {
|
||||
t.Fatalf("scanDevices() error = %v", err)
|
||||
}
|
||||
|
||||
if len(b.deviceCache) != 2 {
|
||||
t.Errorf("expected 2 devices, got %d", len(b.deviceCache))
|
||||
}
|
||||
|
||||
backlightID := "backlight:test_backlight"
|
||||
if _, ok := b.deviceCache[backlightID]; !ok {
|
||||
t.Errorf("backlight device not found")
|
||||
}
|
||||
|
||||
ledID := "leds:test_led"
|
||||
if _, ok := b.deviceCache[ledID]; !ok {
|
||||
t.Errorf("LED device not found")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user