packages/sql-faker/tests/Unit/Generation/Value/RandomCharactersTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\SqlFaker\Generation\Value;
6
7use Faker\Factory;
8use PHPUnit\Framework\Attributes\CoversClass;
9use PHPUnit\Framework\TestCase;
10use SqlFaker\Generation\Value\RandomCharacters;
11
12#[CoversClass(RandomCharacters::class)]
13final class RandomCharactersTest extends TestCase
14{
15 public function testStringDrawsAsManyCharactersAsWereAskedFor(): void
16 {
17 self::assertSame(8, strlen((new RandomCharacters(Factory::create()))->string('abcdef', 8)));
18 }
19
20 public function testStringDrawsOnlyFromTheAlphabetItWasGiven(): void
21 {
22 self::assertSame('aaaa', (new RandomCharacters(Factory::create()))->string('a', 4));
23 }
24
25 public function testStringDrawsNothingWhenNoCharactersWereAskedFor(): void
26 {
27 self::assertSame('', (new RandomCharacters(Factory::create()))->string('abcdef', 0));
28 }
29
30 public function testStringIsRepeatableFromOneSeed(): void
31 {
32 $faker = Factory::create();
33 $characters = new RandomCharacters($faker);
34
35 $faker->seed(20_260_825);
36 $first = $characters->string('abcdefghij', 16);
37 $faker->seed(20_260_825);
38
39 self::assertSame($first, $characters->string('abcdefghij', 16));
40 }
41
42 public function testCharacterDrawsOneOfTheAlphabet(): void
43 {
44 self::assertStringContainsString(
45 (new RandomCharacters(Factory::create()))->character('abcdef'),
46 'abcdef',
47 );
48 }
49}
50