ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
TaskTestTBD.php
Go to the documentation of this file.
1 <?php
2 
36 
37 require_once("vendor/composer/vendor/autoload.php");
38 
49 class TaskTest extends TestCase
50 {
51  public function testPlusTask()
52  {
53  $dic = new Container();
54 
55  $factory = new Injector($dic, new BaseDependencyMap());
56 
57  $a = new IntegerValue();
58  $a->setValue(1);
59  $b = new IntegerValue();
60  $b->setValue(2);
61  $c = new IntegerValue();
62  $c->setValue(3);
63 
65  $t1 = $factory->createInstance(PlusJob::class);
66  $t1->setInput([$a, $b]);
67 
69  $t2 = $factory->createInstance(PlusJob::class);
70  $t2->setInput([$t1, $c]);
71 
72  $this->assertTrue($t2->getOutputType()->equals(new SingleType(IntegerValue::class)));
73 
74  $taskManager = new \ILIAS\BackgroundTasks\Implementation\TaskManager\SyncTaskManager(Mockery::mock(Persistence::class));
76  $finalValue = $taskManager->executeTask($t2, new MockObserver());
77  $this->assertEquals($finalValue->getValue(), 6);
78  }
79 
80  public function testValueWrapper()
81  {
82  $dic = new Container();
83  $dic[Bucket::class] = function ($c) {
84  return new BucketMock();
85  };
86  $factory = new Injector($dic, new BaseDependencyMap());
87 
88  $t = $factory->createInstance(PlusJob::class);
89  $t->setInput([1, 4]);
90 
91  $taskManager = new \ILIAS\BackgroundTasks\Implementation\TaskManager\SyncTaskManager(Mockery::mock(Persistence::class));
93  $finalValue = $taskManager->executeTask($t, new MockObserver());
94  $this->assertEquals($finalValue->getValue(), 5);
95  }
96 
97  public function testTypeCheck()
98  {
99  $this->expectException(InvalidArgumentException::class);
100 
101  $dic = new Container();
102  $dic[Bucket::class] = function ($c) {
103  return new BucketMock();
104  };
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()
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()
132  {
133  $dic = new Container();
134  $dic[Bucket::class] = function ($c) {
135  return new BasicBucket();
136  };
137 
138  $factory = new Injector($dic, new BaseDependencyMap());
139 
143  $t0 = $factory->createInstance(PlusJob::class);
144  $t0->setInput([1, 1]);
145 
147  $t1 = $factory->createInstance(PlusJob::class);
148  $t1->setInput([$t0, 2]);
149 
151  $t25 = $factory->createInstance(PlusJob::class);
152  $t25->setInput([2, 2]);
153 
155  $t2 = $factory->createInstance(PlusJob::class);
156  $t2->setInput([$t1, $t25]);
157 
158  $this->assertTrue($t2->getOutputType()->equals(new SingleType(IntegerValue::class)));
159 
160  $list = $t2->unfoldTask();
161  $this->assertEquals($list, [$t2, $t1, $t0, $t25]);
162 
164  $taskManager = new \ILIAS\BackgroundTasks\Implementation\TaskManager\SyncTaskManager(Mockery::mock(Persistence::class));
166  $finalValue = $taskManager->executeTask($t2, new MockObserver());
167  $this->assertEquals($finalValue->getValue(), 8);
168  }
169 }
$c
Definition: deliver.php:9
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:35
Class BackgroundTaskTest.
Definition: TaskTestTBD.php:49
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples
$dic
Definition: ltiresult.php:33