🎉 live server seems to be working now
This commit is contained in:
110
third_party/sendspin-go/pkg/audio/decode/opus_test.go
vendored
Normal file
110
third_party/sendspin-go/pkg/audio/decode/opus_test.go
vendored
Normal file
@@ -0,0 +1,110 @@
|
||||
// ABOUTME: Tests for Opus decoder
|
||||
// ABOUTME: Tests Opus decoder creation and validation
|
||||
package decode
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/Sendspin/sendspin-go/pkg/audio"
|
||||
)
|
||||
|
||||
func TestNewOpus(t *testing.T) {
|
||||
format := audio.Format{
|
||||
Codec: "opus",
|
||||
SampleRate: 48000,
|
||||
Channels: 2,
|
||||
BitDepth: 16,
|
||||
}
|
||||
|
||||
decoder, err := NewOpus(format)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create decoder: %v", err)
|
||||
}
|
||||
|
||||
if decoder == nil {
|
||||
t.Fatal("expected decoder to be created")
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewOpus_InvalidCodec(t *testing.T) {
|
||||
format := audio.Format{
|
||||
Codec: "pcm",
|
||||
SampleRate: 48000,
|
||||
Channels: 2,
|
||||
BitDepth: 16,
|
||||
}
|
||||
|
||||
decoder, err := NewOpus(format)
|
||||
if err == nil {
|
||||
t.Fatal("expected error for invalid codec, got nil")
|
||||
}
|
||||
|
||||
if decoder != nil {
|
||||
t.Fatal("expected decoder to be nil for invalid codec")
|
||||
}
|
||||
|
||||
expectedError := "invalid codec for Opus decoder: pcm"
|
||||
if err.Error() != expectedError {
|
||||
t.Errorf("expected error %q, got %q", expectedError, err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewOpus_MonoChannel(t *testing.T) {
|
||||
format := audio.Format{
|
||||
Codec: "opus",
|
||||
SampleRate: 48000,
|
||||
Channels: 1,
|
||||
BitDepth: 16,
|
||||
}
|
||||
|
||||
decoder, err := NewOpus(format)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create mono decoder: %v", err)
|
||||
}
|
||||
|
||||
if decoder == nil {
|
||||
t.Fatal("expected decoder to be created")
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewOpus_InvalidSampleRate(t *testing.T) {
|
||||
// Opus library may reject invalid sample rates
|
||||
format := audio.Format{
|
||||
Codec: "opus",
|
||||
SampleRate: 44100, // Opus typically uses 48000
|
||||
Channels: 2,
|
||||
BitDepth: 16,
|
||||
}
|
||||
|
||||
// We expect this might fail at the opus library level
|
||||
// This test documents the behavior
|
||||
decoder, err := NewOpus(format)
|
||||
|
||||
// Either it succeeds (opus lib is flexible) or fails (opus lib is strict)
|
||||
// Both are valid outcomes, we just verify proper error handling
|
||||
if err != nil && decoder != nil {
|
||||
t.Fatal("if error is returned, decoder must be nil")
|
||||
}
|
||||
if err == nil && decoder == nil {
|
||||
t.Fatal("if no error, decoder must not be nil")
|
||||
}
|
||||
}
|
||||
|
||||
func TestOpusClose(t *testing.T) {
|
||||
format := audio.Format{
|
||||
Codec: "opus",
|
||||
SampleRate: 48000,
|
||||
Channels: 2,
|
||||
BitDepth: 16,
|
||||
}
|
||||
|
||||
decoder, err := NewOpus(format)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create decoder: %v", err)
|
||||
}
|
||||
|
||||
err = decoder.Close()
|
||||
if err != nil {
|
||||
t.Errorf("expected Close to succeed, got error: %v", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user