diff options
author | Thierry Crozat | 2016-10-12 22:55:29 +0100 |
---|---|---|
committer | Thierry Crozat | 2016-10-13 01:45:01 +0100 |
commit | 48ec053a1346564bb2f8a03d9b20ee09fb777ecf (patch) | |
tree | 255f0d5b1a5105edfa63558314d07bf649d7beea /engines | |
parent | 3a69898729b5d08aabcb53e6382284d1df818c9b (diff) | |
download | scummvm-rg350-48ec053a1346564bb2f8a03d9b20ee09fb777ecf.tar.gz scummvm-rg350-48ec053a1346564bb2f8a03d9b20ee09fb777ecf.tar.bz2 scummvm-rg350-48ec053a1346564bb2f8a03d9b20ee09fb777ecf.zip |
TESTBED: Add test for kFeatureFilteringMode
Diffstat (limited to 'engines')
-rw-r--r-- | engines/testbed/graphics.cpp | 101 | ||||
-rw-r--r-- | engines/testbed/graphics.h | 1 |
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(); |