18 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
32 'input' =>
'Column A, Column B, Column C' . LF .
'Value, Value2, Value 3',
33 'fieldDelimiter' =>
',',
34 'fieldEnclosure' =>
'"',
35 'maximumColumns' => 0,
37 [
'Column A',
' Column B',
' Column C'],
38 [
'Value',
' Value2',
' Value 3']
42 'Valid data with enclosed "' => [
43 'input' =>
'"Column A", "Column B", "Column C"' . LF .
'"Value", "Value2", "Value 3"',
44 'fieldDelimiter' =>
',',
45 'fieldEnclosure' =>
'"',
46 'maximumColumns' => 0,
48 [
'Column A',
'Column B',
'Column C'],
49 [
'Value',
'Value2',
'Value 3']
53 'Valid data with semicolons and enclosed "' => [
54 'input' =>
'"Column A"; "Column B"; "Column C"' . LF .
'"Value"; "Value2"; "Value 3"',
55 'fieldDelimiter' =>
';',
56 'fieldEnclosure' =>
'"',
57 'maximumColumns' => 0,
59 [
'Column A',
'Column B',
'Column C'],
60 [
'Value',
'Value2',
'Value 3']
64 'Valid data with semicolons and enclosed " and two columns' => [
65 'input' =>
'"Column A"; "Column B"; "Column C"; "Column D"' . LF .
'"Value"; "Value2"; "Value 3"',
66 'fieldDelimiter' =>
';',
67 'fieldEnclosure' =>
'"',
68 'maximumColumns' => 2,
70 [
'Column A',
'Column B'],
75 'Data with comma but configured with semicolons and enclosed "' => [
76 'input' =>
'"Column A", "Column B", "Column C"' . LF .
'"Value", "Value2", "Value 3"',
77 'fieldDelimiter' =>
';',
78 'fieldEnclosure' =>
'"',
79 'maximumColumns' => 0,
81 [
'Column A, "Column B", "Column C"'],
82 [
'Value, "Value2", "Value 3"']
94 $this->assertEquals($expectedResult,
CsvUtility::csvToArray($input, $fieldDelimiter, $fieldEnclosure, $maximumColumns));
100 'row with semicolon as delimiter (TYPE_PASSTHROUGH)' => [
101 [
'val1',
'val2',
'val3'],
104 '"val1";"val2";"val3"',
107 'row where value contains line feeds (TYPE_PASSTHROUGH)' => [
108 [
'val1 line1' .
"\n" .
'val1 line2',
'val2 line1' .
"\r\n" .
'val2 line2',
'val3'],
111 '"val1 line1' .
"\n" .
'val1 line2","val2 line1' .
"\r\n" .
'val2 line2","val3"',
114 'row with all possible control chars (TYPE_PASSTHROUGH)' => [
115 [
'=val1',
'+val2',
'*val3',
'%val4',
'@val5',
'-val6'],
118 '"=val1","+val2","*val3","%val4","@val5","-val6"',
121 'row with spacing and delimiting chars (TYPE_PASSTHROUGH)' => [
122 [
' val1',
"\tval2",
"\nval3",
"\r\nval4",
',val5,',
'"val6"'],
125 '" val1","' .
"\tval2" .
'","' .
"\nval3" .
'","' .
"\r\nval4" .
'",",val5,","""val6"""' ,
128 'row with all possible control chars (TYPE_PREFIX_CONTROLS)' => [
129 [
'=val1',
'+val2',
'*val3',
'%val4',
'@val5',
'-val6'],
132 '"\'=val1","\'+val2","\'*val3","\'%val4","\'@val5","\'-val6"',
135 'row with spacing and delimiting chars (TYPE_PREFIX_CONTROLS)' => [
136 [
' val1',
"\tval2",
"\nval3",
"\r\nval4",
',val5,',
'"val6"'],
139 '" val1","' .
"'\tval2" .
'","' .
"'\nval3" .
'","' .
"'\r\nval4" .
'",",val5,","""val6"""' ,
142 'row with all possible control chars (TYPE_REMOVE_CONTROLS)' => [
143 [
'=val1',
'+val2',
'*val3',
'%val4',
'@val5',
'-val6'],
146 '"val1","val2","val3","val4","val5","val6"',
149 'row with spacing and delimiting chars (TYPE_REMOVE_CONTROLS)' => [
150 [
' val1',
"\tval2",
"\nval3",
"\r\nval4",
',val5,',
'"val6"'],
153 '" val1","val2","val3","val4",",val5,","""val6"""' ,