Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
50.00% covered (danger)
50.00%
6 / 12
50.00% covered (danger)
50.00%
3 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 1
FunctionCallExpression
50.00% covered (danger)
50.00%
6 / 12
50.00% covered (danger)
50.00%
3 / 6
13.12
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 toTypescript
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 toJavascript
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 providesDefinitions
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 needsDefinitions
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 createRandom
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2namespace Apie\TypescriptCodeBuilder\Dto\Expressions;
3
4use Apie\Core\Attributes\FakeMethod;
5use Apie\TypescriptCodeBuilder\Lists\ExpressionList;
6use Apie\TypescriptCodeBuilder\Lists\JavascriptIdentifierList;
7use Apie\TypescriptCodeBuilder\TypescriptFileExpressionInterface;
8use Faker\Generator;
9
10#[FakeMethod('createRandom')]
11class FunctionCallExpression implements TypescriptFileExpressionInterface
12{
13    public function __construct(
14        public TypescriptFileExpressionInterface $function,
15        public ExpressionList $arguments = new ExpressionList()
16    ) {
17    }
18
19    public function toTypescript(): string
20    {
21        return $this->function->toTypescript() . '(' . $this->arguments->toTypescript() . ')';
22    }
23    public function toJavascript(): string
24    {
25        return $this->function->toJavascript() . '(' . $this->arguments->toJavascript() . ')';
26    }
27    public function providesDefinitions(): JavascriptIdentifierList
28    {
29        return new JavascriptIdentifierList();
30    }
31    public function needsDefinitions(): JavascriptIdentifierList
32    {
33        $definitions = $this->function->needsDefinitions();
34        foreach ($this->arguments->needsDefinitions() as $definition) {
35            $definitions = $definitions->append($definition);
36        }
37        return $definitions;
38    }
39
40    public static function createRandom(Generator $faker): self
41    {
42        return new self(
43            $faker->fakeClass(IdentifierExpression::class),
44            $faker->fakeClass(ExpressionList::class)
45        );
46    }
47}