ILIAS  trunk Revision v11.0_alpha-1761-g6dbbfa7b760
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
TaskTestTBD.php
Go to the documentation of this file.
1 <?php
2 
40 
41 require_once("vendor/composer/vendor/autoload.php");
42 
49 #[BackupGlobals(false)]
50 #[BackupStaticProperties(false)]
51 #[PreserveGlobalState(false)]
52 #[RunTestsInSeparateProcesses]
53 class TaskTest extends TestCase
54 {
55  public function testPlusTask(): void
56  {
57  $dic = new Container();
58 
59  $factory = new Injector($dic, new BaseDependencyMap());
60 
61  $a = new IntegerValue();
62  $a->setValue(1);
63  $b = new IntegerValue();
64  $b->setValue(2);
65  $c = new IntegerValue();
66  $c->setValue(3);
67 
69  $t1 = $factory->createInstance(PlusJob::class);
70  $t1->setInput([$a, $b]);
71 
73  $t2 = $factory->createInstance(PlusJob::class);
74  $t2->setInput([$t1, $c]);
75 
76  $this->assertTrue($t2->getOutputType()->equals(new SingleType(IntegerValue::class)));
77 
78  $taskManager = new SyncTaskManager(Mockery::mock(Persistence::class));
80  $finalValue = $taskManager->executeTask($t2, new MockObserver());
81  $this->assertEquals($finalValue->getValue(), 6);
82  }
83 
84  public function testValueWrapper(): void
85  {
86  $dic = new Container();
87  $dic[Bucket::class] = (fn($c): BucketMock => new BucketMock());
88  $factory = new Injector($dic, new BaseDependencyMap());
89 
90  $t = $factory->createInstance(PlusJob::class);
91  $t->setInput([1, 4]);
92 
93  $taskManager = new SyncTaskManager(Mockery::mock(Persistence::class));
95  $finalValue = $taskManager->executeTask($t, new MockObserver());
96  $this->assertEquals($finalValue->getValue(), 5);
97  }
98 
99  public function testTypeCheck(): void
100  {
101  $this->expectException(InvalidArgumentException::class);
102 
103  $dic = new Container();
104  $dic[Bucket::class] = (fn($c): BucketMock => new BucketMock());
105  $factory = new Injector($dic, new BaseDependencyMap());
106 
107  $a = new IntegerValue(1);
108  $b = new StringValue("hello");
109 
111  $t1 = $factory->createInstance(PlusJob::class);
112  $t1->setInput([$a, $b]);
113  }
114 
115  public function testAggregation(): void
116  {
117  $dic = new Container();
118  $factory = new Injector($dic, new BaseDependencyMap());
119 
120  $list = new ListValue();
121  $list->setValue([1, "hello", 3.0]);
122 
124  $t1 = $factory->createInstance(ConcatenationJob::class);
125  $t1->setInput([$list]);
126 
127  $output = $t1->run([$list], new MockObserver());
128  $this->assertEquals($output->getValue(), "1, hello, 3");
129  }
130 
131  public function testUnfoldTask(): void
132  {
133  $dic = new Container();
134  $dic[Bucket::class] = (fn($c): BasicBucket => new BasicBucket());
135 
136  $factory = new Injector($dic, new BaseDependencyMap());
137 
141  $t0 = $factory->createInstance(PlusJob::class);
142  $t0->setInput([1, 1]);
143 
145  $t1 = $factory->createInstance(PlusJob::class);
146  $t1->setInput([$t0, 2]);
147 
149  $t25 = $factory->createInstance(PlusJob::class);
150  $t25->setInput([2, 2]);
151 
153  $t2 = $factory->createInstance(PlusJob::class);
154  $t2->setInput([$t1, $t25]);
155 
156  $this->assertTrue($t2->getOutputType()->equals(new SingleType(IntegerValue::class)));
157 
158  $list = $t2->unfoldTask();
159  $this->assertEquals($list, [$t2, $t1, $t0, $t25]);
160 
162  $taskManager = new SyncTaskManager(Mockery::mock(Persistence::class));
164  $finalValue = $taskManager->executeTask($t2, new MockObserver());
165  $this->assertEquals($finalValue->getValue(), 8);
166  }
167 }
$c
Definition: deliver.php:25
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:35
Class BackgroundTaskTest.
Definition: TaskTestTBD.php:53
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples
$dic
Definition: result.php:31