From 32553308cffd5d2f936f6143e89db703afeb0036 Mon Sep 17 00:00:00 2001 From: Neeraj Kumar Date: Tue, 10 Aug 2010 20:20:28 +0000 Subject: TESTBED: basic template for midi tests svn-id: r51957 --- engines/testbed/midi.cpp | 55 ++++++++++++++++++++++++++++++++++++ engines/testbed/midi.h | 68 +++++++++++++++++++++++++++++++++++++++++++++ engines/testbed/module.mk | 1 + engines/testbed/testbed.cpp | 4 +++ 4 files changed, 128 insertions(+) create mode 100644 engines/testbed/midi.cpp create mode 100644 engines/testbed/midi.h diff --git a/engines/testbed/midi.cpp b/engines/testbed/midi.cpp new file mode 100644 index 0000000000..bdc1314804 --- /dev/null +++ b/engines/testbed/midi.cpp @@ -0,0 +1,55 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#include "sound/mididrv.h" +#include "sound/midiparser.h" +#include "testbed/midi.h" + +namespace Testbed { + +TestExitStatus MidiTests::playMidiMusic() { + MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI | MDT_ADLIB); + // Create a driver instance + MidiDriver *driver = MidiDriver::createMidi(dev); + // Create a SMF parser + MidiParser *smfParser = MidiParser::createParser_SMF(); + smfParser->setMidiDriver(driver); + smfParser->setTimerRate(driver->getBaseTempo()); + // Open the driver + int errCode = driver->open(); + + if (errCode) { + Testsuite::logPrintf("Error! %s", driver->getErrorName(errCode)); + return kTestFailed; + } + + Testsuite::logDetailedPrintf("Midi: Succesfully opened the driver\n"); + return kTestPassed; +} + +MidiTestSuite::MidiTestSuite() { + addTest("MidiTests", &MidiTests::playMidiMusic); +} + +} diff --git a/engines/testbed/midi.h b/engines/testbed/midi.h new file mode 100644 index 0000000000..2443a5e0e0 --- /dev/null +++ b/engines/testbed/midi.h @@ -0,0 +1,68 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#ifndef TESTBED_MIDI_H +#define TESTBED_MIDI_H + +#include "testbed/testsuite.h" + +// This file can be used as template for header files of other newer testsuites. + +namespace Testbed { + +namespace MidiTests { + +// Helper functions for MIDI tests + +// will contain function declarations for MIDI tests +// add more here +TestExitStatus playMidiMusic(); + +} // End of namespace MIDItests + +class MidiTestSuite : public Testsuite { +public: + /** + * The constructor for the XXXTestSuite + * For every test to be executed one must: + * 1) Create a function that would invoke the test + * 2) Add that test to list by executing addTest() + * + * @see addTest() + */ + MidiTestSuite(); + ~MidiTestSuite() {} + const char *getName() const { + return "MIDI"; + } + + const char *getDescription() const { + return "Midi Music"; + } + +}; + +} // End of namespace Testbed + +#endif // TESTBED_MIDI_H diff --git a/engines/testbed/module.mk b/engines/testbed/module.mk index 4c530e412a..3adb8bf320 100644 --- a/engines/testbed/module.mk +++ b/engines/testbed/module.mk @@ -6,6 +6,7 @@ MODULE_OBJS := \ events.o \ fs.o \ graphics.o \ + midi.o \ misc.o \ savegame.o \ sound.o \ diff --git a/engines/testbed/testbed.cpp b/engines/testbed/testbed.cpp index 673858f4c1..51ff43a293 100644 --- a/engines/testbed/testbed.cpp +++ b/engines/testbed/testbed.cpp @@ -31,6 +31,7 @@ #include "testbed/events.h" #include "testbed/fs.h" #include "testbed/graphics.h" +#include "testbed/midi.h" #include "testbed/misc.h" #include "testbed/savegame.h" #include "testbed/sound.h" @@ -121,6 +122,9 @@ TestbedEngine::TestbedEngine(OSystem *syst) // Sound ts = new SoundSubsystemTestSuite(); _testsuiteList.push_back(ts); + // Midi + ts = new MidiTestSuite(); + _testsuiteList.push_back(ts); } TestbedEngine::~TestbedEngine() { -- cgit v1.2.3