FontTest.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Style;
  3. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  4. use PhpOffice\PhpSpreadsheet\Style\Font;
  5. use PHPUnit\Framework\TestCase;
  6. class FontTest extends TestCase
  7. {
  8. public function testSuperSubScript(): void
  9. {
  10. $spreadsheet = new Spreadsheet();
  11. $sheet = $spreadsheet->getActiveSheet();
  12. $cell = $sheet->getCell('A1');
  13. $cell->setValue('Cell A1');
  14. $font = $cell->getStyle()->getFont();
  15. $font->setSuperscript(true);
  16. $font->setSubscript(true);
  17. self::assertFalse($font->getSuperscript(), 'Earlier set true loses');
  18. self::assertTrue($font->getSubscript(), 'Last set true wins');
  19. $font->setSubscript(true);
  20. $font->setSuperscript(true);
  21. self::assertTrue($font->getSuperscript(), 'Last set true wins');
  22. self::assertFalse($font->getSubscript(), 'Earlier set true loses');
  23. $font->setSuperscript(false);
  24. $font->setSubscript(false);
  25. self::assertFalse($font->getSuperscript(), 'False remains unchanged');
  26. self::assertFalse($font->getSubscript(), 'False remains unchanged');
  27. $font->setSubscript(false);
  28. $font->setSuperscript(false);
  29. self::assertFalse($font->getSuperscript(), 'False remains unchanged');
  30. self::assertFalse($font->getSubscript(), 'False remains unchanged');
  31. $font->setSubscript(true);
  32. $font->setSuperscript(false);
  33. self::assertFalse($font->getSuperscript(), 'False remains unchanged');
  34. self::assertTrue($font->getSubscript(), 'True remains unchanged');
  35. $font->setSubscript(false);
  36. $font->setSuperscript(true);
  37. self::assertTrue($font->getSuperscript());
  38. self::assertFalse($font->getSubscript(), 'False remains unchanged');
  39. $spreadsheet->disconnectWorksheets();
  40. }
  41. public function testSize(): void
  42. {
  43. $spreadsheet = new Spreadsheet();
  44. $sheet = $spreadsheet->getActiveSheet();
  45. $cell = $sheet->getCell('A1');
  46. $cell->setValue('Cell A1');
  47. $font = $cell->getStyle()->getFont();
  48. self::assertEquals(11, $font->getSize(), 'The default is 11');
  49. $font->setSize(12);
  50. self::assertEquals(12, $font->getSize(), 'Accepted new font size');
  51. $invalidFontSizeValues = [
  52. '',
  53. false,
  54. true,
  55. 'non_numeric_string',
  56. '-1.0',
  57. -1.0,
  58. 0,
  59. [],
  60. (object) [],
  61. null,
  62. ];
  63. foreach ($invalidFontSizeValues as $invalidFontSizeValue) {
  64. $font->setSize(12);
  65. $font->setSize($invalidFontSizeValue);
  66. self::assertEquals(10, $font->getSize(), 'Set to 10 after trying to set an invalid value.');
  67. }
  68. $spreadsheet->disconnectWorksheets();
  69. }
  70. public function testName(): void
  71. {
  72. $spreadsheet = new Spreadsheet();
  73. $sheet = $spreadsheet->getActiveSheet();
  74. $cell = $sheet->getCell('A1');
  75. $cell->setValue('Cell A1');
  76. $font = $cell->getStyle()->getFont();
  77. self::assertEquals('Calibri', $font->getName(), 'The default is Calibri');
  78. $font->setName('whatever');
  79. self::assertEquals('whatever', $font->getName(), 'The default is Calibri');
  80. $font->setName('');
  81. self::assertEquals('Calibri', $font->getName(), 'Null string changed to default');
  82. $spreadsheet->disconnectWorksheets();
  83. }
  84. public function testUnderlineHash(): void
  85. {
  86. $font1 = new Font();
  87. $font2 = new Font();
  88. $font2aHash = $font2->getHashCode();
  89. self::assertSame($font1->getHashCode(), $font2aHash);
  90. $font2->setUnderlineColor(
  91. [
  92. 'type' => 'srgbClr',
  93. 'value' => 'FF0000',
  94. ]
  95. );
  96. $font2bHash = $font2->getHashCode();
  97. self::assertNotEquals($font1->getHashCode(), $font2bHash);
  98. }
  99. }