packages/deriver/tests/Unit/Reporter/TermGraphTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Reporter;
6
7use Deriver\Deriver\Evaluator\Term;
8use Deriver\Deriver\Evaluator\TermKind;
9use Deriver\Reporter\TermGraph;
10use PHPUnit\Framework\Attributes\CoversNothing;
11use PHPUnit\Framework\TestCase;
12
13#[CoversNothing]
14final class TermGraphTest extends TestCase
15{
16    public function testEncodeReferencesSharedOperandsWithoutDuplicatingThem(): void
17    {
18        $input = Term::parameter('name', 'string');
19        $term = new Term(TermKind::Concat, operands: [$input, $input]);
20        $encoded = (new TermGraph())->encode($term);
21        self::assertSame(0, $encoded['root']);
22        self::assertCount(2, $encoded['nodes']);
23        self::assertSame([1, 1], $encoded['nodes'][0]['operands']);
24        self::assertSame('name', $encoded['nodes'][1]['literal']);
25    }
26}
27