2
0
Эх сурвалжийг харах

+ also check the actual PCM wave data in the fcl-sound wavreader test

git-svn-id: trunk@47452 -
nickysn 4 жил өмнө
parent
commit
188054d9b4

+ 5 - 0
.gitattributes

@@ -4319,14 +4319,19 @@ packages/fcl-sound/src/fpwavreader.pas svneol=native#text/plain
 packages/fcl-sound/src/fpwavwriter.pas svneol=native#text/plain
 packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_16.wav -text svneol=unset#audio/x-wav
 packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_16.wav.info.txt svneol=native#text/plain
+packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_16.wav.raw -text
 packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_16_tag.wav -text svneol=unset#audio/x-wav
 packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_16_tag.wav.info.txt svneol=native#text/plain
+packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_16_tag.wav.raw -text
 packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_24.wav -text svneol=unset#audio/x-wav
 packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_24.wav.info.txt svneol=native#text/plain
+packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_24.wav.raw -text
 packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_32.wav -text svneol=unset#audio/x-wav
 packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_32.wav.info.txt svneol=native#text/plain
+packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_32.wav.raw -text
 packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_8.wav -text svneol=unset#audio/x-wav
 packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_8.wav.info.txt svneol=native#text/plain
+packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_8.wav.raw -text svneol=unset#application/octet-stream
 packages/fcl-sound/tests/tcwavreader.pas svneol=native#text/plain
 packages/fcl-sound/tests/testfclsound.lpi svneol=native#text/plain
 packages/fcl-sound/tests/testfclsound.lpr svneol=native#text/plain

BIN
packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_16.wav.raw


BIN
packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_16_tag.wav.raw


BIN
packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_24.wav.raw


BIN
packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_32.wav.raw


+ 1 - 0
packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_8.wav.raw

@@ -0,0 +1 @@
+唽摍煡�祷棵撬涡矣栽右型势陆繁�潟巻wpic\WRNKHGFFGILOTY^djqx~厠憱殲。ゥぃ�殩拲垉~zvromlkklmoqsvy|

+ 25 - 1
packages/fcl-sound/tests/tcwavreader.pas

@@ -27,7 +27,12 @@ const
 var
   WavReader: TWavReader;
   InfoFile: TextFile;
-  ExpectedSampleRate, ExpectedChannels, ExpectedBitsPerSample : Integer;
+  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);
@@ -37,6 +42,21 @@ begin
     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
@@ -44,6 +64,10 @@ begin
     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;