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']}");
                 }
             }
         }
     }
 }