StringLengthTest.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Calculation;
  3. use PhpOffice\PhpSpreadsheet\Cell\DataType;
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. use PHPUnit\Framework\TestCase;
  6. class StringLengthTest extends TestCase
  7. {
  8. public function testStringLength(): void
  9. {
  10. $spreadsheet = new Spreadsheet();
  11. $sheet = $spreadsheet->getActiveSheet();
  12. // Note use Armenian character below to make sure chars, not bytes
  13. $longstring = str_repeat('Ԁ', DataType::MAX_STRING_LENGTH - 5);
  14. $sheet->getCell('C1')->setValue($longstring);
  15. self::assertSame($longstring, $sheet->getCell('C1')->getValue());
  16. $sheet->getCell('C2')->setValue($longstring . 'abcdef');
  17. self::assertSame($longstring . 'abcde', $sheet->getCell('C2')->getValue());
  18. $sheet->getCell('C3')->setValue('abcdef');
  19. $sheet->getCell('C4')->setValue('=C1 & C3');
  20. self::assertSame($longstring . 'abcde', $sheet->getCell('C4')->getCalculatedValue(), 'truncate cell concat with cell');
  21. $sheet->getCell('C5')->setValue('=C1 & "A"');
  22. self::assertSame($longstring . 'A', $sheet->getCell('C5')->getCalculatedValue(), 'okay cell concat with literal');
  23. $sheet->getCell('C6')->setValue('=C1 & "ABCDEF"');
  24. self::assertSame($longstring . 'ABCDE', $sheet->getCell('C6')->getCalculatedValue(), 'truncate cell concat with literal');
  25. $sheet->getCell('C7')->setValue('="ABCDEF" & C1');
  26. self::assertSame('ABCDEF' . str_repeat('Ԁ', DataType::MAX_STRING_LENGTH - 6), $sheet->getCell('C7')->getCalculatedValue(), 'truncate literal concat with cell');
  27. $sheet->getCell('C8')->setValue('="ABCDE" & C1');
  28. self::assertSame('ABCDE' . $longstring, $sheet->getCell('C8')->getCalculatedValue(), 'okay literal concat with cell');
  29. $spreadsheet->disconnectWorksheets();
  30. }
  31. }