detached 04b2aa7

test: cover player constructor success path

commit
04b2aa7556faccaacfec8110ad79307c8227adb1
author
brice · · 2026-04-09 14:21 UTC
parent
07c742c
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
1 file · +36 -0
M pipewire/player_test.go +36 -0
@@ -1,6 +1,7 @@
11 package pipewire
22
33 import (
4+ "errors"
45 "testing"
56 )
67
@@ -9,4 +10,39 @@ func TestNewPlayerRejectsInvalidConfig(t *testing.T) {
910 if err == nil {
1011 t.Fatal("NewPlayer returned nil error for invalid config")
1112 }
13+ if !errors.Is(err, ErrInvalidPlayerConfig) {
14+ t.Fatalf("expected ErrInvalidPlayerConfig, got %v", err)
15+ }
16+}
17+
18+func TestNewPlayerAcceptsValidConfig(t *testing.T) {
19+ config := PlayerConfig{
20+ SampleRate: 44100,
21+ Channels: 2,
22+ FramesPerBuffer: 256,
23+ SampleFormat: SampleFormatF32,
24+ }
25+ player, err := NewPlayer(config, PlayerCallbacks{})
26+ if err != nil {
27+ t.Fatalf("NewPlayer returned error for valid config: %v", err)
28+ }
29+ if player == nil {
30+ t.Fatal("NewPlayer returned nil player for valid config")
31+ }
32+}
33+
34+func TestPlayerStateReflectsInitialState(t *testing.T) {
35+ config := PlayerConfig{
36+ SampleRate: 44100,
37+ Channels: 2,
38+ FramesPerBuffer: 256,
39+ SampleFormat: SampleFormatF32,
40+ }
41+ player, err := NewPlayer(config, PlayerCallbacks{})
42+ if err != nil {
43+ t.Fatalf("NewPlayer returned error: %v", err)
44+ }
45+ if player.State() != Idle {
46+ t.Fatalf("expected initial state Idle, got %v", player.State())
47+ }
1248 }
@@ -1,6 +1,7 @@
1 package pipewire1 package pipewire
2 2
3 import (3 import (
4+ "errors"
4 "testing"5 "testing"
5 )6 )
6 7
@@ -9,4 +10,39 @@ func TestNewPlayerRejectsInvalidConfig(t *testing.T) {
9 if err == nil {10 if err == nil {
10 t.Fatal("NewPlayer returned nil error for invalid config")11 t.Fatal("NewPlayer returned nil error for invalid config")
11 }12 }
13+ if !errors.Is(err, ErrInvalidPlayerConfig) {
14+ t.Fatalf("expected ErrInvalidPlayerConfig, got %v", err)
15+ }
16+}
17+
18+func TestNewPlayerAcceptsValidConfig(t *testing.T) {
19+ config := PlayerConfig{
20+ SampleRate: 44100,
21+ Channels: 2,
22+ FramesPerBuffer: 256,
23+ SampleFormat: SampleFormatF32,
24+ }
25+ player, err := NewPlayer(config, PlayerCallbacks{})
26+ if err != nil {
27+ t.Fatalf("NewPlayer returned error for valid config: %v", err)
28+ }
29+ if player == nil {
30+ t.Fatal("NewPlayer returned nil player for valid config")
31+ }
32+}
33+
34+func TestPlayerStateReflectsInitialState(t *testing.T) {
35+ config := PlayerConfig{
36+ SampleRate: 44100,
37+ Channels: 2,
38+ FramesPerBuffer: 256,
39+ SampleFormat: SampleFormatF32,
40+ }
41+ player, err := NewPlayer(config, PlayerCallbacks{})
42+ if err != nil {
43+ t.Fatalf("NewPlayer returned error: %v", err)
44+ }
45+ if player.State() != Idle {
46+ t.Fatalf("expected initial state Idle, got %v", player.State())
47+ }
12 }48 }

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 8

↑↓ moveenter openesc close