aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThierry Crozat2016-10-12 22:55:29 +0100
committerThierry Crozat2016-10-13 01:45:01 +0100
commit48ec053a1346564bb2f8a03d9b20ee09fb777ecf (patch)
tree255f0d5b1a5105edfa63558314d07bf649d7beea
parent3a69898729b5d08aabcb53e6382284d1df818c9b (diff)
downloadscummvm-rg350-48ec053a1346564bb2f8a03d9b20ee09fb777ecf.tar.gz
scummvm-rg350-48ec053a1346564bb2f8a03d9b20ee09fb777ecf.tar.bz2
scummvm-rg350-48ec053a1346564bb2f8a03d9b20ee09fb777ecf.zip
TESTBED: Add test for kFeatureFilteringMode
-rw-r--r--engines/testbed/graphics.cpp101
-rw-r--r--engines/testbed/graphics.h1
2 files changed, 102 insertions, 0 deletions
diff --git a/engines/testbed/graphics.cpp b/engines/testbed/graphics.cpp
index e774008560..1b5af76ee7 100644
--- a/engines/testbed/graphics.cpp
+++ b/engines/testbed/graphics.cpp
@@ -56,6 +56,7 @@ GFXTestSuite::GFXTestSuite() {
// GFX Transcations
addTest("FullScreenMode", &GFXtests::fullScreenMode);
+ addTest("FilteringMode", &GFXtests::filteringMode);
addTest("AspectRatio", &GFXtests::aspectRatio);
addTest("IconifyingWindow", &GFXtests::iconifyWindow);
@@ -502,6 +503,106 @@ TestExitStatus GFXtests::fullScreenMode() {
}
/**
+ * Tests the filtering mode by: toggling between filtered and non-filtered modes.
+ */
+TestExitStatus GFXtests::filteringMode() {
+ Testsuite::clearScreen();
+ Common::String info = "Filtering test. Here you should expect a toggle between filtered and non-filtered states depending "
+ "upon your initial state.";
+
+ Common::Point pt(0, 100);
+ Testsuite::writeOnScreen("Testing filtering mode", pt);
+
+ if (Testsuite::handleInteractiveInput(info, "OK", "Skip", kOptionRight)) {
+ Testsuite::logPrintf("Info! Skipping test : FilteringMode\n");
+ return kTestSkipped;
+ }
+
+ bool isFeaturePresent;
+ bool isFeatureEnabled;
+ TestExitStatus passed = kTestPassed;
+ Common::String prompt;
+ OptionSelected shouldSelect;
+
+ isFeaturePresent = g_system->hasFeature(OSystem::kFeatureFilteringMode);
+
+ if (isFeaturePresent) {
+ // Toggle
+ isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureFilteringMode);
+ shouldSelect = isFeatureEnabled ? kOptionLeft : kOptionRight;
+
+ // Do test in fullscreen if possible as filtering may have no effect in windowed mode
+ bool fullScreenToggled = false;
+ if (g_system->hasFeature(OSystem::kFeatureFullscreenMode) && !g_system->getFeatureState(OSystem::kFeatureFullscreenMode)) {
+ fullScreenToggled = true;
+ g_system->beginGFXTransaction();
+ g_system->setFeatureState(OSystem::kFeatureFullscreenMode, true);
+ g_system->endGFXTransaction();
+ }
+
+ g_system->delayMillis(1000);
+
+ if (isFeatureEnabled) {
+ Testsuite::logDetailedPrintf("Current Mode is Filtered\n");
+ } else {
+ Testsuite::logDetailedPrintf("Current Mode is Unfiltered\n");
+ }
+
+ prompt = " Which mode do you see currently ? ";
+
+ if (!Testsuite::handleInteractiveInput(prompt, "Filtered", "Unfiltered", shouldSelect)) {
+ // User selected incorrect current state
+ passed = kTestFailed;
+ Testsuite::logDetailedPrintf("g_system->getFeatureState() failed\n");
+ }
+
+ g_system->beginGFXTransaction();
+ g_system->setFeatureState(OSystem::kFeatureFilteringMode, !isFeatureEnabled);
+ g_system->endGFXTransaction();
+
+ // Current state should be now !isFeatureEnabled
+ isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureFilteringMode);
+ shouldSelect = isFeatureEnabled ? kOptionLeft : kOptionRight;
+
+ g_system->delayMillis(1000);
+
+ prompt = " Which mode do you see now ? ";
+
+ if (!Testsuite::handleInteractiveInput(prompt, "Filtered", "Unfiltered", shouldSelect)) {
+ // User selected incorrect mode
+ passed = kTestFailed;
+ Testsuite::logDetailedPrintf("g_system->setFeatureState() failed\n");
+ }
+
+ g_system->beginGFXTransaction();
+ g_system->setFeatureState(OSystem::kFeatureFilteringMode, !isFeatureEnabled);
+ g_system->endGFXTransaction();
+
+ g_system->delayMillis(1000);
+
+ prompt = "This should be your initial state. Is it?";
+
+ if (!Testsuite::handleInteractiveInput(prompt, "Yes, it is", "Nopes", kOptionLeft)) {
+ // User selected incorrect mode
+ Testsuite::logDetailedPrintf("switching back to initial state failed\n");
+ passed = kTestFailed;
+ }
+
+ // Restore fullscreen state
+ if (fullScreenToggled) {
+ g_system->beginGFXTransaction();
+ g_system->setFeatureState(OSystem::kFeatureFullscreenMode, false);
+ g_system->endGFXTransaction();
+ }
+
+ } else {
+ Testsuite::displayMessage("feature not supported");
+ }
+
+ return passed;
+}
+
+/**
* Tests the aspect ratio correction by: drawing an ellipse, when corrected the ellipse should render to a circle
*/
TestExitStatus GFXtests::aspectRatio() {
diff --git a/engines/testbed/graphics.h b/engines/testbed/graphics.h
index ebb7b40be8..9cbf6b23ae 100644
--- a/engines/testbed/graphics.h
+++ b/engines/testbed/graphics.h
@@ -41,6 +41,7 @@ Common::Rect drawCursor(bool cursorPaletteDisabled = false, int cursorTargetScal
// will contain function declarations for GFX tests
TestExitStatus cursorTrails();
TestExitStatus fullScreenMode();
+TestExitStatus filteringMode();
TestExitStatus aspectRatio();
TestExitStatus palettizedCursors();
TestExitStatus mouseMovements();