feat: sync deployed v1.0.0-rc.38-custom.42
Sync production source including routing, billing, Astra detection and public uptime. Update custom build instructions and license packaging.
This commit is contained in:
1 parent
aa6c3f50f4
commit
ceddfd3d6b
828 files changed
+122253
-13702
No files matched your search
@@ -0,0 +1,54 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/binary"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// minimalWAV builds a valid 16-bit PCM mono WAV with the given number of sample frames.
|
||||
func minimalWAV(sampleRate uint32, frames int) []byte {
|
||||
const numChannels = 1
|
||||
const bitsPerSample = 16
|
||||
dataSize := frames * numChannels * (bitsPerSample / 8)
|
||||
buf := &bytes.Buffer{}
|
||||
buf.WriteString("RIFF")
|
||||
binary.Write(buf, binary.LittleEndian, uint32(36+dataSize))
|
||||
buf.WriteString("WAVE")
|
||||
buf.WriteString("fmt ")
|
||||
binary.Write(buf, binary.LittleEndian, uint32(16))
|
||||
binary.Write(buf, binary.LittleEndian, uint16(1)) // PCM
|
||||
binary.Write(buf, binary.LittleEndian, uint16(numChannels))
|
||||
binary.Write(buf, binary.LittleEndian, sampleRate)
|
||||
byteRate := sampleRate * numChannels * (bitsPerSample / 8)
|
||||
binary.Write(buf, binary.LittleEndian, byteRate)
|
||||
binary.Write(buf, binary.LittleEndian, uint16(numChannels*(bitsPerSample/8)))
|
||||
binary.Write(buf, binary.LittleEndian, uint16(bitsPerSample))
|
||||
buf.WriteString("data")
|
||||
binary.Write(buf, binary.LittleEndian, uint32(dataSize))
|
||||
buf.Write(make([]byte, dataSize))
|
||||
return buf.Bytes()
|
||||
}
|
||||
|
||||
func TestGetAudioDurationCaseInsensitiveExt(t *testing.T) {
|
||||
wav := minimalWAV(8000, 8000) // 1 second
|
||||
|
||||
for _, ext := range []string{".wav", ".WAV", ".Wav"} {
|
||||
d, err := GetAudioDuration(context.Background(), bytes.NewReader(wav), ext)
|
||||
if err != nil {
|
||||
t.Fatalf("ext %q: unexpected error: %v", ext, err)
|
||||
}
|
||||
if d < 0.99 || d > 1.01 {
|
||||
t.Fatalf("ext %q: expected ~1s duration, got %v", ext, d)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetAudioDurationUppercaseNotUnsupported(t *testing.T) {
|
||||
_, err := GetAudioDuration(context.Background(), bytes.NewReader([]byte("not audio")), ".MP3")
|
||||
if err != nil && strings.Contains(err.Error(), "unsupported audio format") {
|
||||
t.Fatalf("uppercase extension rejected as unsupported: %v", err)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user