diff --git a/src/MenuStyle.php b/src/MenuStyle.php index a5b01ae2..5ae37bcf 100644 --- a/src/MenuStyle.php +++ b/src/MenuStyle.php @@ -409,7 +409,13 @@ public function getContentWidth() : int */ public function getRightHandPadding(int $contentLength) : int { - return $this->getContentWidth() - $contentLength + $this->getPadding(); + $rightPadding = $this->getContentWidth() - $contentLength + $this->getPadding(); + + if ($rightPadding < 0) { + $rightPadding = 0; + } + + return $rightPadding; } public function getSelectedMarker() : string diff --git a/test/MenuStyleTest.php b/test/MenuStyleTest.php index b7f95cd4..08c4fb5e 100644 --- a/test/MenuStyleTest.php +++ b/test/MenuStyleTest.php @@ -301,6 +301,35 @@ public function testRightHandPaddingCalculation() : void static::assertSame(241, $style->getRightHandPadding(50)); } + public function testRightHandPaddingReturnsZeroWhenContentLengthTooLong() : void + { + $style = $this->getMenuStyle(); + $style->setPadding(0); + $style->setMargin(0); + $style->setBorder(0); + + $style->setWidth(100); + + self::assertEquals(0, $style->getRightHandPadding(100)); + self::assertEquals(0, $style->getRightHandPadding(150)); + } + + public function testRightHandPaddingReturnsZeroWhenContentLengthTooLongBecauseOfBorder() : void + { + $style = $this->getMenuStyle(); + $style->setPadding(10); + $style->setMargin(0); + $style->setBorder(10); + + $style->setWidth(100); + + self::assertEquals(11, $style->getRightHandPadding(59)); + self::assertEquals(10, $style->getRightHandPadding(60)); + self::assertEquals(0, $style->getRightHandPadding(70)); + self::assertEquals(0, $style->getRightHandPadding(71)); + self::assertEquals(0, $style->getRightHandPadding(100)); + } + public function testMargin() : void { $style = $this->getMenuStyle();