From f58b2dfeabf1aab72c4ccc04cbb5a65c62cc234b Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Mon, 26 May 2025 19:49:30 +0100 Subject: [PATCH] add output to replaybuffer start/stop add replaybuffer tests --- replaybuffer.go | 16 ++++++--- replaybuffer_test.go | 85 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 4 deletions(-) create mode 100644 replaybuffer_test.go diff --git a/replaybuffer.go b/replaybuffer.go index fe7f17b..127a620 100644 --- a/replaybuffer.go +++ b/replaybuffer.go @@ -19,7 +19,11 @@ type ReplayBufferStartCmd struct{} // size = 0x0 // Run executes the command to start the replay buffer. func (cmd *ReplayBufferStartCmd) Run(ctx *context) error { _, err := ctx.Client.Outputs.StartReplayBuffer() - return err + if err != nil { + return fmt.Errorf("failed to start replay buffer: %w", err) + } + fmt.Fprintln(ctx.Out, "Replay buffer started.") + return nil } // ReplayBufferStopCmd stops the replay buffer. @@ -28,7 +32,11 @@ type ReplayBufferStopCmd struct{} // size = 0x0 // Run executes the command to stop the replay buffer. func (cmd *ReplayBufferStopCmd) Run(ctx *context) error { _, err := ctx.Client.Outputs.StopReplayBuffer() - return err + if err != nil { + return fmt.Errorf("failed to stop replay buffer: %w", err) + } + fmt.Fprintln(ctx.Out, "Replay buffer stopped.") + return nil } // ReplayBufferToggleCmd toggles the replay buffer state. @@ -42,9 +50,9 @@ func (cmd *ReplayBufferToggleCmd) Run(ctx *context) error { } if status.OutputActive { - fmt.Fprintln(ctx.Out, "Replay buffer started successfully.") + fmt.Fprintln(ctx.Out, "Replay buffer started.") } else { - fmt.Fprintln(ctx.Out, "Replay buffer stopped successfully.") + fmt.Fprintln(ctx.Out, "Replay buffer stopped.") } return nil } diff --git a/replaybuffer_test.go b/replaybuffer_test.go new file mode 100644 index 0000000..fa93e60 --- /dev/null +++ b/replaybuffer_test.go @@ -0,0 +1,85 @@ +package main + +import ( + "bytes" + "strings" + "testing" +) + +func TestReplayBufferStart(t *testing.T) { + client, disconnect := getClient(t) + defer disconnect() + + var out bytes.Buffer + context := &context{ + Client: client, + Out: &out, + } + + cmd := &ReplayBufferStartCmd{} + err := cmd.Run(context) + if err != nil { + t.Fatalf("Failed to start replay buffer: %v", err) + } + if out.String() != "Replay buffer started.\n" { + t.Fatalf("Expected output to be 'Replay buffer started', got '%s'", out.String()) + } +} + +func TestReplayBufferStop(t *testing.T) { + client, disconnect := getClient(t) + defer disconnect() + + var out bytes.Buffer + context := &context{ + Client: client, + Out: &out, + } + + cmd := &ReplayBufferStopCmd{} + err := cmd.Run(context) + if err != nil { + t.Fatalf("Failed to stop replay buffer: %v", err) + } + if out.String() != "Replay buffer stopped.\n" { + t.Fatalf("Expected output to be 'Replay buffer stopped.', got '%s'", out.String()) + } +} + +func TestReplayBufferToggle(t *testing.T) { + client, disconnect := getClient(t) + defer disconnect() + + var out bytes.Buffer + context := &context{ + Client: client, + Out: &out, + } + + cmdStatus := &ReplayBufferStatusCmd{} + err := cmdStatus.Run(context) + if err != nil { + t.Fatalf("Failed to get replay buffer status: %v", err) + } + var active bool + if strings.Contains(out.String(), "Replay buffer is active") { + active = true + } + // Reset output buffer for the next command + out.Reset() + + cmdToggle := &ReplayBufferToggleCmd{} + err = cmdToggle.Run(context) + if err != nil { + t.Fatalf("Failed to toggle replay buffer: %v", err) + } + if active { + if out.String() != "Replay buffer stopped.\n" { + t.Fatalf("Expected output to be 'Replay buffer stopped.', got '%s'", out.String()) + } + } else { + if out.String() != "Replay buffer started.\n" { + t.Fatalf("Expected output to be 'Replay buffer started.', got '%s'", out.String()) + } + } +}