Completed
Push — master ( 7a3cb1...e42624 )
by Harry
9s
created

CsvFormatTest::testSettingProperties()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 38
Code Lines 34

Duplication

Lines 0
Ratio 0 %

Importance

Changes 4
Bugs 1 Features 0
Metric Value
c 4
b 1
f 0
dl 0
loc 38
rs 8.8571
cc 1
eloc 34
nc 1
nop 0
1
<?php
2
/**
3
 * This file is part of graze/data-file
4
 *
5
 * Copyright (c) 2016 Nature Delivered Ltd. <https://www.graze.com>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 *
10
 * @license https://github.com/graze/data-file/blob/master/LICENSE.md
11
 * @link    https://github.com/graze/data-file
12
 */
13
14
namespace Graze\DataFile\Test\Unit\Format;
15
16
use Graze\DataFile\Format\CsvFormat;
17
use Graze\DataFile\Test\TestCase;
18
19
class CsvFormatTest extends TestCase
20
{
21
    public function testImplementsInterface()
22
    {
23
        $definition = new CsvFormat();
24
25
        static::assertInstanceOf('Graze\DataFile\Format\CsvFormatInterface', $definition);
26
27
        static::assertEquals('csv', $definition->getType());
28
    }
29
30
    public function testDefaultsAreAssignedWhenNoOptionsSupplied()
31
    {
32
        $definition = new CsvFormat();
33
34
        static::assertEquals(',', $definition->getDelimiter(), "Default Delimiter should be ','");
35
        static::assertEquals('"', $definition->getQuoteCharacter(), "Default quote character should be \"");
36
        static::assertTrue($definition->hasQuotes(), "Quoting should be on by default");
37
        static::assertEquals('\\N', $definition->getNullOutput(), "Null character should be '\\N'");
38
        static::assertTrue($definition->hasHeaders(), "Headers should be on by default");
39
        static::assertEquals(1, $definition->getHeaders(), "Headers should be 1 by default");
40
        static::assertEquals("\n", $definition->getLineTerminator(), "Line terminator should be '\\n'");
41
        static::assertEquals('\\', $definition->getEscapeCharacter(), "Default escape character should be '\\'");
42
        static::assertTrue($definition->hasEscapeCharacter());
43
        static::assertEquals(-1, $definition->getLimit(), "Default limit should be -1");
44
        static::assertEquals(false, $definition->isDoubleQuote(), "Double quote should be off by default");
45
    }
46
47
    public function testAssigningOptionsModifiesTheDefinition()
48
    {
49
        $definition = new CsvFormat([
50
            'delimiter'      => "\t",
51
            'quoteCharacter' => '',
52
            'nullOutput'     => '',
53
            'headers'        => 0,
54
            'lineTerminator' => "----",
55
            'escape'         => '',
56
            'limit'          => 2,
57
            'doubleQuote'    => true,
58
        ]);
59
60
        static::assertEquals("\t", $definition->getDelimiter(), "Delimiter should be set to '\\t' (tab)");
61
        static::assertEquals('', $definition->getQuoteCharacter(), "Quote character should be blank");
62
        static::assertFalse($definition->hasQuotes(), "Quoting should be off");
63
        static::assertEquals('', $definition->getNullOutput(), "Null character should be '' (blank)'");
64
        static::assertFalse($definition->hasHeaders(), "Headers should be off");
65
        static::assertEquals("----", $definition->getLineTerminator(), "Line terminator should be '----'");
66
        static::assertEquals('', $definition->getEscapeCharacter(), "Escape Character should be '' (blank)");
67
        static::assertFalse($definition->hasEscapeCharacter(), "Format should not be marked as not having escape");
68
        static::assertEquals(2, $definition->getLimit(), 'Limit should be 2');
69
        static::assertEquals(true, $definition->isDoubleQuote(), 'double quote should be on');
70
    }
71
72
    public function testSettingProperties()
73
    {
74
        $definition = new CsvFormat();
75
76
        static::assertEquals(',', $definition->getDelimiter(), "Default Delimiter should be ','");
77
        static::assertEquals('"', $definition->getQuoteCharacter(), "Default quote character should be \"");
78
        static::assertTrue($definition->hasQuotes(), "Quoting should be on by default");
79
        static::assertEquals('\\N', $definition->getNullOutput(), "Null character should be '\\N'");
80
        static::assertTrue($definition->hasHeaders(), "Headers should be on by default");
81
        static::assertEquals("\n", $definition->getLineTerminator(), "Line terminator should be '\\n'");
82
        static::assertEquals('\\', $definition->getEscapeCharacter(), "Default escape character should be '\\'");
83
        static::assertTrue($definition->hasEscapeCharacter());
84
        static::assertEquals(-1, $definition->getLimit(), "Default limit should be -1");
85
        static::assertEquals(false, $definition->isDoubleQuote(), "Double quote should be off by default");
86
87
        static::assertSame($definition, $definition->setDelimiter("\t"), "SetDelimiter should be fluent");
88
        static::assertEquals("\t", $definition->getDelimiter(), "Delimiter should be set to '\\t' (tab)");
89
        static::assertSame($definition, $definition->setQuoteCharacter(''), "setQuoteCharacter should be fluent");
90
        static::assertEquals('', $definition->getQuoteCharacter(), "Quote character should be blank");
91
        static::assertFalse($definition->hasQuotes(), "Quoting should be off");
92
        static::assertSame($definition, $definition->setNullOutput(''), "setNullOutput should be fluent");
93
        static::assertEquals('', $definition->getNullOutput(), "Null character should be '' (blank)'");
94
        static::assertSame($definition, $definition->setHeaders(0), "setHeaders should be fluent");
95
        static::assertFalse($definition->hasHeaders(), "Headers should be off");
96
        static::assertEquals(0, $definition->getHeaders(), "Headers should be set to 0");
97
        static::assertSame($definition, $definition->setLineTerminator('----'), "setLineTerminator should be fluent");
98
        static::assertEquals("----", $definition->getLineTerminator(), "Line terminator should be '----'");
99
        static::assertSame($definition, $definition->setEscapeCharacter('"'), "Set escape character should be fluent");
100
        static::assertEquals('"', $definition->getEscapeCharacter(), "Escape character should be modified");
101
        static::assertTrue($definition->hasEscapeCharacter(), "Format should have an escape character");
102
        static::assertSame($definition, $definition->setEscapeCharacter(''), "Set escape character should be fluent");
103
        static::assertEquals('', $definition->getEscapeCharacter(), "Escape character should be modified");
104
        static::assertFalse($definition->hasEscapeCharacter(), "Format should not have an escape character");
105
        static::assertSame($definition, $definition->setLimit(3), "setLimit should be fluent");
106
        static::assertEquals(3, $definition->getLimit(), "Limit should be modified");
107
        static::assertSame($definition, $definition->setDoubleQuote(true), 'setDoubleQuote should be fluent');
108
        static::assertTrue($definition->isDoubleQuote(), 'isDoubleQuote should be true');
109
    }
110
}
111