<?php
declare(strict_types=1);

namespace ShlinkioTest\Shlink\Common\Util;

use PHPUnit\Framework\TestCase;
use Shlinkio\Shlink\Common\Util\StringUtilsTrait;
use function strlen;

class StringUtilsTraitTest extends TestCase
{
    use StringUtilsTrait;

    /**
     * @test
     * @dataProvider provideLengths
     */
    public function generateRandomStringGeneratesStringOfProvidedLength(int $length)
    {
        $this->assertEquals($length, strlen($this->generateRandomString($length)));
    }

    public function provideLengths(): array
    {
        return [
            [1],
            [10],
            [15],
        ];
    }

    /**
     * @test
     */
    public function generatesUuidV4()
    {
        $uuidPattern = '/[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}/';

        $this->assertRegExp($uuidPattern, $this->generateV4Uuid());
        $this->assertRegExp($uuidPattern, $this->generateV4Uuid());
        $this->assertRegExp($uuidPattern, $this->generateV4Uuid());
        $this->assertRegExp($uuidPattern, $this->generateV4Uuid());
        $this->assertRegExp($uuidPattern, $this->generateV4Uuid());
    }
}