ILIAS  trunk Revision v11.0_alpha-1731-gff9cd7e2bd3
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
DataHelperTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
28 
29 class DataHelperTest extends TestCase
30 {
31  protected function getData(string $value): ElementsDataInterface
32  {
33  return new class ($value) extends NullElementsData {
34  public function __construct(protected string $value)
35  {
36  }
37 
38  public function value(): string
39  {
40  return $this->value;
41  }
42  };
43  }
44 
45  protected function getDataHelper(): DataHelper
46  {
47  $internal_helper = new class () extends NullInternalDataHelper {
48  public function durationToIterator(string $duration): \Generator
49  {
50  foreach (explode(':', $duration) as $v) {
51  yield $v === '' ? null : $v;
52  }
53  }
54 
55  public function durationToSeconds(string $duration): int
56  {
57  $r = 0;
58  foreach ($this->durationToIterator($duration) as $v) {
59  $r += $v;
60  }
61  return $r;
62  }
63 
64  public function datetimeToObject(string $datetime): \DateTimeImmutable
65  {
66  return new \DateTimeImmutable($datetime);
67  }
68 
69  public function durationFromIntegers(
70  ?int $years,
71  ?int $months,
72  ?int $days,
73  ?int $hours,
74  ?int $minutes,
75  ?int $seconds
76  ): string {
77  $array = [$years, $months, $days, $hours, $minutes, $seconds];
78  return implode(':', $array);
79  }
80 
81  public function datetimeFromObject(\DateTimeImmutable $object): string
82  {
83  return $object->format('Y-m-d');
84  }
85 
86  public function getAllLanguages(): \Generator
87  {
88  yield from ['lang1', 'lang2', 'lang3'];
89  }
90  };
91 
92  $data_presentation = new class () extends NullData {
93  public function dataValue(ElementsDataInterface $data): string
94  {
95  return 'presentable ' . $data->value();
96  }
97 
98  public function language(string $language): string
99  {
100  return 'translated_' . $language;
101  }
102  };
103 
105  }
106 
107  public function testMakePresentable(): void
108  {
109  $helper = $this->getDataHelper();
110 
111  $this->assertSame(
112  'presentable value',
113  $helper->makePresentable($this->getData('value'))
114  );
115  }
116 
117  public function testMakePresentableAsList(): void
118  {
119  $helper = $this->getDataHelper();
120 
121  $this->assertSame(
122  'presentable value1,? ,.presentable value2,? ,.presentable value3',
123  $helper->makePresentableAsList(
124  ',? ,.',
125  $this->getData('value1'),
126  $this->getData('value2'),
127  $this->getData('value3')
128  )
129  );
130  }
131 
132  public function testDurationToArray(): void
133  {
134  $helper = $this->getDataHelper();
135 
136  $this->assertSame(
137  [89, 0, null, null, null, 1],
138  $helper->durationToArray('89:0::::1')
139  );
140  }
141 
142  public function testDurationToSeconds(): void
143  {
144  $helper = $this->getDataHelper();
145 
146  $this->assertSame(
147  89 + 5 + 1,
148  $helper->durationToSeconds('89:5::::1')
149  );
150  }
151 
152  public function testDatetimeToObject(): void
153  {
154  $helper = $this->getDataHelper();
155 
156  $this->assertSame(
157  '2013-01-20',
158  $helper->datetimeToObject('2013-01-20')->format('Y-m-d')
159  );
160  }
161 
162  public function testDurationFromIntegers(): void
163  {
164  $helper = $this->getDataHelper();
165 
166  $this->assertSame(
167  '89:0::::1',
168  $helper->durationFromIntegers(89, 0, null, null, null, 1)
169  );
170  }
171 
172  public function testDatetimeFromObject(): void
173  {
174  $helper = $this->getDataHelper();
175 
176  $this->assertSame(
177  '2013-01-20',
178  $helper->datetimeFromObject(new \DateTimeImmutable('2013-01-20'))
179  );
180  }
181 
182  public function testGetAllLanguages(): void
183  {
184  $helper = $this->getDataHelper();
185 
186  $languages = $helper->getAllLanguages();
187 
188  $this->assertCount(3, $languages);
189  $this->assertSame('lang1', $languages[0]->value());
190  $this->assertSame('translated_lang1', $languages[0]->presentableLabel());
191  $this->assertSame('lang2', $languages[1]->value());
192  $this->assertSame('translated_lang2', $languages[1]->presentableLabel());
193  $this->assertSame('lang3', $languages[2]->value());
194  $this->assertSame('translated_lang3', $languages[2]->presentableLabel());
195  }
196 }
$datetime
$duration
datetimeToObject(string $datetime)
Translates strings in the LOM-internal datetime format to datetime objects.
Definition: DataHelper.php:71
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
durationToSeconds(string $duration)
Translates strings in the LOM-internal duration format to seconds.
Definition: DataHelper.php:66
datetimeFromObject(\DateTimeImmutable $object)
Translates datetime objects to strings in the LOM-internal datetime format.
Definition: DataHelper.php:94
durationFromIntegers(?int $years, ?int $months, ?int $days, ?int $hours, ?int $minutes, ?int $seconds)
Get a string in the LOM-internal duration format as specified by the provided integers.
Definition: DataHelper.php:76
language()
description: > Example for rendring a language glyph.
Definition: language.php:41
__construct(InternalDataHelper $internal_helper, DataPresentation $data_presentation)
Definition: DataHelper.php:32
$r