1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- 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: 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);
- 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 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_stereo_8.wav');
- TestValidFile('44k_stereo_16.wav');
- TestValidFile('44k_stereo_24.wav');
- TestValidFile('44k_stereo_32.wav');
- TestValidFile('44k_mono_16_tag.wav');
- end;
- initialization
- RegisterTest(TTestWavReader);
- end.
|