diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-10-08 19:39:00 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-10-08 19:39:00 +0900 |
| commit | ee6c471fe6e183d78e396a23b2a92fd26bb31143 (patch) | |
| tree | 6d7eb6a6d7d057a840936e435150f30b57a8a2f3 /internal/app/outcome_test.go | |
| parent | 16bf3178d358f72ce9605352364809b42229af5f (diff) | |
internal/app: relocate ops condition
This allows reuse and finer grained testing of fromConfig.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/app/outcome_test.go')
| -rw-r--r-- | internal/app/outcome_test.go | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/internal/app/outcome_test.go b/internal/app/outcome_test.go new file mode 100644 index 00000000..a16f0a10 --- /dev/null +++ b/internal/app/outcome_test.go @@ -0,0 +1,77 @@ +package app + +import ( + "reflect" + "testing" + + "hakurei.app/hst" + "hakurei.app/internal/app/state" +) + +func TestOutcomeStateValid(t *testing.T) { + testCases := []struct { + name string + s *outcomeState + want bool + }{ + {"nil", nil, false}, + {"zero", new(outcomeState), false}, + {"id", &outcomeState{Container: new(hst.ContainerConfig), EnvPaths: new(EnvPaths)}, false}, + {"container", &outcomeState{ID: new(state.ID), EnvPaths: new(EnvPaths)}, false}, + {"envpaths", &outcomeState{ID: new(state.ID), Container: new(hst.ContainerConfig)}, false}, + {"valid", &outcomeState{ID: new(state.ID), Container: new(hst.ContainerConfig), EnvPaths: new(EnvPaths)}, true}, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + if got := tc.s.valid(); got != tc.want { + t.Errorf("valid: %v, want %v", got, tc.want) + } + }) + } +} + +func TestFromConfig(t *testing.T) { + testCases := []struct { + name string + config *hst.Config + want []outcomeOp + }{ + {"ne", new(hst.Config), []outcomeOp{ + &spParamsOp{}, + spFilesystemOp{}, + spRuntimeOp{}, + spTmpdirOp{}, + spAccountOp{}, + spFinal{}, + }}, + {"wayland pulse", &hst.Config{Enablements: hst.NewEnablements(hst.EWayland | hst.EPulse)}, []outcomeOp{ + &spParamsOp{}, + spFilesystemOp{}, + spRuntimeOp{}, + spTmpdirOp{}, + spAccountOp{}, + &spWaylandOp{}, + &spPulseOp{}, + spFinal{}, + }}, + {"all", &hst.Config{Enablements: hst.NewEnablements(0xff)}, []outcomeOp{ + &spParamsOp{}, + spFilesystemOp{}, + spRuntimeOp{}, + spTmpdirOp{}, + spAccountOp{}, + &spWaylandOp{}, + &spX11Op{}, + &spPulseOp{}, + &spDBusOp{}, + spFinal{}, + }}, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + if got := fromConfig(tc.config); !reflect.DeepEqual(got, tc.want) { + t.Errorf("fromConfig: %#v, want %#v", got, tc.want) + } + }) + } +} |
