packages/ztd-query-core/tests/Unit/Shadow/Row/RowMultisetTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Shadow\Row;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\UsesClass;
9use PHPUnit\Framework\TestCase;
10use ZtdQuery\Shadow\Row\RowMatch;
11use ZtdQuery\Shadow\Row\RowMultiset;
12
13#[CoversClass(RowMultiset::class)]
14#[UsesClass(RowMatch::class)]
15final class RowMultisetTest extends TestCase
16{
17 public function testDifferenceAnswersTheRowsNothingOnTheOtherSidePairsWith(): void
18 {
19 self::assertSame(
20 [['id' => 2]],
21 (new RowMultiset())->difference([['id' => 1], ['id' => 2]], [['id' => 1]]),
22 );
23 }
24
25 public function testDifferencePairsOffARepeatedRowOnlyOnce(): void
26 {
27 self::assertSame(
28 [['id' => 1]],
29 (new RowMultiset())->difference([['id' => 1], ['id' => 1]], [['id' => 1]]),
30 );
31 }
32
33 public function testDifferenceIsNothingWhereEveryRowIsPairedOff(): void
34 {
35 self::assertSame([], (new RowMultiset())->difference([['id' => 1]], [['id' => 1], ['id' => 2]]));
36 }
37
38 public function testDifferenceIgnoresTheOrderTheColumnsWereReadIn(): void
39 {
40 self::assertSame(
41 [],
42 (new RowMultiset())->difference([['id' => 1, 'name' => 'a']], [['name' => 'a', 'id' => 1]]),
43 );
44 }
45}
46