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

sud03r at users.sourceforge.net sud03r at users.sourceforge.net
Sat Jul 3 23:14:45 CEST 2010


Revision: 50633
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50633&view=rev
Author:   sud03r
Date:     2010-07-03 21:14:44 +0000 (Sat, 03 Jul 2010)

Log Message:
-----------
added code for mouse and kbd events

Modified Paths:
--------------
    scummvm/branches/gsoc2010-testbed/engines/testbed/events.cpp
    scummvm/branches/gsoc2010-testbed/engines/testbed/events.h
    scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.cpp

Modified: scummvm/branches/gsoc2010-testbed/engines/testbed/events.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/engines/testbed/events.cpp	2010-07-03 21:07:30 UTC (rev 50632)
+++ scummvm/branches/gsoc2010-testbed/engines/testbed/events.cpp	2010-07-03 21:14:44 UTC (rev 50633)
@@ -23,33 +23,175 @@
  */
 
 #include "common/events.h"
+#include "common/keyboard.h"
 
+#include "graphics/cursorman.h"
+
 #include "testbed/events.h"
 
 namespace Testbed {
 
+struct keycodeToChar {
+	Common::KeyCode code;
+	char value;
+} keyCodeLUT[] = {
+		{Common::KEYCODE_a, 'a'},
+		{Common::KEYCODE_b, 'b'},
+		{Common::KEYCODE_c, 'c'},
+		{Common::KEYCODE_d, 'd'},
+		{Common::KEYCODE_e, 'e'},
+		{Common::KEYCODE_f, 'f'},
+		{Common::KEYCODE_g, 'g'},
+		{Common::KEYCODE_h, 'h'},
+		{Common::KEYCODE_i, 'i'},
+		{Common::KEYCODE_j, 'j'},
+		{Common::KEYCODE_k, 'k'},
+		{Common::KEYCODE_l, 'l'},
+		{Common::KEYCODE_m, 'm'},
+		{Common::KEYCODE_n, 'n'},
+		{Common::KEYCODE_o, 'o'},
+		{Common::KEYCODE_p, 'p'},
+		{Common::KEYCODE_q, 'q'},
+		{Common::KEYCODE_r, 'r'},
+		{Common::KEYCODE_s, 's'},
+		{Common::KEYCODE_t, 't'},
+		{Common::KEYCODE_u, 'u'},
+		{Common::KEYCODE_v, 'v'},
+		{Common::KEYCODE_w, 'w'},
+		{Common::KEYCODE_x, 'x'},
+		{Common::KEYCODE_y, 'y'},
+		{Common::KEYCODE_z, 'z'}
+	};
+
+char EventTests::keystrokeToChar() {
+	Common::EventManager *eventMan = g_system->getEventManager();
+	bool quitLoop = false;
+	Common::Event event;
+	
+	// handle all keybd events
+	while (!quitLoop) {
+		while (eventMan->pollEvent(event)) {
+			switch (event.type) {
+			case Common::EVENT_KEYDOWN :
+				if (event.kbd.keycode == Common::KEYCODE_ESCAPE) {
+					return 0;
+				}
+				for (int i = 0; i < ARRAYSIZE(keyCodeLUT); i++) {
+					if (event.kbd.keycode == keyCodeLUT[i].code) {
+						return keyCodeLUT[i].value;
+					}
+				}
+			default:
+				; // Ignore other events
+			}
+		}
+	}
+
+	return 0;
+}
+
 bool EventTests::mouseEvents() {
 	Common::EventManager *eventMan = g_system->getEventManager();
 
+	Common::Point pt(0, 100);
+	Testsuite::writeOnScreen("Generate mouse events make L/R/M button clicks", pt);
+	pt.y = 120; 
+	Testsuite::writeOnScreen("Testbed should be able to detect them, Press X to exit", pt);
+
+
 	bool quitLoop = false;
+	bool passed = true;
+	// handle all mouse events
 	Common::Event event;
 	while (!quitLoop) {
+		//  show mouse
+		CursorMan.showMouse(true);
+		g_system->updateScreen();
+		
 		while (eventMan->pollEvent(event)) {
 			switch (event.type) {
-				// handle all mouse events
-				// TODO: tommorrow
-				default:
+			case Common::EVENT_MOUSEMOVE:
+				// Movements havee already been tested in GFX
 				break;
+			case Common::EVENT_LBUTTONDOWN:
+				Testsuite::clearScreen();
+				Testsuite::writeOnScreen("Mouse left-button pressed", pt);
+				break;
+			case Common::EVENT_RBUTTONDOWN:
+				Testsuite::clearScreen();
+				Testsuite::writeOnScreen("Mouse right-button pressed", pt);
+				break;
+			case Common::EVENT_WHEELDOWN:
+				Testsuite::clearScreen();
+				Testsuite::writeOnScreen("Mouse wheel moved down", pt);
+				break;
+			case Common::EVENT_MBUTTONDOWN:
+				Testsuite::clearScreen();
+				Testsuite::writeOnScreen("Mouse middle-button pressed ", pt);
+				break;
+			case Common::EVENT_LBUTTONUP:
+				Testsuite::clearScreen();
+				Testsuite::writeOnScreen("Mouse left-button released", pt);
+				break;
+			case Common::EVENT_RBUTTONUP:
+				Testsuite::clearScreen();
+				Testsuite::writeOnScreen("Mouse right-button released", pt);
+				break;
+			case Common::EVENT_WHEELUP:
+				Testsuite::clearScreen();
+				Testsuite::writeOnScreen("Mouse wheel moved down", pt);
+				break;
+			case Common::EVENT_MBUTTONUP:
+				Testsuite::clearScreen();
+				Testsuite::writeOnScreen("Mouse middle-button released ", pt);
+				break;
+			case Common::EVENT_KEYDOWN:
+				if (event.kbd.keycode == Common::KEYCODE_x) {
+					Testsuite::clearScreen();
+					Testsuite::writeOnScreen("Exit requested", pt);	
+					quitLoop = true;
+				}
+				break;
+
+			default:
+					break;
 			}
 
 		}
 	}
 
+	// Verify results now!
+	if (Testsuite::handleInteractiveInput("Were mouse clicks L/R/M buttons identfied?", "Yes", "No", kOptionRight)) {
+		Testsuite::logDetailedPrintf("Mouse clicks (L/R/M buttons) failed");
+		passed = false;
+	}
+	if (Testsuite::handleInteractiveInput("Were mouse wheel movements identified?", "Yes", "No", kOptionRight)) {
+		Testsuite::logDetailedPrintf("Mouse wheel movements failed");
+		passed = false;
+	}
+
+	return passed;
+}
+
+bool EventTests::kbdEvents() {
+	// Make user type some word and display the output on screen
+	Common::String text = "You Entered :";
+	Common::Point pt(0, 100);
+	Testsuite::clearScreen();
+	Testsuite::writeOnScreen("Enter your word, press ESC when done, it will be echoed back", pt);
+	pt.y += 20;
+	Common::Rect rect = Testsuite::writeOnScreen(text, pt);
+	char letter;
+	while ((letter = keystrokeToChar()) != 0) {
+		Testsuite::clearScreen(rect);
+		text = text + letter;
+	}
 	return true;
 }
 
 EventTestSuite::EventTestSuite() {
 	addTest("Mouse Events", &EventTests::mouseEvents);
+	addTest("Keyboard Events", &EventTests::kbdEvents);
 }
 const char *EventTestSuite::getName() const {
 	return "Events";

Modified: scummvm/branches/gsoc2010-testbed/engines/testbed/events.h
===================================================================
--- scummvm/branches/gsoc2010-testbed/engines/testbed/events.h	2010-07-03 21:07:30 UTC (rev 50632)
+++ scummvm/branches/gsoc2010-testbed/engines/testbed/events.h	2010-07-03 21:14:44 UTC (rev 50633)
@@ -33,10 +33,10 @@
 namespace EventTests {
 
 // Helper functions for Event tests
-
+char keystrokeToChar();
 // will contain function declarations for Event tests
 bool mouseEvents();
-bool keybdEvents();
+bool kbdEvents();
 // add more here
 }
 

Modified: scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.cpp	2010-07-03 21:07:30 UTC (rev 50632)
+++ scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.cpp	2010-07-03 21:14:44 UTC (rev 50633)
@@ -28,6 +28,7 @@
 
 #include "engines/util.h"
  
+#include "testbed/events.h"
 #include "testbed/fs.h"
 #include "testbed/graphics.h"
 #include "testbed/misc.h"
@@ -63,6 +64,9 @@
 	// Misc.
 	ts = new MiscTestSuite();
 	_testsuiteList.push_back(ts);
+	// Events
+	ts = new EventTestSuite();
+	_testsuiteList.push_back(ts);
 }
  
 TestbedEngine::~TestbedEngine() {
@@ -115,21 +119,20 @@
 	// To be set from config file
 	// By default Interactive tests are enabled
 	// XXX: disabling these as of now for fastly testing other tests
-	Testsuite::isSessionInteractive = false;
+	// Testsuite::isSessionInteractive = false;
 
 	if (Testsuite::isSessionInteractive) {
 		Testsuite::logPrintf("Info! : Interactive tests are also being executed.\n");		
 		Testsuite::displayMessage(prompt, "Proceed?");
-		// Executing GFX Tests
-		GFXTestSuite gts;
-		gts.execute();
 	}
 	
 	// Enable the testsuites you want to execute
-	enableTestsuite("FS", true);
-	enableTestsuite("GFX", true);
-	enableTestsuite("savegames", true);
-	enableTestsuite("misc", true);
+	// enableTestsuite("FS", true);
+	// enableTestsuite("GFX", true);
+	// enableTestsuite("savegames", true);
+	// enableTestsuite("misc", true);
+	// enableTestsuite("misc", true);
+	enableTestsuite("events", true);
 	// invoke them
 	invokeTestsuites();
 	


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