<?php class DtaResult { public $packageName; public $className; public $name; /** * State is defined like below * * 0 UNKNOWN * 1 SUCCESS * 2 FAILURE * 3 COMPILATIONERROR */ public $state; public $failureType; public $failureReason; public $stacktrace; public $columnNumber; public $lineNumber; public $position; /** * @return name of state like defined */ public static function getStateName(int $state): string { if ($state == 1) { return "success"; } else if ($state == 2) { return "failed"; } else if ($state == 3) { return "compilation error"; } else { return "unknown"; } } } class DtaResultSummary { public $timestamp; public $successfulTestCompetencyProfile; public $overallTestCompetencyProfile; public $globalStacktrace; public $results; /** * @param string $jsonString jsonString containing DtaResultSummary * @return DtaResultSummary */ public static function decodeJson($jsonString): DtaResultSummary { $response = json_decode($jsonString); $summary = new DtaResultSummary(); $summary->timestamp = $response->timestamp; $summary->globalStacktrace = $response->globalStacktrace; $summary->successfulTestCompetencyProfile = self::decodeJsonCompetencyArray($response->successfulTestCompetencyProfile); $summary->overallTestCompetencyProfile = self::decodeJsonCompetencyArray($response->overallTestCompetencyProfile); $summary->results = self::decodeJsonResultArray($response->results); return $summary; } private static function decodeJsonCompetencyArray($jsonArray): array { $ret = array(); foreach ($jsonArray as $entry) { $ret[] = $entry; } return $ret; } /** * @param array $jsonArray decoded json array of results array * @return array of DtaResult */ private static function decodeJsonResultArray($jsonArray): array { $ret = array(); foreach ($jsonArray as $entry) { $value = new DtaResult(); $value->packageName = $entry->packageName; $value->className = $entry->className; $value->name = $entry->name; $value->state = $entry->state; $value->failureType = $entry->failureType; $value->failureReason = $entry->failureReason; $value->stacktrace = $entry->stacktrace; $value->columnNumber = $entry->columnNumber; $value->lineNumber = $entry->lineNumber; $value->position = $entry->position; $ret[] = $value; } return $ret; } /** * @param int $state state ordinal number * @return int count of occurences provided state has */ public function stateOccurenceCount(int $state): int { $num = 0; foreach($this->results as $r) { if ($r->state == $state) { $num++; } } return $num; } public function compilationErrorCount(): int { return $this->stateOccurenceCount(3); } public function failedCount(): int { return $this->stateOccurenceCount(2); } public function resultCount(): int { return count($this->results); } public function successfulCount(): int { return $this->stateOccurenceCount(1); } public function unknownCount(): int { return $this->stateOccurenceCount(0); } }