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
TypeCastExpression
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\Enums\TypescriptType;
6use Apie\TypescriptCodeBuilder\Lists\JavascriptIdentifierList;
7use Apie\TypescriptCodeBuilder\TypescriptFileExpressionInterface;
8use Apie\TypescriptCodeBuilder\TypescriptTypeDeclarationInterface;
9use Faker\Generator;
10
11#[FakeMethod('createRandom')]
12class TypeCastExpression implements TypescriptFileExpressionInterface
13{
14    public function __construct(public TypescriptTypeDeclarationInterface $type, public TypescriptFileExpressionInterface $expression)
15    {
16    }
17
18    public function toTypescript(): string
19    {
20        return '<' . $this->type->toTypescript() . '>' . $this->expression->toTypescript();
21    }
22    public function toJavascript(): string
23    {
24        return $this->expression->toJavascript();
25    }
26    public function providesDefinitions(): JavascriptIdentifierList
27    {
28        return new JavascriptIdentifierList();
29    }
30    public function needsDefinitions(): JavascriptIdentifierList
31    {
32        $definitions = $this->type->needsDefinitions();
33        foreach ($this->expression->needsDefinitions() as $definition) {
34            $definitions = $definitions->append($definition);
35        }
36        return $definitions;
37    }
38
39    public static function createRandom(Generator $faker): self
40    {
41        return new self(
42            TypescriptType::Any,
43            $faker->fakeClass($faker->randomElement([IdentifierExpression::class, BinaryOperationExpression::class])),
44        );
45    }
46}