xref: /dokuwiki/_test/tests/inc/indexer_indexing.test.php (revision e32b1b0ffe5e0c48ff8faed9c74099599659774c)
1a8dba452SMichael Hamann<?php
2a8dba452SMichael Hamann/**
3a8dba452SMichael Hamann * Tests the indexing functionality of the indexer
4a8dba452SMichael Hamann *
5a8dba452SMichael Hamann * @author Michael Hamann <michael@content-space.de>
6a8dba452SMichael Hamann */
7a8dba452SMichael Hamannclass indexer_indexing_test extends DokuWikiTest {
8*1c33cec3SAndreas Gohr    public function setUp() : void {
9a8dba452SMichael Hamann        parent::setUp();
10a8dba452SMichael Hamann        saveWikiText('testpage', 'Foo bar baz.', 'Test initialization');
11a8dba452SMichael Hamann        saveWikiText('notfound', 'Foon barn bazn.', 'Test initialization');
12a8dba452SMichael Hamann        idx_addPage('testpage');
13a8dba452SMichael Hamann        idx_addPage('notfound');
14a8dba452SMichael Hamann    }
15a8dba452SMichael Hamann
16a8dba452SMichael Hamann    public function test_words() {
17a8dba452SMichael Hamann        $indexer = idx_get_indexer();
18a8dba452SMichael Hamann        $query = array('baz', 'foo');
19a8dba452SMichael Hamann        $this->assertEquals(array('baz' => array('testpage' => 1), 'foo' => array('testpage' => 1)), $indexer->lookup($query));
20a8dba452SMichael Hamann    }
21a8dba452SMichael Hamann
22a8dba452SMichael Hamann    public function test_numerically_identical_words() {
23a8dba452SMichael Hamann        $indexer = idx_get_indexer();
24a8dba452SMichael Hamann        $indexer->addPageWords('testpage', '0x1 002');
25a8dba452SMichael Hamann        $indexer->addPageWords('notfound', '0x2');
26a8dba452SMichael Hamann        $query = array('001', '002');
279f5b9cf1SMichael Hamann        $this->assertEquals(array('001' => array(), '002' => array('testpage' => 1)), $indexer->lookup($query));
28a8dba452SMichael Hamann    }
29a8dba452SMichael Hamann
30a8dba452SMichael Hamann    public function test_meta() {
31a8dba452SMichael Hamann        $indexer = idx_get_indexer();
32a8dba452SMichael Hamann        $indexer->addMetaKeys('testpage', 'testkey', 'testvalue');
33a8dba452SMichael Hamann        $indexer->addMetaKeys('notfound', 'testkey', 'notvalue');
34a8dba452SMichael Hamann        $query = 'testvalue';
35a8dba452SMichael Hamann        $this->assertEquals(array('testpage'), $indexer->lookupKey('testkey', $query));
36a8dba452SMichael Hamann    }
37a8dba452SMichael Hamann
38a8dba452SMichael Hamann    public function test_numerically_identical_meta_values() {
39a8dba452SMichael Hamann        $indexer = idx_get_indexer();
40a8dba452SMichael Hamann        $indexer->addMetaKeys('testpage', 'numkey', array('0001', '01'));
41a8dba452SMichael Hamann        $indexer->addMetaKeys('notfound', 'numkey', array('00001', '000001'));
42a8dba452SMichael Hamann        $query = array('001', '01');
43a8dba452SMichael Hamann        $this->assertEquals(array('001' => array(), '01' => array('testpage')), $indexer->lookupKey('numkey', $query));
44a8dba452SMichael Hamann    }
455a1d0548SMichael Hamann
465a1d0548SMichael Hamann    public function test_numeric_twice() {
475a1d0548SMichael Hamann        $indexer = idx_get_indexer();
485a1d0548SMichael Hamann        $indexer->addPageWords('testpage', '| 1010 | Dallas |');
495a1d0548SMichael Hamann        $query = array('1010');
505a1d0548SMichael Hamann        $this->assertEquals(array('1010' => array('testpage' => 1)), $indexer->lookup($query));
515a1d0548SMichael Hamann        $indexer->addPageWords('notfound', '| 1010 | Dallas |');
525a1d0548SMichael Hamann        $this->assertEquals(array('1010' => array('testpage' => 1, 'notfound' => 1)), $indexer->lookup($query));
535a1d0548SMichael Hamann    }
545a1d0548SMichael Hamann
555a1d0548SMichael Hamann    public function test_numeric_twice_meta() {
565a1d0548SMichael Hamann        $indexer = idx_get_indexer();
575a1d0548SMichael Hamann        $indexer->addMetaKeys('testpage', 'onezero', array('1010'));
585a1d0548SMichael Hamann        $indexer->addMetaKeys('notfound', 'onezero', array('1010'));
595a1d0548SMichael Hamann        $query = '1010';
605a1d0548SMichael Hamann        $this->assertEquals(array('notfound', 'testpage'), $indexer->lookupKey('onezero', $query));
615a1d0548SMichael Hamann    }
62f1ce98a5SPhy
63f1ce98a5SPhy    public function test_numeric_zerostring_meta() {
64f1ce98a5SPhy        $indexer = idx_get_indexer();
65f1ce98a5SPhy        $indexer->addMetaKeys('zero1', 'zerostring', array('0'));
66f1ce98a5SPhy        $indexer->addMetaKeys('zero2', 'zerostring', array('0'));
67f1ce98a5SPhy        $indexer->addMetaKeys('0', 'zerostring', array('zero'));
68f1ce98a5SPhy
69f1ce98a5SPhy        $query = '0';
70f1ce98a5SPhy        $result = $indexer->lookupKey('zerostring', $query);
71f1ce98a5SPhy        sort($result);
72f1ce98a5SPhy        $this->assertEquals(array('zero1', 'zero2'), $result);
73f1ce98a5SPhy
74f1ce98a5SPhy        $query = 'zero';
75f1ce98a5SPhy        $result = $indexer->lookupKey('zerostring', $query);
76f1ce98a5SPhy        sort($result);
77f1ce98a5SPhy        $this->assertEquals(array('0'), $result);
78f1ce98a5SPhy    }
79a8dba452SMichael Hamann}
80