66
77class ReaderTest extends \PHPUnit_Framework_TestCase
88{
9+ protected $ headerValues = array ( "column1 " , "column2 " , "column3 " );
10+ protected $ expectedRows = array (
11+ 0 =>
12+ array (
13+ 'column1 ' => '1column2value ' ,
14+ 'column2 ' => '1column3value ' ,
15+ 'column3 ' => '1column4value ' ,
16+ ),
17+ 1 =>
18+ array (
19+ 'column1 ' => '2column2value ' ,
20+ 'column2 ' => '2column3value ' ,
21+ 'column3 ' => '2column4value ' ,
22+ ),
23+ 2 =>
24+ array (
25+ 'column1 ' => '3column2value ' ,
26+ 'column2 ' => '3column3value ' ,
27+ 'column3 ' => '3column4value ' ,
28+ ),
29+ 3 =>
30+ array (
31+ 'column1 ' => '4column2value ' ,
32+ 'column2 ' => '4column3value ' ,
33+ 'column3 ' => '4column4value ' ,
34+ ),
35+ 4 =>
36+ array (
37+ 'column1 ' => '5column2value ' ,
38+ 'column2 ' => '5column3value ' ,
39+ 'column3 ' => '5column4value ' ,
40+ ),
41+ );
42+
943 /**
1044 * @dataProvider getReaders
1145 */
1246 public function testOneAtAtime (Reader $ reader )
1347 {
14- while ($ row = $ reader ->getRow ()) {
48+ while ($ row = $ reader ->getRow ()) {
1549 $ this ->assertTrue (is_array ($ row ));
1650 $ this ->assertEquals (3 , count ($ row ));
1751 }
@@ -30,15 +64,128 @@ public function testGetAll(Reader $reader)
3064 */
3165 public function testGetHeaders (Reader $ reader )
3266 {
33- $ this ->assertEquals (array ("column1 " , "column2 " , "column3 " ), $ reader ->getHeaders ());
67+ $ this ->assertEquals ( $ this ->headerValues , $ reader ->getHeaders ());
68+ }
69+
70+ /**
71+ * @dataProvider getReaders
72+ */
73+ public function testAdvanceto (Reader $ reader )
74+ {
75+ $ reader ->advanceTo ( 3 );
76+
77+ $ this ->assertEquals ( 3 , $ reader ->getLineNumber () );
78+
79+ $ reader ->advanceTo ( 0 );
80+
81+ $ row = array
82+ (
83+ 'column1 ' => '1column2value ' ,
84+ 'column2 ' => '1column3value ' ,
85+ 'column3 ' => '1column4value ' ,
86+ );
87+
88+ $ actualRow = $ reader ->getRow ();
89+ $ this ->assertEquals ( $ row , $ actualRow );
90+
91+ $ reader ->advanceTo ( 3 );
92+
93+ $ row = array
94+ (
95+ 'column1 ' => '4column2value ' ,
96+ 'column2 ' => '4column3value ' ,
97+ 'column3 ' => '4column4value ' ,
98+ );
99+
100+ $ this ->assertEquals ( $ row , $ reader ->getRow () );
101+ }
102+
103+ /**
104+ * @dataProvider getReadersNoHeadersFirstRow
105+ */
106+ public function testAdvanceToNoHeadersFirstRow (Reader $ reader )
107+ {
108+ $ row = array (
109+ 0 => 'Some Meta Data ' ,
110+ 1 => '' ,
111+ 2 => '' ,
112+ );
113+
114+ $ actualRow = $ reader ->getRow ();
115+ $ this ->assertEquals ( $ row , $ actualRow );
116+
117+ // give it the ol' one-two-switcharoo
118+ $ reader ->advanceTo (3 );
119+ $ reader ->getRow ();
120+ $ reader ->advanceTo (0 );
121+
122+ $ this ->assertEquals ( $ row , $ reader ->getRow () );
34123 }
35-
124+
125+ /**
126+ * @dataProvider getReaders
127+ */
128+ public function testSetHeaderLine (Reader $ reader )
129+ {
130+ $ headers = $ this ->headerValues ;
131+
132+ $ this ->assertEquals ( $ headers , $ reader ->getHeaders () );
133+
134+ $ reader ->setHeaderLine (0 );
135+
136+ $ this ->assertEquals ( $ headers , $ reader ->getHeaders () );
137+ }
138+
139+ /**
140+ * @dataProvider getReadersNoHeadersFirstRow
141+ */
142+ public function testSetHeaderLineNoHeadersFirstRow (Reader $ reader )
143+ {
144+ // set headers
145+ $ reader ->setHeaderLine ( 3 );
146+
147+ $ this ->assertEquals ( $ this ->headerValues , $ reader ->getHeaders () );
148+
149+ $ rows = $ reader ->getAll ();
150+
151+ $ this ->assertCount (5 , $ rows );
152+ $ this ->assertEquals ($ this ->expectedRows , $ rows );
153+ }
154+
155+ /**
156+ * @dataProvider getReaders
157+ */
158+ public function testGetLastLineNumber (Reader $ reader )
159+ {
160+ $ this ->assertEquals ( 5 , $ reader ->getLastLineNumber () );
161+ }
162+
163+ /**
164+ * @dataProvider getReadersNoHeadersFirstRow
165+ */
166+ public function testGetLastLineNumberNoHeadersFirstRow (Reader $ reader )
167+ {
168+ $ this ->assertEquals ( 10 , $ reader ->getLastLineNumber () );
169+ }
170+
36171 public function getReaders ()
37172 {
38- $ readerSemiColon = new \ EasyCSV \ Reader (__DIR__ . '/read_sc.csv ' );
173+ $ readerSemiColon = new Reader (__DIR__ . '/read_sc.csv ' );
39174 $ readerSemiColon ->setDelimiter ('; ' );
175+
176+ return array (
177+ array (new Reader (__DIR__ . '/read.csv ' )),
178+ array ($ readerSemiColon ),
179+ );
180+ }
181+
182+ public function getReadersNoHeadersFirstRow ()
183+ {
184+ $ readerSemiColon = new Reader (__DIR__ . '/read_header_line_sc.csv ' , 'r+ ' , false );
185+ $ readerSemiColon ->setDelimiter ('; ' );
186+
40187 return array (
41- array (new \ EasyCSV \ Reader (__DIR__ . '/read .csv ' )),
188+ array (new Reader (__DIR__ . '/read_header_line .csv ' , ' r+ ' , false )),
42189 array ($ readerSemiColon ),
43190 );
44191 }
0 commit comments