ILIAS  trunk Revision v11.0_alpha-1723-g8e69f309bab
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ShuffleTransformationTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
27 
28 class 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 }