xref: /dokuwiki/_test/tests/Search/Query/PageSetTest.php (revision ede4646658cf51245060332d97a319a39c788ea1)
1<?php
2
3namespace dokuwiki\test\Search\Query;
4
5use dokuwiki\Search\Query\PageSet;
6
7class PageSetTest extends \DokuWikiTest
8{
9    public function testIntersect()
10    {
11        $a = new PageSet(['p1' => 2, 'p2' => 3, 'p3' => 1]);
12        $b = new PageSet(['p1' => 1, 'p3' => 4]);
13
14        $result = $a->intersect($b);
15
16        $this->assertEquals(['p1' => 3, 'p3' => 5], $result->getPages());
17    }
18
19    public function testUnite()
20    {
21        $a = new PageSet(['p1' => 2, 'p2' => 3]);
22        $b = new PageSet(['p1' => 1, 'p3' => 4]);
23
24        $result = $a->unite($b);
25
26        $this->assertEquals(['p1' => 3, 'p2' => 3, 'p3' => 4], $result->getPages());
27    }
28
29    public function testSubtract()
30    {
31        $a = new PageSet(['p1' => 2, 'p2' => 3, 'p3' => 1]);
32        $b = new PageSet(['p2' => 1]);
33
34        $result = $a->subtract($b);
35
36        $this->assertEquals(['p1' => 2, 'p3' => 1], $result->getPages());
37    }
38
39    public function testIsEmpty()
40    {
41        $this->assertTrue((new PageSet())->isEmpty());
42        $this->assertTrue((new PageSet([]))->isEmpty());
43        $this->assertFalse((new PageSet(['p1' => 1]))->isEmpty());
44    }
45
46    public function testIntersectNoOverlap()
47    {
48        $a = new PageSet(['p1' => 1]);
49        $b = new PageSet(['p2' => 1]);
50
51        $this->assertEquals([], $a->intersect($b)->getPages());
52    }
53}
54