PaddingTest.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace League\CLImate\Tests;
  3. class PaddingTest extends TestBase
  4. {
  5. /**
  6. * @test
  7. * @doesNotPerformAssertions
  8. */
  9. public function it_can_wrap_a_line()
  10. {
  11. $max_width = $this->util->width();
  12. $padding = $this->cli->padding();
  13. $content = str_repeat('a', $max_width * 2);
  14. $content = substr($content, 0, ($max_width * 2) - 5);
  15. $this->output->shouldReceive('sameLine');
  16. $this->shouldWrite("\e[m" . substr($content, 0, $max_width) . "\e[0m");
  17. $this->shouldWrite("\e[m" . substr($content, $max_width) . ".....\e[0m");
  18. $this->shouldWrite("\e[m result\e[0m");
  19. $padding->label($content)->result('result');
  20. }
  21. /**
  22. * @test
  23. * @doesNotPerformAssertions
  24. */
  25. public function it_can_chain()
  26. {
  27. $padding = $this->cli->padding(10);
  28. $this->output->shouldReceive('sameLine');
  29. $this->shouldWrite("\e[mPad me....\e[0m");
  30. $this->shouldWrite("\e[m extra\e[0m");
  31. $padding->label('Pad me')->result('extra');
  32. }
  33. /**
  34. * @test
  35. * @doesNotPerformAssertions
  36. */
  37. public function it_can_pad_with_multiple_characters()
  38. {
  39. $padding = $this->cli->padding(10)->char('.-');
  40. $this->output->shouldReceive('sameLine');
  41. $this->shouldWrite("\e[mPad me.-.-\e[0m");
  42. $this->shouldWrite("\e[m extra\e[0m");
  43. $padding->label('Pad me')->result('extra');
  44. }
  45. /**
  46. * @test
  47. * @doesNotPerformAssertions
  48. */
  49. public function it_can_pad_with_multiple_characters_odd()
  50. {
  51. $padding = $this->cli->padding(10)->char('.-');
  52. $this->output->shouldReceive('sameLine');
  53. $this->shouldWrite("\e[mPad odd.-.\e[0m");
  54. $this->shouldWrite("\e[m extra\e[0m");
  55. $padding->label('Pad odd')->result('extra');
  56. }
  57. /**
  58. * @test
  59. * @doesNotPerformAssertions
  60. */
  61. public function it_can_pad_with_multibyte_characters()
  62. {
  63. $padding = $this->cli->padding(10);
  64. $this->output->shouldReceive("sameLine");
  65. $this->shouldWrite("\e[mЛорем.....\e[0m");
  66. $this->shouldWrite("\e[m END\e[0m");
  67. $padding->label("Лорем")->result("END");
  68. }
  69. /**
  70. * @test
  71. * @doesNotPerformAssertions
  72. */
  73. public function it_can_wrap_a_multibyte_line()
  74. {
  75. $max_width = $this->util->width();
  76. $padding = $this->cli->padding();
  77. $content = "Лорем" . str_repeat('a', $max_width * 2);
  78. $content = mb_substr($content, 0, ($max_width * 2) - 5);
  79. $this->output->shouldReceive('sameLine');
  80. $this->shouldWrite("\e[m" . mb_substr($content, 0, $max_width) . "\e[0m");
  81. $this->shouldWrite("\e[m" . mb_substr($content, $max_width) . ".....\e[0m");
  82. $this->shouldWrite("\e[m result\e[0m");
  83. $padding->label($content)->result('result');
  84. }
  85. }