@@ -317,12 +317,17 @@ public function testConvertToHexConvert(): void
317
317
self ::assertEquals ('#00BFFF ' , Utils::convertToHex ('deep sky blue ' ));
318
318
self ::assertEquals ('#FFD700 ' , Utils::convertToHex ('GOLD ' ));
319
319
self ::assertEquals ('#B8860B ' , Utils::convertToHex ('darkgoldenrod ' ));
320
+ self ::assertEquals ('#aabbcc ' , Utils::convertToHex ('#aabbcc ' ));
321
+ self ::assertEquals ('#aaabbbccc ' , Utils::convertToHex ('#aaabbbccc ' ));
322
+ self ::assertEquals ('#def ' , Utils::convertToHex ('#def ' ));
323
+ self ::assertEquals ('#f1A ' , Utils::convertToHex ('#f1A ' ));
320
324
}
321
325
322
326
public function testParseHexColor (): void
323
327
{
324
328
self ::assertEquals ([255 , 255 , 255 ], Utils::parseHexColor ('#ffffff ' ));
325
329
self ::assertEquals ([0 , 0 , 0 ], Utils::parseHexColor ('#000000 ' ));
330
+ self ::assertEquals ([0 , 0 , 0 ], Utils::parseHexColor ('#000 ' ));
326
331
self ::assertEquals ([171 , 205 , 239 ], Utils::parseHexColor ('#abcdef ' ));
327
332
self ::assertEquals ([254 , 220 , 186 ], Utils::parseHexColor ('#FEDCBA ' ));
328
333
}
@@ -343,6 +348,34 @@ public function testRgbToHex(): void
343
348
self ::assertEquals ('#fedcba ' , Utils::rgbToHex ([254 , 220 , 186 ]));
344
349
}
345
350
351
+ public function testRelativeLuminance (): void
352
+ {
353
+ self ::assertEquals (0.0 , Utils::relativeLuminance ("#000000 " ));
354
+ self ::assertEquals (1.0 , Utils::relativeLuminance ("#FFFfff " ));
355
+ self ::assertEquals (0.00751604342389449 , Utils::relativeLuminance ("#123 " ));
356
+ }
357
+
358
+ /**
359
+ * Test that the APCA contrast function returns the correct data
360
+ */
361
+ public function testApcaContrast (): void
362
+ {
363
+ self ::assertEquals (-114.0 , Utils::apcaContrast ("#fff " , "#000000 " ));
364
+ self ::assertEquals (-114.0 , Utils::apcaContrast ("#ffffff " , "#000000 " ));
365
+ self ::assertEquals (-114.0 , Utils::apcaContrast ("#fffffffff " , "#000 " ));
366
+ self ::assertEquals (114.0 , Utils::apcaContrast ("#000000 " , "#ffffff " ));
367
+ self ::assertEquals (0.0 , Utils::apcaContrast ("#fffFFF " , "#FFFfff " ));
368
+ self ::assertEquals (-0.36 , Utils::apcaContrast ("#111 " , "#111 " ));
369
+ }
370
+
371
+ public function testHexToForegroundAndBorder (): void
372
+ {
373
+ self ::assertEquals (["#000000 " , "#bfbd9d " ], Utils::hexToForegroundAndBorder ("#fffDDD " ));
374
+ self ::assertEquals (["#ffffff " , "#000000 " ], Utils::hexToForegroundAndBorder ("#000000 " ));
375
+ self ::assertEquals (["#000000 " , "#6a7b8c " ], Utils::hexToForegroundAndBorder ("#ABC " ));
376
+ self ::assertEquals (["#000000 " , "#6a7b8c " ], Utils::hexToForegroundAndBorder ("#AAABBBCCC " ));
377
+ }
378
+
346
379
/**
347
380
* Test function that converts colour name to hex notation.
348
381
* Returns null for unknown values.
@@ -351,7 +384,9 @@ public function testConvertToHexUnknown(): void
351
384
{
352
385
self ::assertNull (Utils::convertToHex ('doesnotexist ' ));
353
386
self ::assertNull (Utils::convertToHex ('#aabbccdd ' ));
354
- self ::assertNull (Utils::convertToHex ('#12346h ' ));
387
+ self ::assertNull (Utils::convertToHex ('#12345h ' ));
388
+ self ::assertNull (Utils::convertToHex ('#1234 ' ));
389
+ self ::assertNull (Utils::convertToHex ('#12 ' ));
355
390
}
356
391
357
392
/**
@@ -770,7 +805,7 @@ public function testSanitizeSvg(): void
770
805
<a xlink:href="javascript:alert(2)">test 2</a>
771
806
<a href="#test3">test 3</a>
772
807
<a xlink:href="#test">test 4</a>
773
-
808
+
774
809
<a href="data:data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' onload='alert(88)'%3E%3C/svg%3E">test 5</a>
775
810
<a xlink:href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' onload='alert(88)'%3E%3C/svg%3E">test 6</a>
776
811
<use xlink:href="defs.svg#icon-1"/>
@@ -783,7 +818,7 @@ public function testSanitizeSvg(): void
783
818
<this>shouldn't be here</this>
784
819
<script>alert(1);</script>
785
820
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="541.54" y1="299.573" x2="543.179" y2="536.458"/>
786
-
821
+
787
822
</svg>
788
823
EOF ;
789
824
$ clean = Utils::sanitizeSvg ($ dirty );
0 commit comments