mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-05 17:57:14 +00:00
some minor changes in the testsuite structure, reduced no. of files per testsuite, fixed some formatting
svn-id: r49571
This commit is contained in:
parent
52cf6e4caa
commit
1032b69f51
@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -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
|
@ -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;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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:
|
||||
/**
|
||||
|
@ -3,7 +3,6 @@ MODULE := engines/testbed
|
||||
MODULE_OBJS := \
|
||||
detection.o \
|
||||
graphics.o \
|
||||
gfxtests.o \
|
||||
testbed.o
|
||||
|
||||
MODULE_DIRS += \
|
||||
|
@ -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");
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user