<?php
declare(strict_types=1);
namespace Sabberworm\CSS\Tests\Unit;
use PHPUnit\Framework\TestCase;
use Sabberworm\CSS\Settings;
* @covers \Sabberworm\CSS\Settings
*/
final class SettingsTest extends TestCase
{
* @var Settings
*/
private $subject;
protected function setUp(): void
{
$this->subject = Settings::create();
}
* @test
*/
public function createReturnsInstance(): void
{
$settings = Settings::create();
self::assertInstanceOf(Settings::class, $settings);
}
* @test
*/
public function createReturnsANewInstanceForEachCall(): void
{
$settings1 = Settings::create();
$settings2 = Settings::create();
self::assertNotSame($settings1, $settings2);
}
* @test
*/
public function multibyteSupportByDefaultStateOfMbStringExtension(): void
{
self::assertSame(\extension_loaded('mbstring'), $this->subject->hasMultibyteSupport());
}
* @test
*/
public function withMultibyteSupportProvidesFluentInterface(): void
{
self::assertSame($this->subject, $this->subject->withMultibyteSupport());
}
* @return array<string, array{0: bool}>
*/
public static function booleanDataProvider(): array
{
return [
'true' => [true],
'false' => [false],
];
}
* @test
* @dataProvider booleanDataProvider
*/
public function withMultibyteSupportSetsMultibyteSupport(bool $value): void
{
$this->subject->withMultibyteSupport($value);
self::assertSame($value, $this->subject->hasMultibyteSupport());
}
* @test
*/
public function defaultCharsetByDefaultIsUtf8(): void
{
self::assertSame('utf-8', $this->subject->getDefaultCharset());
}
* @test
*/
public function withDefaultCharsetProvidesFluentInterface(): void
{
self::assertSame($this->subject, $this->subject->withDefaultCharset('UTF-8'));
}
* @test
*/
public function withDefaultCharsetSetsDefaultCharset(): void
{
$charset = 'ISO-8859-1';
$this->subject->withDefaultCharset($charset);
self::assertSame($charset, $this->subject->getDefaultCharset());
}
* @test
*/
public function lenientParsingByDefaultIsTrue(): void
{
self::assertTrue($this->subject->usesLenientParsing());
}
* @test
*/
public function withLenientParsingProvidesFluentInterface(): void
{
self::assertSame($this->subject, $this->subject->withLenientParsing());
}
* @test
* @dataProvider booleanDataProvider
*/
public function withLenientParsingSetsLenientParsing(bool $value): void
{
$this->subject->withLenientParsing($value);
self::assertSame($value, $this->subject->usesLenientParsing());
}
* @test
*/
public function beStrictProvidesFluentInterface(): void
{
self::assertSame($this->subject, $this->subject->beStrict());
}
* @test
*/
public function beStrictSetsLenientParsingToFalse(): void
{
$this->subject->beStrict();
self::assertFalse($this->subject->usesLenientParsing());
}
}