TextCombatLogRenderTest::generateCharacter()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 4
c 1
b 0
f 0
dl 0
loc 7
rs 10
cc 1
nc 1
nop 1
1
<?php
2
declare(strict_types=1);
3
4
namespace HeroesofAbenez\Combat;
5
6
require __DIR__ . "/../../bootstrap.php";
7
8
use Tester\Assert;
9
use HeroesofAbenez\Combat\CombatActions;
10
11
/**
12
 * @author Jakub Konečný
13
 * @testCase
14
 */
15
final class TextCombatLogRenderTest extends \Tester\TestCase
16
{
17
    use \Testbench\TCompiledContainer;
18
19
    private function generateCharacter(int $id): Character
20
    {
21
        $stats = [
22
            "id" => $id, "name" => "Player $id", "level" => 1, "initiativeFormula" => "1d2+DEX/4", "strength" => 10,
23
            "dexterity" => 10, "constitution" => 10, "intelligence" => 10, "charisma" => 10
24
        ];
25
        return new Character($stats);
26
    }
27
28
    public function testRendering(): void
29
    {
30
        /** @var TextCombatLogRender $render */
31
        $render = $this->getService(TextCombatLogRender::class);
32
        /** @var CombatLogger $logger */
33
        $logger = $this->getService(CombatLogger::class);
34
        $team1 = new Team("Team 1");
35
        $team1[] = $character1 = $this->generateCharacter(1);
36
        $team2 = new Team("Team 2");
37
        $team2[] = $character2 = $this->generateCharacter(2);
38
        $logger->setTeams($team1, $team2);
39
        $logger->round = 1;
40
        $logger->logText("abc.abc");
41
        $logger->log([
42
            "action" => CombatActions\Attack::ACTION_NAME, "name" => "", "result" => true, "amount" => 1,
43
            "character1" => $character1, "character2" => $character2,
44
        ]);
45
        $logger->log([
46
            "action" => CombatActions\Attack::ACTION_NAME, "name" => "", "result" => false, "amount" => 1,
47
            "character1" => $character2, "character2" => $character1,
48
        ]);
49
        $logger->round = 2;
50
        $logger->log([
51
            "action" => CombatActions\SkillAttack::ACTION_NAME, "name" => "Abc", "result" => true, "amount" => 1,
52
            "character1" => $character1, "character2" => $character2,
53
        ]);
54
        $logger->log([
55
            "action" => CombatActions\SkillAttack::ACTION_NAME, "name" => "Def", "result" => false, "amount" => 1,
56
            "character1" => $character2, "character2" => $character1,
57
        ]);
58
        $logger->log([
59
            "action" => CombatActions\SkillSpecial::ACTION_NAME, "name" => "Abc", "result" => true, "amount" => 1,
60
            "character1" => $character1, "character2" => $character2,
61
        ]);
62
        $logger->log([
63
            "action" => CombatActions\SkillSpecial::ACTION_NAME, "name" => "Def", "result" => false, "amount" => 1,
64
            "character1" => $character2, "character2" => $character1,
65
        ]);
66
        $logger->log([
67
            "action" => CombatActions\Heal::ACTION_NAME, "name" => "", "result" => true, "amount" => 1,
68
            "character1" => $character1, "character2" => $character2,
69
        ]);
70
        $logger->log([
71
            "action" => CombatActions\Heal::ACTION_NAME, "name" => "", "result" => false, "amount" => 1,
72
            "character1" => $character2, "character2" => $character1,
73
        ]);
74
        $logger->log([
75
            "action" => CombatLogEntry::ACTION_POISON, "name" => "", "result" => true, "amount" => 1,
76
            "character1" => $character1, "character2" => $character2,
77
        ]);
78
        $params = [
79
            "team1" => $team1, "team2" => $team2, "actions" => $logger->getIterator(), "title" => "",
80
        ];
81
        Assert::same(file_get_contents(__DIR__ . "/CombatLogExpected.latte"), $render->render($params));
82
    }
83
}
84
85
$test = new TextCombatLogRenderTest();
86
$test->run();
87