aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/testbed/gfxtests.cpp180
-rw-r--r--engines/testbed/gfxtests.h15
-rw-r--r--engines/testbed/graphics.cpp189
-rw-r--r--engines/testbed/graphics.h10
-rw-r--r--engines/testbed/module.mk1
-rw-r--r--engines/testbed/testbed.cpp11
-rw-r--r--engines/testbed/testsuite.h4
7 files changed, 202 insertions, 208 deletions
diff --git a/engines/testbed/gfxtests.cpp b/engines/testbed/gfxtests.cpp
deleted file mode 100644
index 486171c1f7..0000000000
--- a/engines/testbed/gfxtests.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-#include "testbed/gfxtests.h"
-#include "testbed/graphics.h"
-#include "testbed/testsuite.h"
-
-#include "graphics/fontman.h"
-#include "graphics/surface.h"
-#include "graphics/cursorman.h"
-
-#include "common/events.h"
-
-namespace Testbed {
-
-bool testFullScreenMode() {
-
- Testsuite::displayMessage("Testing fullscreen mode. \n \
- If the feature is supported by the backend, you should expect to see a toggle between fullscreen and normal modes");
-
- Common::Point pt(0,100);
- Common::Rect rect = Testsuite::writeOnScreen("Testing fullscreen mode", pt);
-
- bool isFeaturePresent;
- bool isFeatureEnabled;
-
- isFeaturePresent = g_system->hasFeature(OSystem::kFeatureFullscreenMode);
- isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureFullscreenMode);
- g_system->delayMillis(1000);
-
- if (isFeaturePresent) {
- //Toggle
-
- g_system->beginGFXTransaction();
- g_system->setFeatureState(OSystem::kFeatureFullscreenMode, !isFeatureEnabled);
- g_system->endGFXTransaction();
-
- g_system->delayMillis(1000);
-
- g_system->beginGFXTransaction();
- g_system->setFeatureState(OSystem::kFeatureFullscreenMode, isFeatureEnabled);
- g_system->endGFXTransaction();
- }
- else {
- Testsuite::displayMessage("feature not supported");
- }
-
- Testsuite::clearScreen(rect);
- return true;
-}
-
-bool testAspectRatio() {
- Testsuite::displayMessage("Testing Aspect Ratio Correction. \n \
- With this feature enabled games running at 320x200 should be scaled upto 320x240 pixels");
-
- Common::Point pt(0,100);
- Common::Rect rect = Testsuite::writeOnScreen("Testing Aspect ratio correction", pt);
-
- bool isFeaturePresent;
- bool isFeatureEnabled;
-
- isFeaturePresent = g_system->hasFeature(OSystem::kFeatureAspectRatioCorrection);
- isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureAspectRatioCorrection);
- g_system->delayMillis(1000);
-
- if (isFeaturePresent) {
- //Toggle
-
- g_system->beginGFXTransaction();
- g_system->setFeatureState(OSystem::kFeatureAspectRatioCorrection, !isFeatureEnabled);
- g_system->endGFXTransaction();
-
- g_system->delayMillis(1000);
-
- g_system->beginGFXTransaction();
- g_system->setFeatureState(OSystem::kFeatureAspectRatioCorrection, isFeatureEnabled);
- g_system->endGFXTransaction();
- }
- else {
- Testsuite::displayMessage("feature not supported");
- }
-
- Testsuite::clearScreen(rect);
- return true;
-}
-
-bool testPalettizedCursors() {
- Testsuite::displayMessage("Testing Cursors. You should expect to see a yellow colored square cursor.\n \
- You should be able to move it. The test finishes when the mouse(L/R) is clicked");
-
- Common::Point pt(0,100);
- Common::Rect rect = Testsuite::writeOnScreen("Testing Palettized Cursors", pt);
-
- bool isFeaturePresent;
- bool isFeatureEnabled;
-
- isFeaturePresent = g_system->hasFeature(OSystem::kFeatureCursorHasPalette);
- isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureCursorHasPalette);
-
- if (isFeaturePresent) {
- byte palette[3 * 4]; // Black, white and yellow
- palette[0] = palette[1] = palette[2] = 0;
- palette[4] = palette[5] = palette[6] = 255;
- palette[8] = palette[9] = 255;
- palette[10] = 0;
-
- byte buffer[10 * 10];
- memset(buffer, 2, 10 * 10);
-
- CursorMan.pushCursorPalette(palette, 0, 3);
- CursorMan.pushCursor(buffer, 10, 10, 45, 45, 1);
- CursorMan.showMouse(true);
-
- Common::EventManager *eventMan = g_system->getEventManager();
- Common::Event event;
-
- bool quitLoop = false;
- uint32 lastRedraw = 0;
- const uint32 waitTime = 1000 / 45;
-
- while (!quitLoop) {
- while (eventMan->pollEvent(event)) {
-
- if (lastRedraw + waitTime < g_system->getMillis()) {
- g_system->updateScreen();
- lastRedraw = g_system->getMillis();
- }
-
- switch (event.type) {
- case Common::EVENT_MOUSEMOVE:
- printf("Mouse Move\n");
- break;
- case Common::EVENT_LBUTTONDOWN:
- case Common::EVENT_RBUTTONDOWN:
- Testsuite::clearScreen(rect);
- Testsuite::writeOnScreen("Mouse Clicked", pt);
- printf("Mouse Clicked\n");
- g_system->delayMillis(1000);
- quitLoop = true;
- CursorMan.popCursorPalette();
- CursorMan.popCursor();
- Testsuite::clearScreen(rect);
- Testsuite::writeOnScreen("TestFinished", pt);
- g_system->delayMillis(1000);
- break;
- default:
- ;//Ignore any other event
-
- }
- }
- }
- }
- else {
- Testsuite::displayMessage("feature not supported");
- }
- Testsuite::clearScreen(rect);
- return true;
-}
-
-bool testCopyRectToScreen() {
- Testsuite::displayMessage("Testing Blitting a Bitmap to screen. \n\
- You should expect to see a 20x40 yellow horizontal rectangle centred at the screen.");
-
- GFXTestSuite::setCustomColor(255, 255, 0);
- byte buffer[20 * 40];
- memset(buffer, 2, 20 * 40);
-
- uint x = g_system->getWidth() / 2 - 20;
- uint y = g_system->getHeight() / 2 - 10;
-
- g_system->copyRectToScreen(buffer, 40, x, y, 40, 20);
- g_system->updateScreen();
- g_system->delayMillis(1000);
-
- Common::Rect rect(x, y, x+40, y+20);
- Testsuite::clearScreen(rect);
-
- return true;
-
-}
-
-
-}
diff --git a/engines/testbed/gfxtests.h b/engines/testbed/gfxtests.h
deleted file mode 100644
index bd219411e9..0000000000
--- a/engines/testbed/gfxtests.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef GFXTESTS_H
-#define GFXTESTS_H
-
-namespace Testbed {
-
-// will contain function declarations for GFX tests
-bool testFullScreenMode();
-bool testAspectRatio();
-bool testPalettizedCursors();
-bool testCopyRectToScreen();
-// add more here
-
-}
-
-#endif
diff --git a/engines/testbed/graphics.cpp b/engines/testbed/graphics.cpp
index c4701982c6..5b3759f2dd 100644
--- a/engines/testbed/graphics.cpp
+++ b/engines/testbed/graphics.cpp
@@ -1,5 +1,11 @@
+#include "common/events.h"
+
#include "testbed/graphics.h"
-#include "testbed/gfxtests.h"
+#include "testbed/testsuite.h"
+
+#include "graphics/cursorman.h"
+#include "graphics/fontman.h"
+#include "graphics/surface.h"
namespace Testbed {
@@ -7,16 +13,16 @@ byte GFXTestSuite::_palette[3 * 4] = {0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 25
GFXTestSuite::GFXTestSuite() {
// Initialize color palettes
- // Te fourth field is for alpha channel which is unused
+ // The fourth field is for alpha channel which is unused
// Assuming 8bpp as of now
g_system->setPalette(_palette, 0, 3);
g_system->grabPalette(_palette, 0, 3);
// Add tests here
- addTest("FullScreenMode", &testFullScreenMode);
- addTest("AspectRatio", &testAspectRatio);
- addTest("PalettizedCursors", &testPalettizedCursors);
- addTest("BlitBitmaps", &testCopyRectToScreen);
+ addTest("FullScreenMode", &GFXtests::fullScreenMode);
+ addTest("AspectRatio", &GFXtests::aspectRatio);
+ addTest("PalettizedCursors", &GFXtests::palettizedCursors);
+ addTest("BlitBitmaps", &GFXtests::copyRectToScreen);
}
const char *GFXTestSuite::getName() {
@@ -48,4 +54,175 @@ void GFXTestSuite::execute() {
genReport();
}
+// GFXtests go here
+
+bool GFXtests::fullScreenMode() {
+
+ Testsuite::displayMessage("Testing fullscreen mode. \n \
+ If the feature is supported by the backend, you should expect to see a toggle between fullscreen and normal modes");
+
+ Common::Point pt(0,100);
+ Common::Rect rect = Testsuite::writeOnScreen("Testing fullscreen mode", pt);
+
+ bool isFeaturePresent;
+ bool isFeatureEnabled;
+
+ isFeaturePresent = g_system->hasFeature(OSystem::kFeatureFullscreenMode);
+ isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureFullscreenMode);
+ g_system->delayMillis(1000);
+
+ if (isFeaturePresent) {
+ // Toggle
+
+ g_system->beginGFXTransaction();
+ g_system->setFeatureState(OSystem::kFeatureFullscreenMode, !isFeatureEnabled);
+ g_system->endGFXTransaction();
+
+ g_system->delayMillis(1000);
+
+ g_system->beginGFXTransaction();
+ g_system->setFeatureState(OSystem::kFeatureFullscreenMode, isFeatureEnabled);
+ g_system->endGFXTransaction();
+ }
+ else {
+ Testsuite::displayMessage("feature not supported");
+ }
+
+ Testsuite::clearScreen(rect);
+ return true;
+}
+
+bool GFXtests::aspectRatio() {
+ Testsuite::displayMessage("Testing Aspect Ratio Correction.\n"
+ "With this feature enabled games running at 320x200 should be scaled upto 320x240 pixels");
+
+ Common::Point pt(0,100);
+ Common::Rect rect = Testsuite::writeOnScreen("Testing Aspect ratio correction", pt);
+
+ bool isFeaturePresent;
+ bool isFeatureEnabled;
+
+ isFeaturePresent = g_system->hasFeature(OSystem::kFeatureAspectRatioCorrection);
+ isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureAspectRatioCorrection);
+ g_system->delayMillis(1000);
+
+ if (isFeaturePresent) {
+ // Toggle
+
+ g_system->beginGFXTransaction();
+ g_system->setFeatureState(OSystem::kFeatureAspectRatioCorrection, !isFeatureEnabled);
+ g_system->endGFXTransaction();
+
+ g_system->delayMillis(1000);
+
+ g_system->beginGFXTransaction();
+ g_system->setFeatureState(OSystem::kFeatureAspectRatioCorrection, isFeatureEnabled);
+ g_system->endGFXTransaction();
+ }
+ else {
+ Testsuite::displayMessage("feature not supported");
+ }
+
+ Testsuite::clearScreen(rect);
+ return true;
+}
+
+bool GFXtests::palettizedCursors() {
+ Testsuite::displayMessage("Testing Cursors. You should expect to see a yellow colored square cursor.\n"
+ "You should be able to move it. The test finishes when the mouse(L/R) is clicked");
+
+ Common::Point pt(0, 100);
+ Common::Rect rect = Testsuite::writeOnScreen("Testing Palettized Cursors", pt);
+
+ bool isFeaturePresent;
+ bool isFeatureEnabled;
+
+ isFeaturePresent = g_system->hasFeature(OSystem::kFeatureCursorHasPalette);
+ isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureCursorHasPalette);
+
+ if (isFeaturePresent) {
+ byte palette[3 * 4]; // Black, white and yellow
+ palette[0] = palette[1] = palette[2] = 0;
+ palette[4] = palette[5] = palette[6] = 255;
+ palette[8] = palette[9] = 255;
+ palette[10] = 0;
+
+ byte buffer[10 * 10];
+ memset(buffer, 2, 10 * 10);
+
+ CursorMan.pushCursorPalette(palette, 0, 3);
+ CursorMan.pushCursor(buffer, 10, 10, 45, 45, 1);
+ CursorMan.showMouse(true);
+
+ Common::EventManager *eventMan = g_system->getEventManager();
+ Common::Event event;
+
+ bool quitLoop = false;
+ uint32 lastRedraw = 0;
+ const uint32 waitTime = 1000 / 45;
+
+ while (!quitLoop) {
+ while (eventMan->pollEvent(event)) {
+
+ if (lastRedraw + waitTime < g_system->getMillis()) {
+ g_system->updateScreen();
+ lastRedraw = g_system->getMillis();
+ }
+
+ switch (event.type) {
+ case Common::EVENT_MOUSEMOVE:
+ printf("Mouse Move\n");
+ break;
+ case Common::EVENT_LBUTTONDOWN:
+ case Common::EVENT_RBUTTONDOWN:
+ Testsuite::clearScreen(rect);
+ Testsuite::writeOnScreen("Mouse Clicked", pt);
+ printf("Mouse Clicked\n");
+ g_system->delayMillis(1000);
+ quitLoop = true;
+ CursorMan.popCursorPalette();
+ CursorMan.popCursor();
+ Testsuite::clearScreen(rect);
+ Testsuite::writeOnScreen("TestFinished", pt);
+ g_system->delayMillis(1000);
+ break;
+ default:
+ ;// Ignore any other event
+
+ }
+ }
+ }
+ } else {
+ Testsuite::displayMessage("feature not supported");
+ }
+ Testsuite::clearScreen(rect);
+ return true;
+}
+
+bool GFXtests::mouseMovements() {
+ return true;
+}
+
+bool GFXtests::copyRectToScreen() {
+ Testsuite::displayMessage("Testing Blitting a Bitmap to screen.\n"
+ "You should expect to see a 20x40 yellow horizontal rectangle centred at the screen.");
+
+ GFXTestSuite::setCustomColor(255, 255, 0);
+ byte buffer[20 * 40];
+ memset(buffer, 2, 20 * 40);
+
+ uint x = g_system->getWidth() / 2 - 20;
+ uint y = g_system->getHeight() / 2 - 10;
+
+ g_system->copyRectToScreen(buffer, 40, x, y, 40, 20);
+ g_system->updateScreen();
+ g_system->delayMillis(1000);
+
+ Common::Rect rect(x, y, x+40, y+20);
+ Testsuite::clearScreen(rect);
+
+ return true;
+
+}
+
}
diff --git a/engines/testbed/graphics.h b/engines/testbed/graphics.h
index eb84310db7..7c83c87d62 100644
--- a/engines/testbed/graphics.h
+++ b/engines/testbed/graphics.h
@@ -5,6 +5,16 @@
namespace Testbed {
+namespace GFXtests {
+// will contain function declarations for GFX tests
+bool fullScreenMode();
+bool aspectRatio();
+bool palettizedCursors();
+bool copyRectToScreen();
+bool mouseMovements();
+// add more here
+}
+
class GFXTestSuite : public Testsuite {
public:
/**
diff --git a/engines/testbed/module.mk b/engines/testbed/module.mk
index 0c19aba441..368b37b677 100644
--- a/engines/testbed/module.mk
+++ b/engines/testbed/module.mk
@@ -3,7 +3,6 @@ MODULE := engines/testbed
MODULE_OBJS := \
detection.o \
graphics.o \
- gfxtests.o \
testbed.o
MODULE_DIRS += \
diff --git a/engines/testbed/testbed.cpp b/engines/testbed/testbed.cpp
index 4d178d80bd..fb70acb9df 100644
--- a/engines/testbed/testbed.cpp
+++ b/engines/testbed/testbed.cpp
@@ -55,10 +55,13 @@ Common::Error TestbedEngine::run() {
// TODO: Implement that
bool interactive;
- Common::String prompt("Welcome to the ScummVM testbed! \n \
- It is a framework to test the various ScummVM subsystems namely GFX, Sound, FS, events etc. \n \
- If you are seeing this correctly, it means interactive tests would run on this system :)");
- interactive = Testsuite::handleInteractiveInput(prompt);
+ Common::String prompt("Welcome to the ScummVM testbed!\n"
+ "It is a framework to test the various ScummVM subsystems namely GFX, Sound, FS, events etc.\n"
+ "If you see this, it means interactive tests would run on this system :)");
+
+ // To be set from config file
+ interactive = true;
+ Testsuite::displayMessage(prompt, "proceed?");
if (interactive) {
printf("Running tests in Interactive Mode\n");
diff --git a/engines/testbed/testsuite.h b/engines/testbed/testsuite.h
index ffeb2588c4..8ddd32e371 100644
--- a/engines/testbed/testsuite.h
+++ b/engines/testbed/testsuite.h
@@ -73,8 +73,8 @@ public:
return prompt.runModal() == GUI::kMessageOK ? true : false;
}
- static void displayMessage(const Common::String &textToDisplay) {
- GUI::MessageDialog prompt(textToDisplay);
+ static void displayMessage(const Common::String &textToDisplay, const char *defaultButton = "OK", const char *altButton = 0 ) {
+ GUI::MessageDialog prompt(textToDisplay, defaultButton);
prompt.runModal();
}