aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/testbed/midi.cpp14
-rw-r--r--engines/testbed/midi.h5
-rw-r--r--engines/testbed/sound.cpp17
-rw-r--r--engines/testbed/sound.h3
4 files changed, 33 insertions, 6 deletions
diff --git a/engines/testbed/midi.cpp b/engines/testbed/midi.cpp
index 57ac1a64d2..bae78b352b 100644
--- a/engines/testbed/midi.cpp
+++ b/engines/testbed/midi.cpp
@@ -128,6 +128,7 @@ TestExitStatus MidiTests::playMidiMusic() {
driver->setTimerCallback(NULL, NULL);
driver->close();
delete smfParser;
+ delete driver;
if (Testsuite::handleInteractiveInput("Were you able to hear the music as described?", "Yes", "No", kOptionRight)) {
Testsuite::logDetailedPrintf("Error! Midi: Can't play Music\n");
@@ -137,7 +138,18 @@ TestExitStatus MidiTests::playMidiMusic() {
}
MidiTestSuite::MidiTestSuite() {
- addTest("MidiTests", &MidiTests::playMidiMusic);
+ if (SearchMan.hasFile("music.mid")) {
+ addTest("MidiTests", &MidiTests::playMidiMusic);
+ } else {
+ // add some fallback test if filesystem loading failed
+ Testsuite::logPrintf("Warning! Midi: Sound data file music.mid not found\n");
+ _isMidiDataFound = false;
+ enable(false);
+ }
+}
+
+void MidiTestSuite::enable(bool flag) {
+ Testsuite::enable(_isMidiDataFound & flag);
}
}
diff --git a/engines/testbed/midi.h b/engines/testbed/midi.h
index 838d98ca1f..1009179561 100644
--- a/engines/testbed/midi.h
+++ b/engines/testbed/midi.h
@@ -64,6 +64,11 @@ public:
const char *getDescription() const {
return "Midi Music";
}
+
+ void enable(bool flag);
+
+private:
+ bool _isMidiDataFound;
};
diff --git a/engines/testbed/sound.cpp b/engines/testbed/sound.cpp
index 6b56a75b50..fac2437123 100644
--- a/engines/testbed/sound.cpp
+++ b/engines/testbed/sound.cpp
@@ -187,10 +187,7 @@ TestExitStatus SoundSubsystem::audiocdOutput() {
Common::Point pt(0, 100);
Testsuite::writeOnScreen("Playing the tracks of testCD in order i.e 1-2-3-last", pt);
- // Make audio-files discoverable
- Common::FSNode gameRoot(ConfMan.get("path"));
- SearchMan.addSubDirectoryMatching(gameRoot, "audiocd-files");
-
+
// Play all tracks
for (int i = 1; i < 5; i++) {
AudioCD.play(i, 1, 0, 0);
@@ -266,7 +263,17 @@ TestExitStatus SoundSubsystem::sampleRates() {
SoundSubsystemTestSuite::SoundSubsystemTestSuite() {
addTest("SimpleBeeps", &SoundSubsystem::playBeeps, true);
addTest("MixSounds", &SoundSubsystem::mixSounds, true);
- addTest("AudiocdOutput", &SoundSubsystem::audiocdOutput, true);
+
+ // Make audio-files discoverable
+ Common::FSNode gameRoot(ConfMan.get("path"));
+ if (gameRoot.exists()) {
+ SearchMan.addSubDirectoryMatching(gameRoot, "audiocd-files");
+ if (SearchMan.hasFile("track01.mp3") && SearchMan.hasFile("track02.mp3") && SearchMan.hasFile("track03.mp3") && SearchMan.hasFile("track04.mp3")) {
+ addTest("AudiocdOutput", &SoundSubsystem::audiocdOutput, true);
+ } else {
+ Testsuite::logPrintf("Warning! Skipping test AudioCD: Required data files missing, check game-dir/audiocd-files\n");
+ }
+ }
addTest("SampleRates", &SoundSubsystem::sampleRates, true);
}
diff --git a/engines/testbed/sound.h b/engines/testbed/sound.h
index ce8c5c3f33..5b9cd5bdfc 100644
--- a/engines/testbed/sound.h
+++ b/engines/testbed/sound.h
@@ -73,6 +73,9 @@ public:
return "Sound Subsystem";
}
+private:
+ bool _isTestDataFound;
+
};
} // End of namespace Testbed