aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/testbed/detection.cpp127
-rw-r--r--engines/testbed/fs.cpp13
-rw-r--r--engines/testbed/fs.h2
-rw-r--r--engines/testbed/testbed.cpp2
-rw-r--r--engines/testbed/testsuite.h2
5 files changed, 65 insertions, 81 deletions
diff --git a/engines/testbed/detection.cpp b/engines/testbed/detection.cpp
index b111d2c9ca..b0e3c4693b 100644
--- a/engines/testbed/detection.cpp
+++ b/engines/testbed/detection.cpp
@@ -8,110 +8,81 @@
* 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 "testbed/testbed.h"
-
#include "common/config-manager.h"
-#include "common/error.h"
+#include "engines/advancedDetector.h"
+#include "common/system.h"
#include "common/fs.h"
-
-#include "engines/metaengine.h"
-
+
+#include "base/plugins.h"
+
+#include "testbed/testbed.h"
+
static const PlainGameDescriptor testbed_setting[] = {
- { "testbed", "TestBed: The backend testing framework" },
+ { "testbed", "Testbed: The backend testing framework" },
{ 0, 0 }
};
-
-class TestbedMetaEngine : public MetaEngine {
+
+static const ADGameDescription testbedDescriptions[] = {
+ {
+ "testbed",
+ "",
+ AD_ENTRY1(NULL, 0), // No data files required
+ Common::EN_ANY,
+ Common::kPlatformLinux,
+ ADGF_NO_FLAGS,
+ Common::GUIO_NONE
+ },
+ AD_TABLE_END_MARKER
+};
+
+static const ADParams detectionParams = {
+ (const byte *)testbedDescriptions,
+ sizeof(ADGameDescription),
+ 512,
+ testbed_setting,
+ 0,
+ "testbed",
+ 0,
+ ADGF_NO_FLAGS,
+ Common::GUIO_NONE
+};
+
+class TestbedMetaEngine : public AdvancedMetaEngine {
public:
+ TestbedMetaEngine() : AdvancedMetaEngine(detectionParams) {
+ }
+
virtual const char *getName() const {
return "TestBed: The backend testing framework";
}
-
+
virtual const char *getOriginalCopyright() const {
return "Copyright (C) ScummVM";
}
-
- virtual GameList getSupportedGames() const {
- GameList games;
- const PlainGameDescriptor *g = testbed_setting;
- while (g->gameid) {
- games.push_back(*g);
- g++;
- }
-
- return games;
- }
-
- virtual GameDescriptor findGame(const char *gameid) const {
- const PlainGameDescriptor *g = testbed_setting;
- while (g->gameid) {
- if (0 == scumm_stricmp(gameid, g->gameid))
- break;
- g++;
- }
- return GameDescriptor(g->gameid, g->description);
- }
-
- virtual GameList detectGames(const Common::FSList &fslist) const {
- GameList detectedGames;
-
- // Iterate over all files in the given directory
- for (Common::FSList::const_iterator file = fslist.begin(); file != fslist.end(); ++file) {
- if (!file->isDirectory()) {
- const char *gameName = file->getName().c_str();
-
- if (0 == scumm_stricmp("TESTBED", gameName)) {
- // You could check the contents of the file now if you need to.
- detectedGames.push_back(testbed_setting[0]);
- break;
- }
- }
- }
- return detectedGames;
- }
-
- virtual Common::Error createInstance(OSystem *syst, Engine **engine) const {
- assert(syst);
- assert(engine);
-
- // Scan the target directory for files (error out if it does not exist)
- Common::FSList fslist;
- Common::FSNode dir(ConfMan.get("path"));
- if (!dir.getChildren(fslist, Common::FSNode::kListAll)) {
- return Common::kInvalidPathError;
- }
-
- // Invoke the detector
- Common::String gameid = ConfMan.get("gameid");
- GameList detectedGames = detectGames(fslist);
-
- for (uint i = 0; i < detectedGames.size(); i++) {
- if (detectedGames[i].gameid() == gameid) {
- // At this point you may want to perform additional sanity checks.
- *engine = new Testbed::TestbedEngine(syst);
- return Common::kNoError;
- }
- }
-
- // Failed to find any game data
- return Common::kNoGameDataFoundError;
+
+ virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
+ // Instantiate Engine even if the game data is not found.
+ *engine = new Testbed::TestbedEngine(syst);
+ return true;
}
+
};
-
+
#if PLUGIN_ENABLED_DYNAMIC(TESTBED)
REGISTER_PLUGIN_DYNAMIC(TESTBED, PLUGIN_TYPE_ENGINE, TestbedMetaEngine);
#else
diff --git a/engines/testbed/fs.cpp b/engines/testbed/fs.cpp
index b0ef8f8d46..67062c17db 100644
--- a/engines/testbed/fs.cpp
+++ b/engines/testbed/fs.cpp
@@ -151,8 +151,21 @@ FSTestSuite::FSTestSuite() {
addTest("ReadingFile", &FStests::testReadFile, false);
addTest("WritingFile", &FStests::testWriteFile, false);
}
+
const char *FSTestSuite::getName() const {
return "FS";
}
+void FSTestSuite::enable(bool flag) {
+ const Common::String &path = ConfMan.get("path");
+ Common::FSNode gameRoot(path);
+
+ Common::FSNode gameIdentificationFile = gameRoot.getChild("TESTBED");
+ if (!gameIdentificationFile.exists()) {
+ logPrintf("WARNING! : Game Data not found. Skipping FS tests\n");
+ return;
+ }
+ Testsuite::enable(flag);
+}
+
} // End of namespace Testbed
diff --git a/engines/testbed/fs.h b/engines/testbed/fs.h
index b4eb893d4f..cc28147b2b 100644
--- a/engines/testbed/fs.h
+++ b/engines/testbed/fs.h
@@ -60,7 +60,7 @@ public:
FSTestSuite();
~FSTestSuite(){}
const char *getName() const;
-
+ void enable(bool flag);
};
} // End of namespace Testbed
diff --git a/engines/testbed/testbed.cpp b/engines/testbed/testbed.cpp
index c7899002f6..ef241d66f8 100644
--- a/engines/testbed/testbed.cpp
+++ b/engines/testbed/testbed.cpp
@@ -131,7 +131,7 @@ Common::Error TestbedEngine::run() {
}
// Enable the testsuites you want to execute
- // enableTestsuite("FS", true);
+ enableTestsuite("FS", true);
enableTestsuite("GFX", true);
// enableTestsuite("savegames", true);
// enableTestsuite("misc", true);
diff --git a/engines/testbed/testsuite.h b/engines/testbed/testsuite.h
index fe3559a5b9..2a496e12a3 100644
--- a/engines/testbed/testsuite.h
+++ b/engines/testbed/testsuite.h
@@ -86,7 +86,7 @@ public:
int getNumTestsFailed() const { return _numTestsExecuted - _numTestsPassed; }
void genReport() const;
bool isEnabled() const { return _isTsEnabled; }
- void enable(bool flag) {
+ virtual void enable(bool flag) {
_isTsEnabled = flag;
}