PaddingTest.php 2.9 KB

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