Ejemplo n.º 1
0
 /**
  * @test
  * @group BasicDecimal
  * @group findsChangesAggAtRecurrence
  * @group changesAggAtRecurrence
  * @group decimal
  * @group createScalar
  * @group createSample
  */
 public function findsChangesAggAtRecurrence()
 {
     $allSampleProviders = self::provideFullSamplesData();
     $this->assertFalse(empty($allSampleProviders));
     $expProvider = self::provideExpectedValues('provideChangesAggAtRecurrence');
     $this->assertFalse(empty($expProvider));
     foreach ($expProvider as $sampleProviderName => $expValues) {
         $sampleProvider = $allSampleProviders[$sampleProviderName];
         $this->assertFalse(empty($sampleProvider));
         $scalarFields = array('name' => self::randomString(), 'type' => 'decimal');
         $scalarId = $this->_core->createScalar($scalarFields);
         foreach ($sampleProvider['samples'] as $sample) {
             list($end, $value) = $sample;
             $this->_partition->createSample($scalarId, $value, $end);
         }
         foreach (Hashmark_Analyst_BasicDecimal::getRecurFunctions() as $recurFunc) {
             foreach (self::$_aggFunctions as $aggFunc) {
                 $errorMsg = "data={$sampleProviderName} val=ALL recur={$recurFunc} agg={$aggFunc}";
                 $actValues = $this->_analyst->changesAggAtRecurrence($scalarId, $sampleProvider['rangeStart'], $sampleProvider['rangeEnd'], $recurFunc, $aggFunc, false);
                 foreach ($actValues as $actual) {
                     $this->assertDecimalEquals($expValues['ALL'][$recurFunc][$actual['x']][$aggFunc], $actual['y'], $errorMsg . " x={$actual['x']}");
                 }
                 $errorMsg = "data={$sampleProviderName} val=DIS recur={$recurFunc} agg={$aggFunc}";
                 $actValues = $this->_analyst->changesAggAtRecurrence($scalarId, $sampleProvider['rangeStart'], $sampleProvider['rangeEnd'], $recurFunc, $aggFunc, true);
                 foreach ($actValues as $actual) {
                     $this->assertDecimalEquals($expValues['DIS'][$recurFunc][$actual['x']][$aggFunc], $actual['y'], $errorMsg . " x={$actual['x']}");
                 }
             }
         }
     }
 }
 * @filesource
 * @copyright   Copyright (c) 2008-2011 David Smith
 * @license     http://www.opensource.org/licenses/mit-license.php MIT License
 * @package     Hashmark-Test
 * @subpackage  Hashmark_Analyst_BasicDecimal
 * @version     $Id$
*/
$expValues = array();
$sampleProviders = Hashmark_TestCase_Analyst_BasicDecimal::provideFullSamplesData();
$aggFunctions = Hashmark_TestCase_Analyst_BasicDecimal::getAggFunctions();
foreach ($sampleProviders as $sampleProviderName => $sampleProviderData) {
    // Skip providers like 'provideValuesSamples'.
    if (empty($sampleProviderData['interval'])) {
        continue;
    }
    $intervalFormat = Hashmark_Analyst_BasicDecimal::getIntervalPhpFormat($sampleProviderData['interval']);
    // Collect and sort in-range values.
    //  -   Value sets indexed by interval-based groups, e.g. '20080612' day group.
    $groupValues = array();
    foreach ($sampleProviderData['samples'] as $sample) {
        list($end, $value, , $isInRange) = $sample;
        if ($isInRange) {
            $groupName = gmdate($intervalFormat, strtotime($end . ' UTC'));
            if (!isset($groupValues[$groupName])) {
                $groupValues[$groupName] = array();
            }
            $groupValues[$groupName][$end] = $value;
        }
    }
    foreach ($groupValues as $groupName => $values) {
        ksort($groupValues[$groupName]);
<?php

// vim: fenc=utf-8:ft=php:ai:si:ts=4:sw=4:et:
/**
 * Use bcmath to calculate expected values for Test/Analyst/BasicDecimal/Data/provider.php.
 *
 * @filesource
 * @copyright   Copyright (c) 2008-2011 David Smith
 * @license     http://www.opensource.org/licenses/mit-license.php MIT License
 * @package     Hashmark-Test
 * @subpackage  Hashmark_Analyst_BasicDecimal
 * @version     $Id$
*/
$recurFormats = Hashmark_Analyst_BasicDecimal::getRecurFormats();
$recurFunctions = array_keys($recurFormats);
$sampleProviders = Hashmark_TestCase_Analyst_BasicDecimal::provideFullSamplesData();
$expValues = array();
foreach ($sampleProviders as $sampleProviderName => $sampleProviderData) {
    $groupValues = array_fill_keys($recurFunctions, array());
    foreach ($sampleProviderData['samples'] as $sample) {
        list($end, $value, , $isInRange) = $sample;
        if (!$isInRange) {
            continue;
        }
        // Group values by their recurrence, ex. DAYOFMONTH values.
        foreach ($recurFormats as $recurFunc => $format) {
            $groupName = gmdate($format, strtotime($end . ' UTC'));
            // Adjust for PHP/MySQL diff.
            if ('z' == $format) {
                $groupName += 1;
            }