Skip to content

Commit

Permalink
tests
Browse files Browse the repository at this point in the history
  • Loading branch information
staabm committed Jul 27, 2023
1 parent 6d2fa9a commit af9d63f
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 15 deletions.
49 changes: 38 additions & 11 deletions lib/TrendApplication.php
Original file line number Diff line number Diff line change
Expand Up @@ -123,16 +123,19 @@ private function createTrendResult(string $baselinePath, array $comparing, Analy
return array($trendResult, $exitCode);
}

$exitCode = $this->compare($trendResult, ResultPrinter::KEY_OVERALL_ERRORS, $reference->overallErrors, $comparing[$baselinePath]->overallErrors, $exitCode);
$exitCode = $this->compare($trendResult, ResultPrinter::KEY_CLASSES_COMPLEXITY, $reference->classesComplexity, $comparing[$baselinePath]->classesComplexity, $exitCode);
$exitCode = $this->compare($trendResult, ResultPrinter::KEY_DEPRECATIONS, $reference->deprecations, $comparing[$baselinePath]->deprecations, $exitCode);
$exitCode = $this->compare($trendResult, ResultPrinter::KEY_INVALID_PHPDOCS, $reference->invalidPhpdocs, $comparing[$baselinePath]->invalidPhpdocs, $exitCode);
$exitCode = $this->compare($trendResult, ResultPrinter::KEY_UNKNOWN_TYPES, $reference->unknownTypes, $comparing[$baselinePath]->unknownTypes, $exitCode);
$exitCode = $this->compare($trendResult, ResultPrinter::KEY_ANONYMOUS_VARIABLES, $reference->anonymousVariables, $comparing[$baselinePath]->anonymousVariables, $exitCode);
$exitCode = $this->compare($trendResult, ResultPrinter::KEY_UNUSED_SYMBOLS, $reference->unusedSymbols, $comparing[$baselinePath]->unusedSymbols, $exitCode);
$exitCode = $this->compare($trendResult, ResultPrinter::KEY_RETURN_TYPE_COVERAGE, $reference->returnTypeCoverage, $comparing[$baselinePath]->returnTypeCoverage, $exitCode);
$exitCode = $this->compare($trendResult, ResultPrinter::KEY_PROPERTY_TYPE_COVERAGE, $reference->propertyTypeCoverage, $comparing[$baselinePath]->propertyTypeCoverage, $exitCode);
$exitCode = $this->compare($trendResult, ResultPrinter::KEY_PARAM_TYPE_COVERAGE, $reference->paramTypeCoverage, $comparing[$baselinePath]->paramTypeCoverage, $exitCode);
// decreased trends are better (reference <-> compare)
$exitCode = $this->compareDecreasing($trendResult, ResultPrinter::KEY_OVERALL_ERRORS, $reference->overallErrors, $comparing[$baselinePath]->overallErrors, $exitCode);
$exitCode = $this->compareDecreasing($trendResult, ResultPrinter::KEY_CLASSES_COMPLEXITY, $reference->classesComplexity, $comparing[$baselinePath]->classesComplexity, $exitCode);
$exitCode = $this->compareDecreasing($trendResult, ResultPrinter::KEY_DEPRECATIONS, $reference->deprecations, $comparing[$baselinePath]->deprecations, $exitCode);
$exitCode = $this->compareDecreasing($trendResult, ResultPrinter::KEY_INVALID_PHPDOCS, $reference->invalidPhpdocs, $comparing[$baselinePath]->invalidPhpdocs, $exitCode);
$exitCode = $this->compareDecreasing($trendResult, ResultPrinter::KEY_UNKNOWN_TYPES, $reference->unknownTypes, $comparing[$baselinePath]->unknownTypes, $exitCode);
$exitCode = $this->compareDecreasing($trendResult, ResultPrinter::KEY_ANONYMOUS_VARIABLES, $reference->anonymousVariables, $comparing[$baselinePath]->anonymousVariables, $exitCode);
$exitCode = $this->compareDecreasing($trendResult, ResultPrinter::KEY_UNUSED_SYMBOLS, $reference->unusedSymbols, $comparing[$baselinePath]->unusedSymbols, $exitCode);

// increased trends are better (compare <-> reference)
$exitCode = $this->compareIncreasing($trendResult, ResultPrinter::KEY_RETURN_TYPE_COVERAGE, $reference->returnTypeCoverage, $comparing[$baselinePath]->returnTypeCoverage, $exitCode);
$exitCode = $this->compareIncreasing($trendResult, ResultPrinter::KEY_PROPERTY_TYPE_COVERAGE, $reference->propertyTypeCoverage, $comparing[$baselinePath]->propertyTypeCoverage, $exitCode);
$exitCode = $this->compareIncreasing($trendResult, ResultPrinter::KEY_PARAM_TYPE_COVERAGE, $reference->paramTypeCoverage, $comparing[$baselinePath]->paramTypeCoverage, $exitCode);

return array($trendResult, $exitCode);
}
Expand All @@ -145,7 +148,7 @@ private function createTrendResult(string $baselinePath, array $comparing, Analy
*
* @return self::EXIT_*
*/
private function compare(TrendResult $trendResult, string $key, $referenceValue, $comparingValue, int $exitCode): int
private function compareDecreasing(TrendResult $trendResult, string $key, $referenceValue, $comparingValue, int $exitCode): int
{
if ($comparingValue > $referenceValue) {
$trendResult->setKey($key, $referenceValue, $comparingValue, 'worse');
Expand All @@ -160,4 +163,28 @@ private function compare(TrendResult $trendResult, string $key, $referenceValue,

return $exitCode;
}

/**
* @param ResultPrinter::KEY_* $key
* @param int $referenceValue
* @param int $comparingValue
* @param self::EXIT_* $exitCode
*
* @return self::EXIT_*
*/
private function compareIncreasing(TrendResult $trendResult, string $key, $referenceValue, $comparingValue, int $exitCode): int
{
if ($comparingValue > $referenceValue) {
$trendResult->setKey($key, $referenceValue, $comparingValue, 'improved');
$exitCode = max($exitCode, self::EXIT_IMPROVED);
} elseif ($comparingValue < $referenceValue) {
$trendResult->setKey($key, $referenceValue, $comparingValue, 'worse');
$exitCode = max($exitCode, self::EXIT_WORSE);
} else {
$trendResult->setKey($key, $referenceValue, $comparingValue, 'good');
$exitCode = max($exitCode, self::EXIT_STEADY);
}

return $exitCode;
}
}
10 changes: 8 additions & 2 deletions tests/TrendApplicationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ function testHigherTrend():void
Unknown-Types: 5 -> 15 => worse
Anonymous-Variables: 2 -> 5 => worse
Unused-Symbols: 1 -> 10 => worse
Native-Return-Type-Coverage: 2 -> 20 => improved
Native-Property-Type-Coverage: 3 -> 30 => improved
Native-Param-Type-Coverage: 4 -> 40 => improved
PHP;

Expand All @@ -80,11 +83,14 @@ function testLowerTrend():void
Unknown-Types: 5 -> 3 => improved
Anonymous-Variables: 2 -> 1 => improved
Unused-Symbols: 1 -> 0 => improved
Native-Return-Type-Coverage: 2 -> 1 => worse
Native-Property-Type-Coverage: 3 -> 2 => worse
Native-Param-Type-Coverage: 4 -> 3 => worse
PHP;

$this->assertSame($expected, $rendered);
$this->assertSame(TrendApplication::EXIT_IMPROVED, $exitCode);
$this->assertSame(TrendApplication::EXIT_WORSE, $exitCode);
}

function testSameTrendFormatJson():void
Expand All @@ -98,7 +104,7 @@ function testSameTrendFormatJson():void
$rendered = str_replace(__DIR__, '', $rendered);

$expected = <<<PHP
[{"headline":"Analyzing Trend for \/fixtures\/all-in.neon","results":{"Overall-Errors":{"reference":18,"comparing":18,"trend":"good"},"Classes-Cognitive-Complexity":{"reference":70,"comparing":70,"trend":"good"},"Deprecations":{"reference":1,"comparing":1,"trend":"good"},"Invalid-Phpdocs":{"reference":3,"comparing":3,"trend":"good"},"Unknown-Types":{"reference":5,"comparing":5,"trend":"good"},"Anonymous-Variables":{"reference":2,"comparing":2,"trend":"good"},"Unused-Symbols":{"reference":1,"comparing":1,"trend":"good"}}}]
[{"headline":"Analyzing Trend for \/fixtures\/all-in.neon","results":{"Overall-Errors":{"reference":18,"comparing":18,"trend":"good"},"Classes-Cognitive-Complexity":{"reference":70,"comparing":70,"trend":"good"},"Deprecations":{"reference":1,"comparing":1,"trend":"good"},"Invalid-Phpdocs":{"reference":3,"comparing":3,"trend":"good"},"Unknown-Types":{"reference":5,"comparing":5,"trend":"good"},"Anonymous-Variables":{"reference":2,"comparing":2,"trend":"good"},"Unused-Symbols":{"reference":1,"comparing":1,"trend":"good"},"Native-Return-Type-Coverage":{"reference":2,"comparing":2,"trend":"good"},"Native-Property-Type-Coverage":{"reference":3,"comparing":3,"trend":"good"},"Native-Param-Type-Coverage":{"reference":4,"comparing":4,"trend":"good"}}}]
PHP;

$this->assertSame($expected, $rendered);
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/compare-higher-result.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"\/fixtures\/all-in.neon":{"Overall-Errors":24,"Classes-Cognitive-Complexity":90,"Deprecations": 10,"Invalid-Phpdocs": 30,"Unknown-Types": 15,"Anonymous-Variables": 5,"Unused-Symbols": 10}}]
[{"\/fixtures\/all-in.neon":{"Overall-Errors":24,"Classes-Cognitive-Complexity":90,"Deprecations": 10,"Invalid-Phpdocs": 30,"Unknown-Types": 15,"Anonymous-Variables": 5,"Unused-Symbols": 10,"Native-Return-Type-Coverage": 20,"Native-Property-Type-Coverage": 30,"Native-Param-Type-Coverage": 40}}]
2 changes: 1 addition & 1 deletion tests/fixtures/compare-lower-result.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"\/fixtures\/all-in.neon":{"Overall-Errors":10,"Classes-Cognitive-Complexity":50,"Invalid-Phpdocs": 1,"Unknown-Types": 3,"Anonymous-Variables": 1}}]
[{"\/fixtures\/all-in.neon":{"Overall-Errors":10,"Classes-Cognitive-Complexity":50,"Invalid-Phpdocs": 1,"Unknown-Types": 3,"Anonymous-Variables": 1,"Unused-Symbols": 0,"Native-Return-Type-Coverage": 1,"Native-Property-Type-Coverage": 2,"Native-Param-Type-Coverage": 3}}]

0 comments on commit af9d63f

Please sign in to comment.