TableNodeTest.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. <?php
  2. namespace Tests\Behat\Gherkin\Node;
  3. use Behat\Gherkin\Node\TableNode;
  4. class TableNodeTest extends \PHPUnit_Framework_TestCase
  5. {
  6. /**
  7. * @expectedException \Behat\Gherkin\Exception\NodeException
  8. */
  9. public function testConstructorExpectsSameNumberOfColumnsInEachRow()
  10. {
  11. new TableNode(array(
  12. array('username', 'password'),
  13. array('everzet'),
  14. array('antono', 'pa$sword')
  15. ));
  16. }
  17. public function testHashTable()
  18. {
  19. $table = new TableNode(array(
  20. array('username', 'password'),
  21. array('everzet', 'qwerty'),
  22. array('antono', 'pa$sword')
  23. ));
  24. $this->assertEquals(
  25. array(
  26. array('username' => 'everzet', 'password' => 'qwerty')
  27. , array('username' => 'antono', 'password' => 'pa$sword')
  28. ),
  29. $table->getHash()
  30. );
  31. $table = new TableNode(array(
  32. array('username', 'password'),
  33. array('', 'qwerty'),
  34. array('antono', ''),
  35. array('', '')
  36. ));
  37. $this->assertEquals(
  38. array(
  39. array('username' => '', 'password' => 'qwerty'),
  40. array('username' => 'antono', 'password' => ''),
  41. array('username' => '', 'password' => ''),
  42. ),
  43. $table->getHash()
  44. );
  45. }
  46. public function testIterator()
  47. {
  48. $table = new TableNode(array(
  49. array('username', 'password'),
  50. array('', 'qwerty'),
  51. array('antono', ''),
  52. array('', ''),
  53. ));
  54. $this->assertEquals(
  55. array(
  56. array('username' => '', 'password' => 'qwerty'),
  57. array('username' => 'antono', 'password' => ''),
  58. array('username' => '', 'password' => ''),
  59. ),
  60. iterator_to_array($table)
  61. );
  62. }
  63. public function testRowsHashTable()
  64. {
  65. $table = new TableNode(array(
  66. array('username', 'everzet'),
  67. array('password', 'qwerty'),
  68. array('uid', '35'),
  69. ));
  70. $this->assertEquals(
  71. array('username' => 'everzet', 'password' => 'qwerty', 'uid' => '35'),
  72. $table->getRowsHash()
  73. );
  74. }
  75. public function testLongRowsHashTable()
  76. {
  77. $table = new TableNode(array(
  78. array('username', 'everzet', 'marcello'),
  79. array('password', 'qwerty', '12345'),
  80. array('uid', '35', '22')
  81. ));
  82. $this->assertEquals(array(
  83. 'username' => array('everzet', 'marcello'),
  84. 'password' => array('qwerty', '12345'),
  85. 'uid' => array('35', '22')
  86. ), $table->getRowsHash());
  87. }
  88. public function testGetRows()
  89. {
  90. $table = new TableNode(array(
  91. array('username', 'password'),
  92. array('everzet', 'qwerty'),
  93. array('antono', 'pa$sword')
  94. ));
  95. $this->assertEquals(array(
  96. array('username', 'password'),
  97. array('everzet', 'qwerty'),
  98. array('antono', 'pa$sword')
  99. ), $table->getRows());
  100. }
  101. public function testGetLines()
  102. {
  103. $table = new TableNode(array(
  104. 5 => array('username', 'password'),
  105. 10 => array('everzet', 'qwerty'),
  106. 13 => array('antono', 'pa$sword')
  107. ));
  108. $this->assertEquals(array(5, 10, 13), $table->getLines());
  109. }
  110. public function testGetRow()
  111. {
  112. $table = new TableNode(array(
  113. array('username', 'password'),
  114. array('everzet', 'qwerty'),
  115. array('antono', 'pa$sword')
  116. ));
  117. $this->assertEquals(array('username', 'password'), $table->getRow(0));
  118. $this->assertEquals(array('antono', 'pa$sword'), $table->getRow(2));
  119. }
  120. public function testGetColumn()
  121. {
  122. $table = new TableNode(array(
  123. array('username', 'password'),
  124. array('everzet', 'qwerty'),
  125. array('antono', 'pa$sword')
  126. ));
  127. $this->assertEquals(array('username', 'everzet', 'antono'), $table->getColumn(0));
  128. $this->assertEquals(array('password', 'qwerty', 'pa$sword'), $table->getColumn(1));
  129. $table = new TableNode(array(
  130. array('username'),
  131. array('everzet'),
  132. array('antono')
  133. ));
  134. $this->assertEquals(array('username', 'everzet', 'antono'), $table->getColumn(0));
  135. }
  136. public function testGetRowWithLineNumbers()
  137. {
  138. $table = new TableNode(array(
  139. 5 => array('username', 'password'),
  140. 10 => array('everzet', 'qwerty'),
  141. 13 => array('antono', 'pa$sword')
  142. ));
  143. $this->assertEquals(array('username', 'password'), $table->getRow(0));
  144. $this->assertEquals(array('antono', 'pa$sword'), $table->getRow(2));
  145. }
  146. public function testGetTable()
  147. {
  148. $table = new TableNode($a = array(
  149. 5 => array('username', 'password'),
  150. 10 => array('everzet', 'qwerty'),
  151. 13 => array('antono', 'pa$sword')
  152. ));
  153. $this->assertEquals($a, $table->getTable());
  154. }
  155. public function testGetRowLine()
  156. {
  157. $table = new TableNode(array(
  158. 5 => array('username', 'password'),
  159. 10 => array('everzet', 'qwerty'),
  160. 13 => array('antono', 'pa$sword')
  161. ));
  162. $this->assertEquals(5, $table->getRowLine(0));
  163. $this->assertEquals(13, $table->getRowLine(2));
  164. }
  165. public function testGetRowAsString()
  166. {
  167. $table = new TableNode(array(
  168. 5 => array('username', 'password'),
  169. 10 => array('everzet', 'qwerty'),
  170. 13 => array('antono', 'pa$sword')
  171. ));
  172. $this->assertEquals('| username | password |', $table->getRowAsString(0));
  173. $this->assertEquals('| antono | pa$sword |', $table->getRowAsString(2));
  174. }
  175. public function testGetTableAsString()
  176. {
  177. $table = new TableNode(array(
  178. 5 => array('id', 'username', 'password'),
  179. 10 => array('42', 'everzet', 'qwerty'),
  180. 13 => array('2', 'antono', 'pa$sword')
  181. ));
  182. $expected = <<<TABLE
  183. | id | username | password |
  184. | 42 | everzet | qwerty |
  185. | 2 | antono | pa\$sword |
  186. TABLE;
  187. $this->assertEquals($expected, $table->getTableAsString());
  188. }
  189. }