ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ShuffleTransformationTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
25use PHPUnit\Framework\TestCase;
27
28class ShuffleTransformationTest extends TestCase
29{
30 public function testTransformResultSuccess(): void
31 {
32 $seed = 0;
33 $value = ['Donec', 'at', 'pede', 'Phasellus', 'purus', 'Nulla', 'facilisis', 'risus', 'a', 'rhoncus', 'fermentum', 'tellus', 'tellus', 'lacinia', 'purus', 'et', 'dictum', 'nunc', 'justo', 'sit', 'amet', 'elit'];
34 $expected = $this->shuffleWithSeed($value, $seed);
35 $seedMock = $this->getMockBuilder(Seed::class)->getMock();
36 $seedMock->expects(self::once())->method('seedRandomGenerator')->willReturnCallback(static function () use ($seed): void {
37 mt_srand($seed);
38 });
39
40 $result = (new ShuffleTransformation($seedMock))->transform($value);
41 $this->assertEquals($expected, $result);
42 }
43
44 public function testTransformResultFailure(): void
45 {
46 $this->expectException(ConstraintViolationException::class);
47 $seedMock = $this->getMockBuilder(Seed::class)->getMock();
48 $seedMock->expects(self::never())->method('seedRandomGenerator');
49
50 $result = (new ShuffleTransformation($seedMock))->transform('im no array');
51 }
52
53 private function shuffleWithSeed(array $array, int $seed): array
54 {
55 mt_srand($seed);
56 shuffle($array);
57
58 return $array;
59 }
60}