diff --git a/src/Chunk.php b/src/Chunk.php
index 317ed867..49c77575 100644
--- a/src/Chunk.php
+++ b/src/Chunk.php
@@ -33,7 +33,7 @@ final class Chunk
private $endRange;
/**
- * @var array
+ * @var Line[]
*/
private $lines;
@@ -66,13 +66,25 @@ public function getEndRange()
return $this->endRange;
}
+ /**
+ * @return Line[]
+ */
public function getLines()
{
return $this->lines;
}
+ /**
+ * @param Line[] $lines
+ */
public function setLines(array $lines)
{
+ foreach ($lines as $line) {
+ if (!$line instanceof Line) {
+ throw new InvalidArgumentException;
+ }
+ }
+
$this->lines = $lines;
}
}
diff --git a/tests/ChunkTest.php b/tests/ChunkTest.php
index 29fec466..cf038cd0 100644
--- a/tests/ChunkTest.php
+++ b/tests/ChunkTest.php
@@ -14,6 +14,8 @@
/**
* @covers PhpCsFixer\Diff\Chunk
+ *
+ * @uses PhpCsFixer\Diff\Line
*/
final class ChunkTest extends TestCase
{
@@ -27,6 +29,11 @@ protected function setUp()
$this->chunk = new Chunk;
}
+ public function testHasInitiallyNoLines()
+ {
+ $this->assertSame([], $this->chunk->getLines());
+ }
+
public function testCanBeCreatedWithoutArguments()
{
$this->assertInstanceOf(Chunk::class, $this->chunk);
@@ -59,10 +66,10 @@ public function testLinesCanBeRetrieved()
public function testLinesCanBeSet()
{
- $this->assertSame([], $this->chunk->getLines());
+ $lines = [new Line(Line::ADDED, 'added'), new Line(Line::REMOVED, 'removed')];
+
+ $this->chunk->setLines($lines);
- $testValue = ['line0', 'line1'];
- $this->chunk->setLines($testValue);
- $this->assertSame($testValue, $this->chunk->getLines());
+ $this->assertSame($lines, $this->chunk->getLines());
}
}
diff --git a/tests/LongestCommonSubsequenceTest.php b/tests/LongestCommonSubsequenceTest.php
index 47856642..c49a58f1 100644
--- a/tests/LongestCommonSubsequenceTest.php
+++ b/tests/LongestCommonSubsequenceTest.php
@@ -35,7 +35,7 @@ abstract class LongestCommonSubsequenceTest extends TestCase
protected function setUp()
{
$this->memoryLimit = \ini_get('memory_limit');
- \ini_set('memory_limit', '256M');
+ \ini_set('memory_limit', '-1');
$this->implementation = $this->createImplementation();
}
diff --git a/tests/Output/Integration/StrictUnifiedDiffOutputBuilderIntegrationTest.php b/tests/Output/Integration/StrictUnifiedDiffOutputBuilderIntegrationTest.php
index 1c28f941..f39d8fea 100644
--- a/tests/Output/Integration/StrictUnifiedDiffOutputBuilderIntegrationTest.php
+++ b/tests/Output/Integration/StrictUnifiedDiffOutputBuilderIntegrationTest.php
@@ -21,6 +21,7 @@
*
* @uses PhpCsFixer\Diff\Differ
* @uses PhpCsFixer\Diff\TimeEfficientLongestCommonSubsequenceCalculator
+ * @uses PhpCsFixer\Diff\MemoryEfficientLongestCommonSubsequenceCalculator
*
* @requires OS Linux
*/
diff --git a/tests/Output/StrictUnifiedDiffOutputBuilderTest.php b/tests/Output/StrictUnifiedDiffOutputBuilderTest.php
index 0123d9a4..2c770c58 100644
--- a/tests/Output/StrictUnifiedDiffOutputBuilderTest.php
+++ b/tests/Output/StrictUnifiedDiffOutputBuilderTest.php
@@ -19,6 +19,8 @@
* @covers PhpCsFixer\Diff\Output\StrictUnifiedDiffOutputBuilder
*
* @uses PhpCsFixer\Diff\Differ
+ * @uses PhpCsFixer\Diff\TimeEfficientLongestCommonSubsequenceCalculator
+ * @uses PhpCsFixer\Diff\ConfigurationException
*/
final class StrictUnifiedDiffOutputBuilderTest extends TestCase
{
diff --git a/tests/ParserTest.php b/tests/ParserTest.php
index 207e23d3..1bbe5968 100644
--- a/tests/ParserTest.php
+++ b/tests/ParserTest.php
@@ -38,12 +38,10 @@ public function testParse()
$diffs = $this->parser->parse($content);
- $this->assertInternalType('array', $diffs);
$this->assertContainsOnlyInstancesOf(Diff::class, $diffs);
$this->assertCount(1, $diffs);
$chunks = $diffs[0]->getChunks();
- $this->assertInternalType('array', $chunks);
$this->assertContainsOnlyInstancesOf(Chunk::class, $chunks);
$this->assertCount(1, $chunks);
@@ -75,7 +73,7 @@ public function testParseWithMultipleChunks()
public function testParseWithRemovedLines()
{
- $content = <<parser->parse($content);
- $this->assertInternalType('array', $diffs);
$this->assertContainsOnlyInstancesOf(Diff::class, $diffs);
$this->assertCount(1, $diffs);
$chunks = $diffs[0]->getChunks();
- $this->assertInternalType('array', $chunks);
$this->assertContainsOnlyInstancesOf(Chunk::class, $chunks);
$this->assertCount(1, $chunks);
@@ -102,7 +98,6 @@ public function testParseWithRemovedLines()
$this->assertSame(8, $chunk->getEndRange());
$lines = $chunk->getLines();
- $this->assertInternalType('array', $lines);
$this->assertContainsOnlyInstancesOf(Line::class, $lines);
$this->assertCount(2, $lines);
@@ -118,7 +113,7 @@ public function testParseWithRemovedLines()
public function testParseDiffForMulitpleFiles()
{
- $content = <<parser->parse($content);
$this->assertCount(2, $diffs);
diff --git a/tests/Utils/UnifiedDiffAssertTrait.php b/tests/Utils/UnifiedDiffAssertTrait.php
index 56093e88..8598fe96 100644
--- a/tests/Utils/UnifiedDiffAssertTrait.php
+++ b/tests/Utils/UnifiedDiffAssertTrait.php
@@ -27,6 +27,7 @@ public function assertValidUnifiedDiffFormat($diff)
// test diff ends with a line break
$last = \substr($diff, -1);
+
if ("\n" !== $last && "\r" !== $last) {
throw new \UnexpectedValueException(\sprintf('Expected diff to end with a line break, got "%s".', $last));
}
@@ -130,6 +131,7 @@ public function assertValidUnifiedDiffFormat($diff)
}
$previousType = $this->unifiedDiffAssertLinePrefix($lines[$lineNumber - 2], \sprintf('Preceding line of "\\ No newline at end of file" of unexpected format. Line %d.', $lineNumber));
+
if (isset($endOfLineTypes[$previousType])) {
throw new \UnexpectedValueException(\sprintf('Unexpected "\\ No newline at end of file", "%s" was already closed. Line %d.', $type, $lineNumber));
}
@@ -190,6 +192,7 @@ private function unifiedDiffAssertLinePrefix($line, $message)
private function unifiedDiffAssertStrLength($line, $min, $message)
{
$length = \strlen($line);
+
if ($length < $min) {
throw new \UnexpectedValueException(\sprintf('Expected string length of minimal %d, got %d. %s', $min, $length, $message));
}