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