[Scummvm-cvs-logs] SF.net SVN: scummvm:[50789] scummvm/branches/gsoc2010-testbed/engines/ testbed

sud03r at users.sourceforge.net sud03r at users.sourceforge.net
Sat Jul 10 21:24:12 CEST 2010


Revision: 50789
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50789&view=rev
Author:   sud03r
Date:     2010-07-10 19:24:12 +0000 (Sat, 10 Jul 2010)

Log Message:
-----------
switched testbed detection code to advance detector, doesn't bails out when game data not found

Modified Paths:
--------------
    scummvm/branches/gsoc2010-testbed/engines/testbed/detection.cpp
    scummvm/branches/gsoc2010-testbed/engines/testbed/fs.cpp
    scummvm/branches/gsoc2010-testbed/engines/testbed/fs.h
    scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.cpp
    scummvm/branches/gsoc2010-testbed/engines/testbed/testsuite.h

Modified: scummvm/branches/gsoc2010-testbed/engines/testbed/detection.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/engines/testbed/detection.cpp	2010-07-10 18:34:38 UTC (rev 50788)
+++ scummvm/branches/gsoc2010-testbed/engines/testbed/detection.cpp	2010-07-10 19:24:12 UTC (rev 50789)
@@ -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 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;
 	}
- 
-	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;
-	}
+
 };
- 
+
 #if PLUGIN_ENABLED_DYNAMIC(TESTBED)
 	REGISTER_PLUGIN_DYNAMIC(TESTBED, PLUGIN_TYPE_ENGINE, TestbedMetaEngine);
 #else

Modified: scummvm/branches/gsoc2010-testbed/engines/testbed/fs.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/engines/testbed/fs.cpp	2010-07-10 18:34:38 UTC (rev 50788)
+++ scummvm/branches/gsoc2010-testbed/engines/testbed/fs.cpp	2010-07-10 19:24:12 UTC (rev 50789)
@@ -151,8 +151,21 @@
 	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

Modified: scummvm/branches/gsoc2010-testbed/engines/testbed/fs.h
===================================================================
--- scummvm/branches/gsoc2010-testbed/engines/testbed/fs.h	2010-07-10 18:34:38 UTC (rev 50788)
+++ scummvm/branches/gsoc2010-testbed/engines/testbed/fs.h	2010-07-10 19:24:12 UTC (rev 50789)
@@ -60,7 +60,7 @@
 	FSTestSuite();
 	~FSTestSuite(){}
 	const char *getName() const;
-
+	void enable(bool flag);
 };
 
 }	// End of namespace Testbed

Modified: scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.cpp	2010-07-10 18:34:38 UTC (rev 50788)
+++ scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.cpp	2010-07-10 19:24:12 UTC (rev 50789)
@@ -131,7 +131,7 @@
 	}
 	
 	// Enable the testsuites you want to execute
-	// enableTestsuite("FS", true);
+	enableTestsuite("FS", true);
 	enableTestsuite("GFX", true);
 	// enableTestsuite("savegames", true);
 	// enableTestsuite("misc", true);

Modified: scummvm/branches/gsoc2010-testbed/engines/testbed/testsuite.h
===================================================================
--- scummvm/branches/gsoc2010-testbed/engines/testbed/testsuite.h	2010-07-10 18:34:38 UTC (rev 50788)
+++ scummvm/branches/gsoc2010-testbed/engines/testbed/testsuite.h	2010-07-10 19:24:12 UTC (rev 50789)
@@ -86,7 +86,7 @@
 	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;
 	}
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list