mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-27 06:52:50 -05:00
matugen: fix adw-gtk3 setting in light mode
- and add models.Get/GetOr helpers
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"net"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/params"
|
||||
)
|
||||
|
||||
type Request struct {
|
||||
@@ -13,6 +14,15 @@ type Request struct {
|
||||
Params map[string]any `json:"params,omitempty"`
|
||||
}
|
||||
|
||||
func Get[T any](r Request, key string) (T, bool) {
|
||||
v, err := params.Get[T](r.Params, key)
|
||||
return v, err == nil
|
||||
}
|
||||
|
||||
func GetOr[T any](r Request, key string, def T) T {
|
||||
return params.GetOpt(r.Params, key, def)
|
||||
}
|
||||
|
||||
type Response[T any] struct {
|
||||
ID int `json:"id,omitempty"`
|
||||
Result *T `json:"result,omitempty"`
|
||||
|
||||
52
core/internal/server/models/types_test.go
Normal file
52
core/internal/server/models/types_test.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package models
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestGet(t *testing.T) {
|
||||
req := Request{Params: map[string]any{"name": "test", "count": 42, "enabled": true}}
|
||||
|
||||
name, ok := Get[string](req, "name")
|
||||
if !ok || name != "test" {
|
||||
t.Errorf("Get[string] = %q, %v; want 'test', true", name, ok)
|
||||
}
|
||||
|
||||
count, ok := Get[int](req, "count")
|
||||
if !ok || count != 42 {
|
||||
t.Errorf("Get[int] = %d, %v; want 42, true", count, ok)
|
||||
}
|
||||
|
||||
enabled, ok := Get[bool](req, "enabled")
|
||||
if !ok || !enabled {
|
||||
t.Errorf("Get[bool] = %v, %v; want true, true", enabled, ok)
|
||||
}
|
||||
|
||||
_, ok = Get[string](req, "missing")
|
||||
if ok {
|
||||
t.Error("Get missing key should return false")
|
||||
}
|
||||
|
||||
_, ok = Get[int](req, "name")
|
||||
if ok {
|
||||
t.Error("Get wrong type should return false")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetOr(t *testing.T) {
|
||||
req := Request{Params: map[string]any{"name": "test", "enabled": true}}
|
||||
|
||||
if v := GetOr(req, "name", "default"); v != "test" {
|
||||
t.Errorf("GetOr existing = %q; want 'test'", v)
|
||||
}
|
||||
|
||||
if v := GetOr(req, "missing", "default"); v != "default" {
|
||||
t.Errorf("GetOr missing = %q; want 'default'", v)
|
||||
}
|
||||
|
||||
if v := GetOr(req, "enabled", false); !v {
|
||||
t.Errorf("GetOr bool = %v; want true", v)
|
||||
}
|
||||
|
||||
if v := GetOr(req, "name", 0); v != 0 {
|
||||
t.Errorf("GetOr wrong type = %d; want 0 (default)", v)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user