← Code-Übersicht

FlussLayoutTest.php

Pfad: tests/FlussLayoutTest.php

Ext: php

Größe: 1549 Bytes

Geändert: 2026-07-16 00:00:43+02

<?php
declare(strict_types=1);

namespace Tests;

use Demo\Infrastructure\Flow\FlussLayout;
use PHPUnit\Framework\TestCase;

/**
 * Prueft die Rang-/Spalten-Berechnung des Prozess-Fluss-Layouts.
 */
final class FlussLayoutTest extends TestCase
{
    /**
     * Registriert den Autoloader vor jedem Testfall.
     */
    protected function setUp(): void
    {
        $root = dirname(__DIR__);
        require_once $root . '/src/Autoloader.php';
        (new \Demo\Autoloader($root . '/src'))->register();
    }

    /**
     * Eine lineare Kette ergibt aufsteigende Raenge.
     */
    public function testLineareKette(): void
    {
        $r = (new FlussLayout())->berechne([1, 2, 3], [[1, 2], [2, 3]]);

        self::assertSame(0, $r['pos'][1]['rang']);
        self::assertSame(1, $r['pos'][2]['rang']);
        self::assertSame(2, $r['pos'][3]['rang']);
        self::assertSame(2, $r['maxRang']);
        self::assertSame(1, $r['maxSpalten']);
    }

    /**
     * Verzweigung und Zusammenfuehrung ergeben korrekte Raenge und Spalten.
     */
    public function testVerzweigungUndZusammenfuehrung(): void
    {
        $r = (new FlussLayout())->berechne([1, 2, 3, 4], [[1, 2], [1, 3], [2, 4], [3, 4]]);

        self::assertSame(0, $r['pos'][1]['rang']);
        self::assertSame(1, $r['pos'][2]['rang']);
        self::assertSame(1, $r['pos'][3]['rang']);
        self::assertSame(2, $r['pos'][4]['rang']);
        self::assertSame(2, $r['maxSpalten']);
        self::assertNotSame($r['pos'][2]['spalte'], $r['pos'][3]['spalte']);
    }
}