/**
  * Run unit tests selected via checkbox
  * @return TestGui
  */
 public function runSelectedTests()
 {
     self::getAvailableTests();
     // just to include all files
     if (array_key_exists('runtest', $_REQUEST)) {
         // logging
         require_once dirname(__FILE__) . DS . 'SimpleHtmlReporter.php';
         $out = "\n" . str_repeat('=', 50) . "\nStarting tests, executed by user [" . self::getUserName() . "]. Deleted [" . TestUtils::flushTempDir() . "] files from temp dir [" . DIR_TEMP . "]\n" . str_repeat('=', 50);
         TestUtils::log($out, self::LOGNAME, TestUtils::LEVEL_INFO);
         $selected_tests = array();
         foreach ($_REQUEST['runtest'] as $test_case => $methods) {
             if (is_array($methods)) {
                 $selected_tests[$test_case] = array_keys($methods);
             } else {
                 $this->errors[] = '<div class="alert alert-error">Caution - TestCase "' . $test_case . '" has no selected unit test.</div>';
             }
         }
         $reporter = new SimpleHtmlReporter();
         $reporter->setTests($selected_tests);
         $test_suite = new TestSuite();
         foreach ($selected_tests as $class => $methods) {
             /**
              * @var WebTestCase
              */
             $test_case = new $class();
             // uprav nastavenia podla typu prostredia
             $modifier_class = $class . 'Set';
             if (class_exists($modifier_class, false)) {
                 // pozri priklad v testing/database.php
                 $test_case = call_user_func(array($modifier_class, 'set'), $test_case);
             }
             $test_suite->add($test_case);
         }
         $test_suite->run($reporter);
         self::$output_result_tests = $reporter->getOutput();
         // logging
         foreach ($reporter->getStatus() as $name => $test_case) {
             $log = '[' . $test_case['passed'] . '] passed, [' . $test_case['failed'] . '] failed for [' . $name . ']. Executed methods: ' . implode(', ', $test_case['methods']);
             if (sizeof($test_case['messages']) > 0) {
                 $log .= "\n" . implode("\n", $test_case['messages']);
             }
             TestUtils::log(strip_tags($log), self::LOGNAME, TestUtils::LEVEL_INFO);
         }
         $timeMemory = " -- Execution time [" . TestUtils::execTime() . '], memory usage [' . TestUtils::getMemoryUsage() . ']';
         TestUtils::log($timeMemory, self::LOGNAME, TestUtils::LEVEL_INFO);
     }
     return self::$instance;
 }