output_test.go RawHistoryFolder
1package null
2
3import (
4 "context"
5 "testing"
6
7 "github.com/bnema/dumber/internal/application/port"
8)
9
10func TestFactory_NewStream_ReturnsWritableClosableStream(t *testing.T) {
11 // Arrange
12 factory := &Factory{}
13 format := port.AudioStreamFormat{
14 SampleRate: 48000,
15 ChannelCount: 2,
16 FramesPerBuffer: 512,
17 }
18 ctx := context.Background()
19
20 // Act
21 stream, err := factory.NewStream(ctx, format)
22 if err != nil {
23 t.Fatalf("NewStream failed: %v", err)
24 }
25 if stream == nil {
26 t.Fatal("NewStream returned nil stream")
27 }
28
29 // Assert: stream should accept writes
30 samples := make([][]float32, format.ChannelCount)
31 for i := range samples {
32 samples[i] = make([]float32, format.FramesPerBuffer)
33 }
34
35 if err := stream.Write(samples); err != nil {
36 t.Errorf("Write failed: %v", err)
37 }
38
39 // Assert: stream should be closable
40 if err := stream.Close(); err != nil {
41 t.Errorf("Close failed: %v", err)
42 }
43}
44
45func TestStream_Write_AcceptsMultipleCalls(t *testing.T) {
46 // Arrange
47 factory := &Factory{}
48 format := port.AudioStreamFormat{
49 SampleRate: 44100,
50 ChannelCount: 2,
51 FramesPerBuffer: 1024,
52 }
53 ctx := context.Background()
54
55 stream, err := factory.NewStream(ctx, format)
56 if err != nil {
57 t.Fatalf("NewStream failed: %v", err)
58 }
59 defer stream.Close()
60
61 samples := make([][]float32, format.ChannelCount)
62 for i := range samples {
63 samples[i] = make([]float32, format.FramesPerBuffer)
64 }
65
66 // Act & Assert: multiple writes should succeed
67 for i := 0; i < 3; i++ {
68 if err := stream.Write(samples); err != nil {
69 t.Errorf("Write #%d failed: %v", i+1, err)
70 }
71 }
72}
73
74func TestStream_Close_Idempotent(t *testing.T) {
75 // Arrange
76 factory := &Factory{}
77 format := port.AudioStreamFormat{
78 SampleRate: 48000,
79 ChannelCount: 1,
80 FramesPerBuffer: 256,
81 }
82 ctx := context.Background()
83
84 stream, err := factory.NewStream(ctx, format)
85 if err != nil {
86 t.Fatalf("NewStream failed: %v", err)
87 }
88
89 // Act & Assert: multiple closes should succeed
90 if err := stream.Close(); err != nil {
91 t.Errorf("First Close failed: %v", err)
92 }
93 if err := stream.Close(); err != nil {
94 t.Errorf("Second Close failed: %v", err)
95 }
96}