ConditionalStyleTest.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Worksheet;
  3. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  4. use PhpOffice\PhpSpreadsheet\Style\Color;
  5. use PhpOffice\PhpSpreadsheet\Style\Conditional;
  6. use PHPUnit\Framework\TestCase;
  7. class ConditionalStyleTest extends TestCase
  8. {
  9. /**
  10. * @var Spreadsheet
  11. */
  12. protected $spreadsheet;
  13. protected function setUp(): void
  14. {
  15. parent::setUp();
  16. $this->spreadsheet = new Spreadsheet();
  17. $conditional1 = new Conditional();
  18. $conditional1->setConditionType(Conditional::CONDITION_CELLIS);
  19. $conditional1->setOperatorType(Conditional::OPERATOR_LESSTHAN);
  20. $conditional1->addCondition('0');
  21. $conditional1->getStyle()->getFont()->getColor()->setARGB(Color::COLOR_RED);
  22. $conditional1->getStyle()->getFont()->setBold(true);
  23. $conditional2 = new Conditional();
  24. $conditional2->setConditionType(Conditional::CONDITION_CELLIS);
  25. $conditional2->setOperatorType(Conditional::OPERATOR_EQUAL);
  26. $conditional2->addCondition('0');
  27. $conditional2->getStyle()->getFont()->getColor()->setARGB(Color::COLOR_YELLOW);
  28. $conditional2->getStyle()->getFont()->setBold(true);
  29. $conditional3 = new Conditional();
  30. $conditional3->setConditionType(Conditional::CONDITION_CELLIS);
  31. $conditional3->setOperatorType(Conditional::OPERATOR_GREATERTHAN);
  32. $conditional3->addCondition('0');
  33. $conditional3->getStyle()->getFont()->getColor()->setARGB(Color::COLOR_GREEN);
  34. $conditional3->getStyle()->getFont()->setBold(true);
  35. $conditionalStyles = $this->spreadsheet->getActiveSheet()->getStyle('A1:C3')->getConditionalStyles();
  36. $conditionalStyles[] = $conditional1;
  37. $conditionalStyles[] = $conditional2;
  38. $conditionalStyles[] = $conditional3;
  39. $this->spreadsheet->getActiveSheet()->getStyle('A1:C3')->setConditionalStyles($conditionalStyles);
  40. $this->spreadsheet->getActiveSheet()
  41. ->duplicateConditionalStyle(
  42. $this->spreadsheet->getActiveSheet()->getConditionalStyles('A1:C3'),
  43. 'F1'
  44. );
  45. }
  46. /**
  47. * @dataProvider cellConditionalStylesProvider
  48. */
  49. public function testCellHasConditionalStyles(string $cellReference, bool $expectedHasConditionalStyles): void
  50. {
  51. $cellHasConditionalStyles = $this->spreadsheet->getActiveSheet()->conditionalStylesExists($cellReference);
  52. self::assertSame($expectedHasConditionalStyles, $cellHasConditionalStyles);
  53. }
  54. /**
  55. * @dataProvider cellConditionalStylesProvider
  56. */
  57. public function testCellGetConditionalStyles(string $cellReference, bool $expectedGetConditionalStyles): void
  58. {
  59. $cellHasConditionalStyles = $this->spreadsheet->getActiveSheet()->getConditionalStyles($cellReference);
  60. self::assertSame($expectedGetConditionalStyles, !empty($cellHasConditionalStyles));
  61. }
  62. public function cellConditionalStylesProvider(): array
  63. {
  64. return [
  65. ['A1', true],
  66. ['B2', true],
  67. ['B4', false],
  68. ['A1:C3', true],
  69. ['A1:B2', false],
  70. ['F1', true],
  71. ['F2', false],
  72. ['A1:F1', false],
  73. ];
  74. }
  75. }