/**
  * Return a substring of this sequence.
  *
  * @param int $start
  * @param int $end
  *
  * @return StringBuilder
  * @throws OutOfBoundsException
  */
 public function substring($start, $end = null)
 {
     $start = (int) $start;
     $end = $end !== null ? (int) $end : null;
     if ($start < 0 || $start >= $this->length() || $end !== null && ($end < 0 || $end >= $this->length())) {
         throw new OutOfBoundsException();
     }
     $string = mb_substr($this->string, $start, $end !== null ? $end + 1 : $this->length(), $this->encoding);
     $stringBuilder = new StringBuilder($string);
     $stringBuilder->setEncoding($this->encoding);
     return $stringBuilder;
 }
 public function testSetEncoding()
 {
     $this->stringBuilder->setEncoding('ISO-8859-1');
     $this->assertEquals('ISO-8859-1', $this->stringBuilder->getEncoding());
     $this->assertEquals($this->initialString, $this->stringBuilder->__toString());
 }