3 namespace Tests\Behat\Gherkin\Node;
5 use Behat\Gherkin\Node\TableNode;
7 class TableNodeTest extends \PHPUnit_Framework_TestCase
10 * @expectedException \Behat\Gherkin\Exception\NodeException
12 public function testConstructorExpectsSameNumberOfColumnsInEachRow()
15 array('username', 'password'),
17 array('antono', 'pa$sword')
21 public function constructorTestDataProvider() {
23 'One-dimensional array' => array(
24 array('everzet', 'antono')
26 'Three-dimensional array' => array(
27 array(array(array('everzet', 'antono')))
33 * @dataProvider constructorTestDataProvider
34 * @expectedException \Behat\Gherkin\Exception\NodeException
35 * @expectedExceptionMessage Table is not two-dimensional.
37 public function testConstructorExpectsTwoDimensionalArrays($table)
39 new TableNode($table);
42 public function testHashTable()
44 $table = new TableNode(array(
45 array('username', 'password'),
46 array('everzet', 'qwerty'),
47 array('antono', 'pa$sword')
52 array('username' => 'everzet', 'password' => 'qwerty')
53 , array('username' => 'antono', 'password' => 'pa$sword')
58 $table = new TableNode(array(
59 array('username', 'password'),
67 array('username' => '', 'password' => 'qwerty'),
68 array('username' => 'antono', 'password' => ''),
69 array('username' => '', 'password' => ''),
75 public function testIterator()
77 $table = new TableNode(array(
78 array('username', 'password'),
86 array('username' => '', 'password' => 'qwerty'),
87 array('username' => 'antono', 'password' => ''),
88 array('username' => '', 'password' => ''),
90 iterator_to_array($table)
94 public function testRowsHashTable()
96 $table = new TableNode(array(
97 array('username', 'everzet'),
98 array('password', 'qwerty'),
103 array('username' => 'everzet', 'password' => 'qwerty', 'uid' => '35'),
104 $table->getRowsHash()
108 public function testLongRowsHashTable()
110 $table = new TableNode(array(
111 array('username', 'everzet', 'marcello'),
112 array('password', 'qwerty', '12345'),
113 array('uid', '35', '22')
116 $this->assertEquals(array(
117 'username' => array('everzet', 'marcello'),
118 'password' => array('qwerty', '12345'),
119 'uid' => array('35', '22')
120 ), $table->getRowsHash());
123 public function testGetRows()
125 $table = new TableNode(array(
126 array('username', 'password'),
127 array('everzet', 'qwerty'),
128 array('antono', 'pa$sword')
131 $this->assertEquals(array(
132 array('username', 'password'),
133 array('everzet', 'qwerty'),
134 array('antono', 'pa$sword')
135 ), $table->getRows());
138 public function testGetLines()
140 $table = new TableNode(array(
141 5 => array('username', 'password'),
142 10 => array('everzet', 'qwerty'),
143 13 => array('antono', 'pa$sword')
146 $this->assertEquals(array(5, 10, 13), $table->getLines());
149 public function testGetRow()
151 $table = new TableNode(array(
152 array('username', 'password'),
153 array('everzet', 'qwerty'),
154 array('antono', 'pa$sword')
157 $this->assertEquals(array('username', 'password'), $table->getRow(0));
158 $this->assertEquals(array('antono', 'pa$sword'), $table->getRow(2));
161 public function testGetColumn()
163 $table = new TableNode(array(
164 array('username', 'password'),
165 array('everzet', 'qwerty'),
166 array('antono', 'pa$sword')
169 $this->assertEquals(array('username', 'everzet', 'antono'), $table->getColumn(0));
170 $this->assertEquals(array('password', 'qwerty', 'pa$sword'), $table->getColumn(1));
172 $table = new TableNode(array(
178 $this->assertEquals(array('username', 'everzet', 'antono'), $table->getColumn(0));
181 public function testGetRowWithLineNumbers()
183 $table = new TableNode(array(
184 5 => array('username', 'password'),
185 10 => array('everzet', 'qwerty'),
186 13 => array('antono', 'pa$sword')
189 $this->assertEquals(array('username', 'password'), $table->getRow(0));
190 $this->assertEquals(array('antono', 'pa$sword'), $table->getRow(2));
193 public function testGetTable()
195 $table = new TableNode($a = array(
196 5 => array('username', 'password'),
197 10 => array('everzet', 'qwerty'),
198 13 => array('antono', 'pa$sword')
201 $this->assertEquals($a, $table->getTable());
204 public function testGetRowLine()
206 $table = new TableNode(array(
207 5 => array('username', 'password'),
208 10 => array('everzet', 'qwerty'),
209 13 => array('antono', 'pa$sword')
212 $this->assertEquals(5, $table->getRowLine(0));
213 $this->assertEquals(13, $table->getRowLine(2));
216 public function testGetRowAsString()
218 $table = new TableNode(array(
219 5 => array('username', 'password'),
220 10 => array('everzet', 'qwerty'),
221 13 => array('antono', 'pa$sword')
224 $this->assertEquals('| username | password |', $table->getRowAsString(0));
225 $this->assertEquals('| antono | pa$sword |', $table->getRowAsString(2));
228 public function testGetTableAsString()
230 $table = new TableNode(array(
231 5 => array('id', 'username', 'password'),
232 10 => array('42', 'everzet', 'qwerty'),
233 13 => array('2', 'antono', 'pa$sword')
237 | id | username | password |
238 | 42 | everzet | qwerty |
239 | 2 | antono | pa\$sword |
241 $this->assertEquals($expected, $table->getTableAsString());
244 public function testFromList()
246 $table = TableNode::fromList(array(
251 $expected = new TableNode(array(
255 $this->assertEquals($expected, $table);
259 * @expectedException \Behat\Gherkin\Exception\NodeException
261 public function testGetTableFromListWithMultidimensionalArrayArgument()
263 TableNode::fromList(array(