25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

52 lines
1.4 KiB

  1. package service
  2. import (
  3. "encoding/base64"
  4. "testing"
  5. "github.com/stretchr/testify/require"
  6. )
  7. func TestParseAudioUsesFormatSpecificSampleRates(t *testing.T) {
  8. pcm := base64.StdEncoding.EncodeToString(make([]byte, 48_000))
  9. duration, err := parseAudio(pcm, "pcm16")
  10. require.NoError(t, err)
  11. require.Equal(t, 1.0, duration)
  12. g711 := base64.StdEncoding.EncodeToString(make([]byte, 8_000))
  13. duration, err = parseAudio(g711, "g711_ulaw")
  14. require.NoError(t, err)
  15. require.Equal(t, 1.0, duration)
  16. }
  17. func TestParseAudioAndDecodeBase64AudioDataRejectInvalidEncoding(t *testing.T) {
  18. _, err := parseAudio("not base64", "pcm16")
  19. require.Error(t, err)
  20. _, err = DecodeBase64AudioData("not base64")
  21. require.Error(t, err)
  22. }
  23. func TestDecodeBase64AudioDataStripsDataURLPrefix(t *testing.T) {
  24. decoded, err := DecodeBase64AudioData("data:audio/pcm;base64,AAE=")
  25. require.NoError(t, err)
  26. require.Equal(t, "AAE=", decoded)
  27. }
  28. func TestCountAudioTokensUsesConfiguredInputAndOutputRates(t *testing.T) {
  29. oneSecondPCM := base64.StdEncoding.EncodeToString(make([]byte, 48_000))
  30. inputTokens, err := CountAudioTokenInput(oneSecondPCM, "pcm16")
  31. require.NoError(t, err)
  32. require.Equal(t, 27, inputTokens)
  33. outputTokens, err := CountAudioTokenOutput(oneSecondPCM, "pcm16")
  34. require.NoError(t, err)
  35. require.Equal(t, 13, outputTokens)
  36. inputTokens, err = CountAudioTokenInput("", "pcm16")
  37. require.NoError(t, err)
  38. require.Zero(t, inputTokens)
  39. }