CssConverterTest.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace Spipu\Html2Pdf\Tests;
  3. use Spipu\Html2Pdf\Tests\CrossVersionCompatibility\CssConverterTestCase;
  4. /**
  5. * Class CssConverterTest
  6. */
  7. class CssConverterTest extends CssConverterTestCase
  8. {
  9. /**
  10. * @param string $css
  11. * @param string $old
  12. * @param array $expected
  13. *
  14. * @dataProvider convertToMMProvider
  15. */
  16. public function testConvertToMM($css, $old, $expected)
  17. {
  18. $result = $this->cssConverter->convertToMM($css, $old);
  19. $this->assertEquals($expected, $result);
  20. }
  21. public function convertToMMProvider()
  22. {
  23. return array(
  24. array('100mm', null, 100),
  25. array('100px', null, 25.4 / 96. * 100),
  26. array('100', null, 25.4 / 96. * 100),
  27. array('100pt', null, 25.4 / 72. * 100),
  28. array('100in', null, 25.4 * 100),
  29. array('10%', 100, 10),
  30. array('100cm', null, null),
  31. );
  32. }
  33. /**
  34. * @param string $css
  35. * @param array $expected
  36. *
  37. * @dataProvider convertToRadiusProvider
  38. */
  39. public function testConvertToRadius($css, $expected)
  40. {
  41. $result = $this->cssConverter->convertToRadius($css);
  42. $this->assertEquals(count($expected), count($result));
  43. for ($i = 0; $i < count($result); $i++) {
  44. $this->assertEquals($expected[$i], $result[$i]);
  45. }
  46. }
  47. public function convertToRadiusProvider()
  48. {
  49. return array(
  50. array('100mm', array(100)),
  51. array('100mm 10mm', array(100, 10)),
  52. array('100mm 10mm ', array(100, 10)),
  53. array('100mm 10cm 10mm', array(100, 10)),
  54. array('1mm 2mm 3mm 4mm', array(1, 2, 3, 4)),
  55. );
  56. }
  57. /**
  58. * @param string $css
  59. * @param boolean $expectedRes
  60. * @param array $expectedColor
  61. *
  62. * @dataProvider convertToColorProvider
  63. */
  64. public function testConvertToColor($css, $expectedRes, $expectedColor)
  65. {
  66. $res = true;
  67. $resultColor = $this->cssConverter->convertToColor($css, $res);
  68. $this->assertEquals($expectedRes, $res);
  69. $this->assertEquals(count($expectedColor), count($resultColor));
  70. for ($i = 0; $i < count($resultColor); $i++) {
  71. if (is_null($expectedColor[$i])) {
  72. $this->assertNull($resultColor[$i]);
  73. } else {
  74. $this->assertEquals($expectedColor[$i], $resultColor[$i]);
  75. }
  76. }
  77. }
  78. public function convertToColorProvider()
  79. {
  80. return array(
  81. array('transparent', true, array(null, null, null)),
  82. array('aliceblue', true, array( 240, 248, 255)),
  83. array('#F0A050', true, array( 240, 160, 80)),
  84. array('#FA5', true, array( 255, 170, 85)),
  85. array('rgb( 50, 100, 150)', true, array( 50, 100, 150)),
  86. array('rgb( 10%, 20%, 30%)', true, array(25.5, 51, 76.5)),
  87. array('rgb( 0.2, 0.4, 0.6)', true, array( 51, 102, 153)),
  88. array('cmyk(255, 255, 255, 255)', true, array( 100, 100, 100, 100)),
  89. array('cmyk(10%, 20%, 30%, 40%)', true, array( 10, 20, 30, 40)),
  90. array('cmyk(0.2, 0.4, 0.6, 0.8)', true, array( 20, 40, 60, 80)),
  91. array('blakc', false, array( 0, 0, 0)),
  92. );
  93. }
  94. }