123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- unit tcwavreader;
- {$mode objfpc}{$H+}
- interface
- uses
- Classes, SysUtils, fpcunit, testutils, testregistry,
- fpwavreader;
- type
- { TTestWavReader }
- TTestWavReader= class(TTestCase)
- private
- procedure TestValidFile(const FileName: string);
- published
- procedure TestValidFiles;
- end;
- implementation
- procedure TTestWavReader.TestValidFile(const FileName: string);
- const
- CorrectFileDir = 'data/wav/reader/valid/';
- var
- WavReader: TWavReader;
- InfoFile: TextFile;
- RawDataFile: File;
- ExpectedSampleRate, ExpectedChannels, ExpectedBitsPerSample,
- ExpectedFormat: Integer;
- ExpectedData: array of Byte;
- ActualData: array of Byte;
- ActualDataLen: Integer;
- SaveFileMode: Byte;
- begin
- AssignFile(InfoFile, CorrectFileDir + FileName + '.info.txt');
- Reset(InfoFile);
- try
- Readln(InfoFile, ExpectedSampleRate, ExpectedChannels, ExpectedBitsPerSample, ExpectedFormat);
- finally
- CloseFile(InfoFile);
- end;
- SaveFileMode := FileMode;
- try
- FileMode := 0;
- AssignFile(RawDataFile, CorrectFileDir + FileName + '.raw');
- Reset(RawDataFile, 1);
- try
- SetLength(ExpectedData, FileSize(RawDataFile));
- BlockRead(RawDataFile, ExpectedData[0], Length(ExpectedData));
- finally
- CloseFile(RawDataFile);
- end;
- finally
- FileMode := SaveFileMode;
- end;
- WavReader := TWavReader.Create;
- try
- if not WavReader.LoadFromFile(CorrectFileDir + FileName) then
- Fail('Error loading wave file');
- AssertEquals('Incorrect format', ExpectedFormat, WavReader.fmt.Format);
- AssertEquals('Incorrect sample rate', ExpectedSampleRate, WavReader.fmt.SampleRate);
- AssertEquals('Incorrect number of channels', ExpectedChannels, WavReader.fmt.Channels);
- AssertEquals('Incorrect number of bits per sample', ExpectedBitsPerSample, WavReader.fmt.BitsPerSample);
- SetLength(ActualData, Length(ExpectedData));
- ActualDataLen := WavReader.ReadBuf(ActualData[0], Length(ActualData));
- AssertEquals('Data length', Length(ExpectedData), ActualDataLen);
- AssertTrue('Data differs', CompareMem(@ExpectedData[0], @ActualData[0], ActualDataLen));
- finally
- FreeAndNil(WavReader);
- end;
- end;
- procedure TTestWavReader.TestValidFiles;
- begin
- TestValidFile('44k_mono_8.wav');
- TestValidFile('44k_mono_16.wav');
- TestValidFile('44k_mono_24.wav');
- TestValidFile('44k_mono_32.wav');
- TestValidFile('44k_mono_32float.wav');
- TestValidFile('44k_mono_64float.wav');
- TestValidFile('44k_stereo_8.wav');
- TestValidFile('44k_stereo_16.wav');
- TestValidFile('44k_stereo_24.wav');
- TestValidFile('44k_stereo_32.wav');
- TestValidFile('44k_stereo_32float.wav');
- TestValidFile('44k_stereo_64float.wav');
- TestValidFile('44k_mono_16_tag.wav');
- TestValidFile('euphoric_tape.wav');
- TestValidFile('odd_fmt_size.wav');
- end;
- initialization
- RegisterTest(TTestWavReader);
- end.
|