$sValue) {
$aPrior[$sName] = getParam($sName);
setParam($sName, $sValue);
}
try {
return $fTest();
}
finally {
foreach ($aPrior as $sName => $sValue)
setParam($sName, $sValue);
}
}
private function withDefaultIcons(callable $fTest)
{
return $this->withOptions(['sys_site_icon' => '0', 'sys_site_icon_svg' => '0'], $fTest);
}
public function testDefaultFaviconSwitchesWithTheBrowserScheme(): void
{
$sHtml = $this->withDefaultIcons(fn() => BxTemplFunctions::getInstance()->getMetaIcons());
$this->assertMatchesRegularExpression('//', $sHtml);
$this->assertMatchesRegularExpression('//', $sHtml);
$this->assertStringContainsString("matchMedia('(prefers-color-scheme: dark)')", $sHtml);
$this->assertStringContainsString('', $sDark, 'White ink on dark tabs, with no media query left for the browser to ignore.');
$this->assertStringNotContainsString('@media', $sDark);
}
public function testStudioKeepsItsOwnFaviconInDarkMode(): void
{
$sHtml = $this->withDefaultIcons(fn() => BxTemplStudioFunctions::getInstance()->getMetaIcons());
$this->assertStringContainsString('studio/template/images/icons/favicon.svg', $sHtml);
$this->assertStringNotContainsString('data-bx-icon-dark', $sHtml);
$this->assertStringNotContainsString('favicon-dark.svg', $sHtml);
}
}