ILIAS  trunk Revision v11.0_alpha-1713-gd8962da2f67
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
FlashcardShuffleManagerTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
21 namespace ILIAS\Glossary\Flashcard;
22 
24 
25 class FlashcardShuffleManagerTest extends TestCase
26 {
27  protected static array $box_entries = [];
28  protected static array $box_entries_shuffled = [];
29  protected static array $box_entries_shuffled_equal_day = [];
30 
31  public static function setUpBeforeClass(): void
32  {
33  if (empty(self::$box_entries)) {
34  self::initializeBoxEntries();
35  }
36  if (empty(self::$box_entries_shuffled)) {
37  self::initializeBoxEntriesShuffled();
38  }
39  if (empty(self::$box_entries_shuffled_equal_day)) {
40  self::initializeBoxEntriesShuffledEqualDay();
41  }
42  }
43 
44  protected static function initializeBoxEntries(): void
45  {
46  self::$box_entries = [
47  new Term(1, 11, 111, 1, "2024-01-01 01:00:00"),
48  new Term(2, 11, 111, 1, "2024-01-02 01:00:00"),
49  new Term(3, 11, 111, 1, "2024-01-02 02:00:00"),
50  new Term(4, 11, 111, 1, "2024-01-02 03:00:00"),
51  new Term(5, 11, 111, 1, "2024-01-02 04:00:00"),
52  new Term(6, 11, 111, 1, "2024-01-03 01:00:00"),
53  new Term(7, 11, 111, 1, "2024-01-04 02:00:00"),
54  new Term(8, 11, 111, 1, "2024-01-05 01:00:00"),
55  new Term(9, 11, 111, 1, "2024-02-01 01:00:00"),
56  new Term(10, 11, 111, 1, "2024-02-02 01:00:00"),
57  new Term(11, 11, 111, 1, "2024-02-03 01:00:00"),
58  new Term(12, 11, 111, 1, "2024-02-03 01:01:00"),
59  new Term(13, 11, 111, 1, "2024-02-03 02:00:00"),
60  new Term(14, 11, 111, 1, "2024-03-01 01:00:00")
61  ];
62  }
63 
64  protected static function initializeBoxEntriesShuffled(): void
65  {
66  self::$box_entries_shuffled = [
67  new Term(14, 11, 111, 1, "2024-03-01 01:00:00"),
68  new Term(13, 11, 111, 1, "2024-02-03 02:00:00"),
69  new Term(12, 11, 111, 1, "2024-02-03 01:01:00"),
70  new Term(11, 11, 111, 1, "2024-02-03 01:00:00"),
71  new Term(10, 11, 111, 1, "2024-02-02 01:00:00"),
72  new Term(9, 11, 111, 1, "2024-02-01 01:00:00"),
73  new Term(8, 11, 111, 1, "2024-01-05 01:00:00"),
74  new Term(7, 11, 111, 1, "2024-01-04 02:00:00"),
75  new Term(6, 11, 111, 1, "2024-01-03 01:00:00"),
76  new Term(5, 11, 111, 1, "2024-01-02 04:00:00"),
77  new Term(4, 11, 111, 1, "2024-01-02 03:00:00"),
78  new Term(3, 11, 111, 1, "2024-01-02 02:00:00"),
79  new Term(2, 11, 111, 1, "2024-01-02 01:00:00"),
80  new Term(1, 11, 111, 1, "2024-01-01 01:00:00"),
81  ];
82  }
83 
84  protected static function initializeBoxEntriesShuffledEqualDay(): void
85  {
86  self::$box_entries_shuffled_equal_day = [
87  new Term(1, 11, 111, 1, "2024-01-01 01:00:00"),
88  new Term(5, 11, 111, 1, "2024-01-02 04:00:00"),
89  new Term(4, 11, 111, 1, "2024-01-02 03:00:00"),
90  new Term(3, 11, 111, 1, "2024-01-02 02:00:00"),
91  new Term(2, 11, 111, 1, "2024-01-02 01:00:00"),
92  new Term(6, 11, 111, 1, "2024-01-03 01:00:00"),
93  new Term(7, 11, 111, 1, "2024-01-04 02:00:00"),
94  new Term(8, 11, 111, 1, "2024-01-05 01:00:00"),
95  new Term(9, 11, 111, 1, "2024-02-01 01:00:00"),
96  new Term(10, 11, 111, 1, "2024-02-02 01:00:00"),
97  new Term(13, 11, 111, 1, "2024-02-03 02:00:00"),
98  new Term(12, 11, 111, 1, "2024-02-03 01:01:00"),
99  new Term(11, 11, 111, 1, "2024-02-03 01:00:00"),
100  new Term(14, 11, 111, 1, "2024-03-01 01:00:00")
101  ];
102  }
103 
105  {
106  return new class () extends FlashcardShuffleManager {
107  public function __construct()
108  {
109  }
110 
111  protected function shuffle(array $entries): array
112  {
113  usort($entries, fn($a, $b) => strcmp($b->getLastAccess(), $a->getLastAccess()));
114 
115  return $entries;
116  }
117  };
118  }
119 
120  public function testShuffleEntries(): void
121  {
122  $manager = $this->getShuffleManagerMock();
123 
124  $entries = $manager->shuffleEntries(self::$box_entries);
125 
126  $this->assertEquals(self::$box_entries_shuffled, $entries);
127  }
128 
129  public function testShuffleEntriesWithEqualDay(): void
130  {
131  $manager = $this->getShuffleManagerMock();
132 
133  $entries = $manager->shuffleEntriesWithEqualDay(self::$box_entries);
134 
135  $this->assertEquals(self::$box_entries_shuffled_equal_day, $entries);
136  }
137 }
__construct()
Constructor setup ILIAS global object public.
Definition: class.ilias.php:76
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples