aboutsummaryrefslogtreecommitdiffhomepage
path: root/system/system_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'system/system_test.go')
-rw-r--r--system/system_test.go131
1 files changed, 131 insertions, 0 deletions
diff --git a/system/system_test.go b/system/system_test.go
new file mode 100644
index 00000000..323e35b0
--- /dev/null
+++ b/system/system_test.go
@@ -0,0 +1,131 @@
+package system_test
+
+import (
+ "strconv"
+ "testing"
+
+ "hakurei.app/system"
+)
+
+func TestNew(t *testing.T) {
+ testCases := []struct {
+ uid int
+ }{
+ {150},
+ {149},
+ {148},
+ {147},
+ }
+
+ for _, tc := range testCases {
+ t.Run("sys initialised with uid "+strconv.Itoa(tc.uid), func(t *testing.T) {
+ if got := system.New(t.Context(), tc.uid); got.UID() != tc.uid {
+ t.Errorf("New(%d) uid = %d, want %d",
+ tc.uid,
+ got.UID(), tc.uid)
+ }
+ })
+ }
+}
+
+func TestTypeString(t *testing.T) {
+ testCases := []struct {
+ e system.Enablement
+ want string
+ }{
+ {system.EWayland, system.EWayland.String()},
+ {system.EX11, system.EX11.String()},
+ {system.EDBus, system.EDBus.String()},
+ {system.EPulse, system.EPulse.String()},
+ {system.User, "user"},
+ {system.Process, "process"},
+ {system.User | system.Process, "user, process"},
+ {system.EWayland | system.User | system.Process, "wayland, user, process"},
+ {system.EX11 | system.Process, "x11, process"},
+ }
+
+ for _, tc := range testCases {
+ t.Run("label type string "+tc.want, func(t *testing.T) {
+ if got := system.TypeString(tc.e); got != tc.want {
+ t.Errorf("TypeString: %q, want %q",
+ got, tc.want)
+ }
+ })
+ }
+}
+
+func TestI_Equal(t *testing.T) {
+ testCases := []struct {
+ name string
+ sys *system.I
+ v *system.I
+ want bool
+ }{
+ {
+ "simple UID",
+ system.New(t.Context(), 150),
+ system.New(t.Context(), 150),
+ true,
+ },
+ {
+ "simple UID differ",
+ system.New(t.Context(), 150),
+ system.New(t.Context(), 151),
+ false,
+ },
+ {
+ "simple UID nil",
+ system.New(t.Context(), 150),
+ nil,
+ false,
+ },
+ {
+ "op length mismatch",
+ system.New(t.Context(), 150).
+ ChangeHosts("chronos"),
+ system.New(t.Context(), 150).
+ ChangeHosts("chronos").
+ Ensure("/run", 0755),
+ false,
+ },
+ {
+ "op value mismatch",
+ system.New(t.Context(), 150).
+ ChangeHosts("chronos").
+ Ensure("/run", 0644),
+ system.New(t.Context(), 150).
+ ChangeHosts("chronos").
+ Ensure("/run", 0755),
+ false,
+ },
+ {
+ "op type mismatch",
+ system.New(t.Context(), 150).
+ ChangeHosts("chronos").
+ CopyFile(new([]byte), "/home/ophestra/xdg/config/pulse/cookie", 0, 256),
+ system.New(t.Context(), 150).
+ ChangeHosts("chronos").
+ Ensure("/run", 0755),
+ false,
+ },
+ {
+ "op equals",
+ system.New(t.Context(), 150).
+ ChangeHosts("chronos").
+ Ensure("/run", 0755),
+ system.New(t.Context(), 150).
+ ChangeHosts("chronos").
+ Ensure("/run", 0755),
+ true,
+ },
+ }
+
+ for _, tc := range testCases {
+ t.Run(tc.name, func(t *testing.T) {
+ if tc.sys.Equal(tc.v) != tc.want {
+ t.Errorf("Equal: got %v; want %v",
+ !tc.want, tc.want)
+ }
+ })
+ }
+}