-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwavegen_test.go
More file actions
116 lines (98 loc) · 2.34 KB
/
wavegen_test.go
File metadata and controls
116 lines (98 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package wavegen_test
import (
"math"
"testing"
"github.com/rodrigo-dc/wavegen"
)
// C7 2093 Hz - Generated by GNU Octave 4.4.1
// fs = 44100; f = 2093; t = 0:1/fs:(1/f); x = sin(2*pi*f*t)
// Last value discarded.
var c7At44100 = []float64{
0.00000, 0.29380, 0.56167, 0.77996, 0.92941, 0.99682, 0.97624, 0.86949,
0.68600, 0.44195, 0.15890, -0.13819, -0.42307, -0.67061, -0.85896, -0.97149,
-0.99827, -0.93693, -0.79290, -0.57887, -0.31376}
var squareC7At44100 = []float64{
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
}
func TestSine(t *testing.T) {
samples, err := wavegen.Sine(2093, 44100)
if err != nil {
t.Error(err)
}
if len(samples) != len(c7At44100) {
t.Error("wrong number of samples")
}
for i := range samples {
if diff := math.Abs(samples[i] - c7At44100[i]); diff > 0.02 {
t.Errorf("wrong sample at index %d", i)
}
}
}
func TestSine8Bits(t *testing.T) {
expected := []byte{128, 255, 128, 0}
samples, err := wavegen.Sine8Bits(1, 4)
if err != nil {
t.Error(err)
}
if len(samples) != 4 {
t.Error("wrong number of samples")
}
for i := range samples {
if samples[i] != expected[i] {
t.Errorf("wrong sample at index %d", i)
}
}
}
func TestSquare(t *testing.T) {
samples, err := wavegen.Square(2093, 44100)
if err != nil {
t.Error(err)
}
if len(samples) != len(squareC7At44100) {
t.Error("wrong number of samples")
}
for i := range samples {
if samples[i] != squareC7At44100[i] {
t.Errorf("wrong sample at index %d", i)
}
}
}
func TestSqare8Bits(t *testing.T) {
expected := []byte{255, 255, 0, 0}
samples, err := wavegen.Square8Bits(1, 4)
if err != nil {
t.Error(err)
}
if len(samples) != 4 {
t.Error("wrong number of samples")
}
for i := range samples {
if samples[i] != expected[i] {
t.Errorf("wrong sample at index %d", i)
}
}
}
func TestSineNyquist(t *testing.T) {
_, err := wavegen.Sine(22051, 44100)
if err == nil {
t.Error("expected an error")
}
}
func TestSine8BitsNyquist(t *testing.T) {
_, err := wavegen.Sine8Bits(4, 7)
if err == nil {
t.Error("expected an error")
}
}
func TestSquareNyquist(t *testing.T) {
_, err := wavegen.Square(22051, 44100)
if err == nil {
t.Error("expected an error")
}
}
func TestSquare8BitsNyquist(t *testing.T) {
_, err := wavegen.Square8Bits(22051, 44100)
if err == nil {
t.Error("expected an error")
}
}