Issues (4)

tests/EasyCSV/Tests/WriterTest.php (1 issue)

1
<?php
2
3
declare(strict_types=1);
4
5
namespace EasyCSV\Tests;
6
7
use EasyCSV\Reader;
8
use EasyCSV\Writer;
9
use PHPUnit\Framework\TestCase;
10
11
class WriterTest extends TestCase
12
{
13
    /** @var Writer */
14
    private $writer;
15
16
    public function setUp() : void
17
    {
18
        $this->writer    = new Writer(__DIR__ . '/write.csv');
19
        $this->writerBOM = new Writer(__DIR__ . '/write_bom.csv', 'r+', true);
0 ignored issues
show
Bug Best Practice introduced by
The property writerBOM does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
20
    }
21
22
    public function testWriteRow() : void
23
    {
24
        $this->assertEquals(18, $this->writer->writeRow('test1, test2, test3'));
25
    }
26
27
    public function testWriteRowOnHeaders() : void
28
    {
29
        $writer = new Writer(__DIR__ . '/write.csv', 'r+', false, ['header1', 'header2', 'header3']);
30
        $this->assertEquals(18, $writer->writeRow('test1, test2, test3'));
31
    }
32
33
    public function testWriteBOMRow() : void
34
    {
35
        $this->assertEquals(57, $this->writerBOM->writeRow('колонка 1, колонка 2, колонка 3'));
36
    }
37
38
    public function testWriteFromArray() : void
39
    {
40
        $this->writer->writeRow('column1, column2, column3');
41
        $this->writer->writeFromArray([
42
            '1test1, 1test2ing this out, 1test3',
43
            ['2test1', '2test2 ing this out ok', '2test3'],
44
        ]);
45
        $reader  = new Reader(__DIR__ . '/write.csv');
46
        $results = $reader->getRow();
47
        $this->assertEquals([
48
            'column1' => '1test1',
49
            'column2' => '1test2ing this out',
50
            'column3' => '1test3',
51
        ], $results);
52
    }
53
54
    public function testWriteBOMFromArray() : void
55
    {
56
        $this->writerBOM->writeRow('колонка 1, колонка 2, колонка 3');
57
        $this->writerBOM->writeFromArray([
58
            'значение 1, значение 2, значение 3',
59
            ['значение 4', 'значение 5', 'значение 6'],
60
        ]);
61
        $reader  = new Reader(__DIR__ . '/write_bom.csv');
62
        $results = $reader->getRow();
63
        $this->assertEquals([
64
            'колонка 1' => 'значение 1',
65
            'колонка 2' => 'значение 2',
66
            'колонка 3' => 'значение 3',
67
        ], $results);
68
    }
69
70
    public function testReadWrittenFile() : void
71
    {
72
        $reader   = new Reader(__DIR__ . '/write.csv');
73
        $results  = $reader->getAll();
74
        $expected = [
75
            [
76
                'column1' => '1test1',
77
                'column2' => '1test2ing this out',
78
                'column3' => '1test3',
79
            ],
80
            [
81
                'column1' => '2test1',
82
                'column2' => '2test2 ing this out ok',
83
                'column3' => '2test3',
84
            ],
85
        ];
86
        $this->assertEquals($expected, $results);
87
    }
88
89
    public function testReadWrittenBOMFile() : void
90
    {
91
        $reader   = new Reader(__DIR__ . '/write_bom.csv');
92
        $results  = $reader->getAll();
93
        $expected = [
94
            [
95
                'колонка 1' => 'значение 1',
96
                'колонка 2' => 'значение 2',
97
                'колонка 3' => 'значение 3',
98
            ],
99
            [
100
                'колонка 1' => 'значение 4',
101
                'колонка 2' => 'значение 5',
102
                'колонка 3' => 'значение 6',
103
            ],
104
        ];
105
        $this->assertEquals($expected, $results);
106
    }
107
}
108