Passed
Push — main ( b1fbff...0e72dc )
by Johny
02:35
created

RandomizerTest   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 9
eloc 24
dl 0
loc 51
c 0
b 0
f 0
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DummyGenerator\Test\Randomizer;
6
7
use DummyGenerator\Core\Randomizer\Randomizer;
8
use DummyGenerator\Definitions\Extension\Exception\ExtensionArgumentException;
9
use PHPUnit\Framework\TestCase;
10
11
class RandomizerTest extends TestCase
12
{
13
    public function testRandomElement(): void
14
    {
15
        $randomizer = new Randomizer();
16
        $elements = ['23', 'e', 32, '#'];
17
        self::assertContains($randomizer->randomElement($elements), $elements);
18
    }
19
20
    public function testRandomKey(): void
21
    {
22
        $randomizer = new Randomizer();
23
        $elements = ['key' => '23', 'flower' => 'e', 'mars' => 32, 'hand' => '#'];
24
        self::assertContains($randomizer->randomKey($elements), array_keys($elements));
25
    }
26
27
    public function testRandomLetter(): void
28
    {
29
        $randomizer = new Randomizer();
30
        $letter = $randomizer->randomLetter();
31
32
        self::assertTrue(ord($letter) >= 97 && ord($letter) <= 122);
33
    }
34
35
    public function testGetInt(): void
36
    {
37
        $min = 5;
38
        $max = 50;
39
        $randomizer = new Randomizer();
40
        $number = $randomizer->getInt($min, $max);
41
42
        self::assertTrue($number >= $min && $number <= $max);
43
    }
44
45
    public function testGetFloat(): void
46
    {
47
        $min = 5.50;
48
        $max = 150.45;
49
        $randomizer = new Randomizer();
50
        $number = $randomizer->getFloat($min, $max);
51
52
        self::assertTrue($number >= $min && $number <= $max);
53
    }
54
55
    public function testShuffleElements(): void
56
    {
57
        $array = ['23', 'e', 32, '#'];
58
        $randomizer = new Randomizer();
59
        $shuffled = $randomizer->shuffleElements($array);
60
61
        self::assertCount(count($array), $shuffled);
62
    }
63
64
    public function testRandomElements(): void
65
    {
66
        $array = ['23', 'e', 32, '#'];
67
        $randomizer = new Randomizer();
68
        $shuffled = $randomizer->randomElements($array, 2);
69
70
        self::assertCount(2, $shuffled);
71
        self::assertContains($shuffled[0], $array);
72
        self::assertContains($shuffled[1], $array);
73
    }
74
75
    public function testRandomElementsUnique(): void
76
    {
77
        $array = ['23', '#', '23', '#'];
78
        $randomizer = new Randomizer();
79
        $shuffled = $randomizer->randomElements($array, 2, true);
80
81
        self::assertCount(2, $shuffled);
82
        self::assertNotEquals($shuffled[0], $shuffled[1]);
83
        self::assertContains($shuffled[0], $array);
84
        self::assertContains($shuffled[1], $array);
85
    }
86
87
    public function testRandomElementsUniqueException(): void
88
    {
89
        $array = ['23', '#', '23', '#'];
90
        $randomizer = new Randomizer();
91
        $this->expectException(ExtensionArgumentException::class);
92
        $randomizer->randomElements($array, 5, true);
93
    }
94
}
95