Accedi
IT
apps/caramail-chat / tests / StyledTest.php · commit 6eebcdb
<?phpnamespace Tests;use App\Chat\Styled;use PHPUnit\Framework\TestCase;/** The coded text of the applet: "FFCC" segments joined by "\r", the wave and the rainbow. */final class StyledTest extends TestCase{    public function testASentenceIsSentWithItsFontAndColourFirst(): void    {        self::assertSame('0102Bonjour', Styled::encode('Bonjour', 2));        self::assertSame('0511a b', Styled::encode("a\tb", 11, 1, true));    }    public function testTheSegmentsOfALine(): void    {        $segments = Styled::segments("-105Toto> \r0302Salut");        self::assertSame([12, false, 5, 'Toto> ', false], [$segments[0]['size'], $segments[0]['bold'], $segments[0]['color'], $segments[0]['text'], $segments[0]['smileys']]);        self::assertSame([16, 2, 'Salut', true], [$segments[1]['size'], $segments[1]['color'], $segments[1]['text'], $segments[1]['smileys']]);        self::assertTrue(Styled::segments('0500gras')[0]['bold']);        self::assertSame('Toto> Salut', Styled::plain("-105Toto> \r0302Salut"));    }    public function testTheRainbowGivesEachLetterTheNextColour(): void    {        $line = Styled::spread('0111ab c', static fn (int $n) => 0);        self::assertSame("0103a\r0109b\r0100 \r0107c", $line);    }    public function testTheRainbowAndTheWaveKeepTheSmileysWhole(): void    {        self::assertSame("0103a\r0100 \r0109:-)\r0100 \r0107#13\r0106@05", Styled::spread('0111a :-) #13@05', static fn (int $n) => 0));        $segments = Styled::segments(Styled::spread('0302ok ;-)', static fn (int $n) => 0));        self::assertSame(';-)', end($segments)['text']);    }    public function testTheWaveChangesTheSizeEveryTwoLetters(): void    {        $line = Styled::spread('0302abcde', static fn (int $n) => 0);        self::assertSame("0002a\r0002b\r0102c\r0102d\r0202e", $line);    }    public function testAPlainLineIsLeftAsItIs(): void    {        self::assertSame('0102texte', Styled::spread('0102texte'));    }}