Skip to content

Commit af2f5d6

Browse files
committed
update fileReader
1 parent ef8e14c commit af2f5d6

File tree

2 files changed

+52
-8
lines changed

2 files changed

+52
-8
lines changed

src/FileReader.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,17 @@ class FileReader implements FileReaderInterface
66
{
77
private const MAX_FILE_SIZE = 4096;
88

9-
public function __construct()
10-
{
11-
}
12-
13-
public function readFile(string $filename): array | null
9+
public function readFile(string $filename, bool $isArray = null): array | null
1410
{
1511
if (file_exists($filename)) {
1612
$handle = fopen($filename, "r");
17-
$result = json_decode(fread($handle, self::MAX_FILE_SIZE));
13+
$result = json_decode(fread($handle, self::MAX_FILE_SIZE), $isArray);
1814
fclose($handle);
1915
$type = gettype($result);
2016
if ($type === 'object') {
2117
return (get_object_vars($result));
2218
} elseif ($type === 'array') {
2319
return $result;
24-
} else {
25-
return null;
2620
}
2721
} else {
2822
return null;

tests/FileReaderTest.php

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
namespace Differ;
4+
5+
use PHPUnit\Framework\TestCase;
6+
use PHPUnit\Framework\Attributes\CoversClass;
7+
use PHPUnit\Framework\Attributes\CoversMethod;
8+
use Differ\FileReader;
9+
10+
#[CoversClass(FileReader::class)]
11+
#[CoversMethod(FileReader::class, 'readFile')]
12+
class FileReaderTest extends TestCase
13+
{
14+
public function testReadFileAsObject()
15+
{
16+
$fileReader = new FileReader();
17+
18+
$fileContent = $fileReader->readFile(
19+
__DIR__ . "/../fixtures/fileForArray.json");
20+
21+
$this->assertJsonStringEqualsJsonFile(
22+
__DIR__ . "/../fixtures/fileForArray.json",
23+
json_encode($fileContent));
24+
}
25+
26+
public function testReadFileAsArray()
27+
{
28+
$fileReader = new FileReader();
29+
30+
$fileContent = $fileReader->readFile(
31+
__DIR__ . "/../fixtures/fileForArray.json",
32+
true
33+
);
34+
35+
$this->assertJsonStringEqualsJsonFile(
36+
__DIR__ . "/../fixtures/fileForArray.json",
37+
json_encode($fileContent));
38+
}
39+
40+
public function testReadFileNotJson()
41+
{
42+
$fileReader = new FileReader();
43+
44+
$fileContent = $fileReader->readFile(
45+
__DIR__ . "/../fixtures/fileNotJson.json"
46+
);
47+
48+
$this->assertNull($fileContent);
49+
}
50+
}

0 commit comments

Comments
 (0)