Files
mediadevices/pkg/wave/float32_test.go
2020-04-26 10:10:15 -07:00

54 lines
1.3 KiB
Go

package wave
import (
"reflect"
"testing"
)
func TestFloat32(t *testing.T) {
cases := map[string]struct {
in Audio
expected [][]float32
}{
"Interleaved": {
in: &Float32Interleaved{
Data: []float32{
0.1, -0.5, 0.2, -0.6, 0.3, -0.7, 0.4, -0.8, 0.5, -0.9, 0.6, -1.0, 0.7, -1.1, 0.8, -1.2,
},
Size: ChunkInfo{8, 2, 48000},
},
expected: [][]float32{
{0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8},
{-0.5, -0.6, -0.7, -0.8, -0.9, -1.0, -1.1, -1.2},
},
},
"NonInterleaved": {
in: &Float32NonInterleaved{
Data: [][]float32{
{0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8},
{-0.5, -0.6, -0.7, -0.8, -0.9, -1.0, -1.1, -1.2},
},
Size: ChunkInfo{8, 2, 48000},
},
expected: [][]float32{
{0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8},
{-0.5, -0.6, -0.7, -0.8, -0.9, -1.0, -1.1, -1.2},
},
},
}
for name, c := range cases {
c := c
t.Run(name, func(t *testing.T) {
out := make([][]float32, c.in.ChunkInfo().Channels)
for i := 0; i < c.in.ChunkInfo().Channels; i++ {
for j := 0; j < c.in.ChunkInfo().Len; j++ {
out[i] = append(out[i], float32(c.in.At(j, i).(Float32Sample)))
}
}
if !reflect.DeepEqual(c.expected, out) {
t.Errorf("Sample level differs, expected: %v, got: %v", c.expected, out)
}
})
}
}