You are here

private function UltimateCronRulesUnitTestCase::runTest in Ultimate Cron 7

Same name and namespace in other branches
  1. 8 tests/rules.test \UltimateCronRulesUnitTestCase::runTest()
  2. 6 tests/rules.test \UltimateCronRulesUnitTestCase::runTest()
  3. 7.2 tests/rules.test \UltimateCronRulesUnitTestCase::runTest()
8 calls to UltimateCronRulesUnitTestCase::runTest()
UltimateCronRulesUnitTestCase::testRules in tests/rules.test
UltimateCronRulesUnitTestCase::testRules1MinuteRange in tests/rules.test
UltimateCronRulesUnitTestCase::testRules2MinuteRange in tests/rules.test
UltimateCronRulesUnitTestCase::testRules2MinuteRangeWithOffset in tests/rules.test
UltimateCronRulesUnitTestCase::testRules5MinuteRange in tests/rules.test

... See full list

File

tests/rules.test, line 30
Tests for Ultimate Cron's cron parser

Class

UltimateCronRulesUnitTestCase
@file

Code

private function runTest($options) {

  // Setup values
  $options['rules'] = is_array($options['rules']) ? $options['rules'] : array(
    $options['rules'],
  );
  $options['catch_up'] = isset($options['catch_up']) ? $options['catch_up'] : 86400 * 365;

  // @todo Adapting Elysia Cron test cases with a catchup of 1 year
  // Generate result message
  require_once dirname(__FILE__) . '/../CronRule.class.php';
  $message = array();
  foreach ($options['rules'] as $rule) {
    $cron = new CronRule($rule);
    $intervals = $cron
      ->getIntervals();
    $parsed_rule = '';
    foreach ($intervals as $key => $value) {
      $parsed_rule .= "{$key}: " . implode(',', $value) . "\n";
    }

    #$parsed_rule = str_replace(" ", "\n", $cron->rebuildRule($cron->getIntervals()));
    $last_scheduled = $cron
      ->getLastRan(strtotime($options['now']));
    $message[] = "<span title=\"{$parsed_rule}\">{$rule}</span> @ " . date('Y-m-d H:i:s', $last_scheduled);
  }
  $message[] = 'now      @ ' . $options['now'];
  $message[] = 'last-run @ ' . $options['last_run'];
  $message[] = 'catch-up @ ' . $options['catch_up'];
  $message[] = ($options['result'] ? '' : 'not ') . 'expected to run';

  // Do the actual test
  $result = ultimate_cron_should_run($options['rules'], strtotime($options['last_run']), strtotime($options['now']), $options['catch_up']);
  return array(
    $options['result'] == $result,
    implode('<br/>', $message),
  );
}