ruby-audio 0.2.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/test/test_sndfile.rb DELETED
@@ -1,191 +0,0 @@
1
- require 'test/unit'
2
- require 'audio/sndfile'
3
- require 'narray'
4
-
5
- class SndfileTest < Test::Unit::TestCase
6
- include Sndfile
7
- TEST_WAV='test/what.wav'
8
- STEREO_TEST_WAV='test/what2.wav'
9
-
10
- def setup
11
- raise "Invalid test wav" unless File.readable?(TEST_WAV)
12
- @inf = SF_INFO.new
13
- @sf = sf_open(TEST_WAV,SFM_RDWR,@inf)
14
- raise "Couldn't open #{TEST_WAV}: #{sf_strerror(@sf)}" if @sf.nil?
15
- end
16
-
17
- def teardown
18
- sf_close(@sf)
19
- end
20
-
21
- def test_enums
22
- enums = {
23
- SF_FORMAT_WAV => 0x010000,
24
- SF_FORMAT_AIFF => 0x020000,
25
- SF_FORMAT_AU => 0x030000,
26
- SF_FORMAT_RAW => 0x040000,
27
- SF_FORMAT_PAF => 0x050000,
28
- SF_FORMAT_SVX => 0x060000,
29
- SF_FORMAT_NIST => 0x070000,
30
- SF_FORMAT_VOC => 0x080000,
31
- SF_FORMAT_IRCAM => 0x0A0000,
32
- SF_FORMAT_W64 => 0x0B0000,
33
- SF_FORMAT_MAT4 => 0x0C0000,
34
- SF_FORMAT_MAT5 => 0x0D0000,
35
- SF_FORMAT_PVF => 0x0E0000,
36
- SF_FORMAT_XI => 0x0F0000,
37
- SF_FORMAT_HTK => 0x100000,
38
- SF_FORMAT_SDS => 0x110000,
39
- SF_FORMAT_AVR => 0x120000,
40
- SF_FORMAT_WAVEX => 0x130000,
41
- SF_FORMAT_SD2 => 0x160000,
42
- SF_FORMAT_FLAC => 0x170000,
43
- SF_FORMAT_CAF => 0x180000,
44
- SF_FORMAT_PCM_S8 => 0x0001,
45
- SF_FORMAT_PCM_16 => 0x0002,
46
- SF_FORMAT_PCM_24 => 0x0003,
47
- SF_FORMAT_PCM_32 => 0x0004,
48
- SF_FORMAT_PCM_U8 => 0x0005,
49
- SF_FORMAT_FLOAT => 0x0006,
50
- SF_FORMAT_DOUBLE => 0x0007,
51
- SF_FORMAT_ULAW => 0x0010,
52
- SF_FORMAT_ALAW => 0x0011,
53
- SF_FORMAT_IMA_ADPCM => 0x0012,
54
- SF_FORMAT_MS_ADPCM => 0x0013,
55
- SF_FORMAT_GSM610 => 0x0020,
56
- SF_FORMAT_VOX_ADPCM => 0x0021,
57
- SF_FORMAT_G721_32 => 0x0030,
58
- SF_FORMAT_G723_24 => 0x0031,
59
- SF_FORMAT_G723_40 => 0x0032,
60
- SF_FORMAT_DWVW_12 => 0x0040,
61
- SF_FORMAT_DWVW_16 => 0x0041,
62
- SF_FORMAT_DWVW_24 => 0x0042,
63
- SF_FORMAT_DWVW_N => 0x0043,
64
- SF_FORMAT_DPCM_8 => 0x0050,
65
- SF_FORMAT_DPCM_16 => 0x0051,
66
- SF_ENDIAN_FILE => 0x00000000,
67
- SF_ENDIAN_LITTLE => 0x10000000,
68
- SF_ENDIAN_BIG => 0x20000000,
69
- SF_ENDIAN_CPU => 0x30000000,
70
- SF_FORMAT_SUBMASK => 0x0000FFFF,
71
- SF_FORMAT_TYPEMASK => 0x0FFF0000,
72
- SF_FORMAT_ENDMASK => 0x30000000
73
- }
74
-
75
- enums.each_pair do |k,v|
76
- assert_equal k,v
77
- end
78
- assert_equal SF_ERR_UNSUPPORTED_ENCODING, 4
79
- end
80
-
81
- def test_info
82
- assert ! sf_format_check(SF_INFO.new)
83
- assert @inf.frames > 0
84
- assert_equal 16000, @inf.samplerate
85
- assert_equal 1, @inf.channels
86
- assert_equal SF_FORMAT_WAV|SF_FORMAT_PCM_16, @inf.format
87
- assert_equal 1, @inf.sections
88
- #assert_equal true, @inf.seekable
89
- assert sf_format_check(@inf)
90
- end
91
-
92
- def test_error
93
- File.delete('bogus.wav') if File.exist?('bogus.wav')
94
- s = sf_open('bogus.wav',SFM_READ,SF_INFO.new)
95
- assert_nil s
96
- # on some systems (or versions?) libsndfile gives either
97
- # SF_ERR_UNRECOGNIZED_FORMAT or SF_ERR_SYSTEM, so we just check that there
98
- # was _some_ error.
99
- assert_not_equal SF_ERR_NO_ERROR, sf_error(nil)
100
- sf_close(s)
101
- assert_equal SF_ERR_NO_ERROR, sf_error(@sf)
102
- assert_equal 'No Error.', sf_strerror(@sf)
103
- assert_kind_of String, sf_error_number(1)
104
- end
105
-
106
- def test_file
107
- s = sf_open(TEST_WAV,SFM_READ,SF_INFO.new)
108
- assert_not_nil s
109
- assert_equal 0, sf_close(s)
110
- end
111
-
112
- def test_read
113
- a = NArray.float(1000)
114
- sf_read_double(@sf, a)
115
- assert a.max > 0
116
- end
117
-
118
- def test_write
119
- a = NArray.float(1000)
120
- sf_read_double(@sf, a)
121
- sf2 = nil
122
- assert_nothing_raised do
123
- sf2 = sf_open('bogus.wav',SFM_RDWR, @inf)
124
- sf_write_double(sf2, a)
125
- end
126
- b = NArray.float(1000)
127
- sf_seek(sf2, 0, SEEK_SET)
128
- sf_read_double(sf2, b)
129
- assert a == b
130
- sf_close(sf2)
131
- File.delete('bogus.wav') if File.exist?('bogus.wav')
132
- end
133
-
134
- def test_string
135
- assert_nil sf_get_string(@sf,SF_STR_COMMENT)
136
- end
137
-
138
- def test_magical_open
139
- sf = Audio::Soundfile.open(TEST_WAV)
140
- assert_instance_of Audio::Soundfile, sf
141
- assert sf.format_check
142
- assert_equal Audio::Soundfile::SF_FORMAT_WAV, 0x010000
143
- sf.close
144
- end
145
-
146
- def test_magical_read
147
- Audio::Soundfile.open(TEST_WAV) do |sf|
148
- a = sf.read_float(100)
149
- assert_instance_of Audio::Sound, a
150
- assert_equal :float, a.type
151
- assert_equal 4, a.typecode
152
- assert a.size <= 100
153
- assert_equal sf.channels, a.channels
154
-
155
- n = sf.read_float(a)
156
- assert n <= a.size
157
- n = sf.read(a)
158
- assert n <= a.size
159
- end
160
- Audio::Soundfile.open(STEREO_TEST_WAV) do |sf|
161
- a = sf.read_float(100)
162
- assert a.size <= 100
163
- assert_equal sf.channels, a.channels
164
-
165
- n = sf.read_float(a)
166
- assert n <= a.size
167
- n = sf.read(a)
168
- assert n <= a.size
169
- end
170
- end
171
-
172
- def test_magical_write
173
- Audio::Soundfile.open(TEST_WAV) do |sf|
174
- # Read data
175
- a = sf.read_float(1000)
176
-
177
- # Test magical write
178
- sf2 = Audio::Soundfile.open('bogus.wav', 'rw', sf.info)
179
- sf2.write(a)
180
-
181
- # Check that read data matches written data
182
- sf2.seek(0, SEEK_SET)
183
- b = sf2.read_float(1000)
184
- assert a == b
185
-
186
- # Clean up
187
- sf2.close
188
- File.delete('bogus.wav') if File.exist?('bogus.wav')
189
- end
190
- end
191
- end