xref: /dokuwiki/_test/tests/inc/pageutils_clean_id.test.php (revision 30f3bd15e697a50e85567a6d82d4f531f9b6c782)
1f8369d7dSTobias Sarnowski<?php
2f8369d7dSTobias Sarnowski
3f8369d7dSTobias Sarnowskiclass init_clean_id_test extends DokuWikiTest {
4f8369d7dSTobias Sarnowski
5f8369d7dSTobias Sarnowski    function teardown() {
6f8369d7dSTobias Sarnowski        global $cache_cleanid;
7f8369d7dSTobias Sarnowski        $cache_cleanid = array();
8f8369d7dSTobias Sarnowski    }
9f8369d7dSTobias Sarnowski
10f8369d7dSTobias Sarnowski    function test_default(){
11f8369d7dSTobias Sarnowski        // we test multiple cases here
12f8369d7dSTobias Sarnowski        // format: $id, $ascii, $correct_output
13f8369d7dSTobias Sarnowski        $tests   = array();
14f8369d7dSTobias Sarnowski
15f8369d7dSTobias Sarnowski        // set dokuwiki defaults
16f8369d7dSTobias Sarnowski        global $conf;
17f8369d7dSTobias Sarnowski        $conf['sepchar'] = '_';
18f8369d7dSTobias Sarnowski        $conf['deaccent'] = 1;
19f8369d7dSTobias Sarnowski
20f8369d7dSTobias Sarnowski        $tests[] = array('page',false,'page');
21f8369d7dSTobias Sarnowski        $tests[] = array('pa_ge',false,'pa_ge');
22f8369d7dSTobias Sarnowski        $tests[] = array('pa%ge',false,'pa_ge');
23f8369d7dSTobias Sarnowski        $tests[] = array('pa#ge',false,'pa_ge');
24f8369d7dSTobias Sarnowski        $tests[] = array('pàge',false,'page');
25f8369d7dSTobias Sarnowski        $tests[] = array('pagĖ',false,'page');
26f8369d7dSTobias Sarnowski        $tests[] = array('pa$%^*#ge',false,'pa_ge');
27f8369d7dSTobias Sarnowski        $tests[] = array('*page*',false,'page');
28f8369d7dSTobias Sarnowski        $tests[] = array('ښ',false,'ښ');
29f8369d7dSTobias Sarnowski        $tests[] = array('päge',false,'paege');
30f8369d7dSTobias Sarnowski        $tests[] = array('foo bar',false,'foo_bar');
31f8369d7dSTobias Sarnowski        $tests[] = array('PÄGÖ',false,'paegoe');
32f8369d7dSTobias Sarnowski        $tests[] = array('Faß','false','fass');
33f8369d7dSTobias Sarnowski        $tests[] = array('ښ侧化并곦  β',false,'ښ侧化并곦_β');
34f8369d7dSTobias Sarnowski        $tests[] = array('page:page',false,'page:page');
35f8369d7dSTobias Sarnowski        $tests[] = array('page;page',false,'page:page');
36f8369d7dSTobias Sarnowski        $tests[] = array('page:page 1.2',false,'page:page_1.2');
37f8369d7dSTobias Sarnowski
38f8369d7dSTobias Sarnowski        $tests[] = array('page._#!','false','page');
39f8369d7dSTobias Sarnowski        $tests[] = array('._#!page','false','page');
40f8369d7dSTobias Sarnowski        $tests[] = array('page._#!page','false','page._page');
41f8369d7dSTobias Sarnowski        $tests[] = array('ns._#!:page','false','ns:page');
42f8369d7dSTobias Sarnowski        $tests[] = array('ns:._#!page','false','ns:page');
43f8369d7dSTobias Sarnowski        $tests[] = array('ns._#!ns:page','false','ns._ns:page');
44f8369d7dSTobias Sarnowski        $tests[] = array('ns_:page',false,'ns:page');
45f8369d7dSTobias Sarnowski        $tests[] = array('page...page','false','page...page');
468ef75711SGerrit Uitslag        $tests[] = array('page---page','false','page---page');
478ef75711SGerrit Uitslag        $tests[] = array('page___page','false','page_page');
488ef75711SGerrit Uitslag        $tests[] = array('page_-.page','false','page_-.page');
49dcb2204bSKlap-in        $tests[] = array(':page',false,'page');
50dcb2204bSKlap-in        $tests[] = array(':ns:page',false,'ns:page');
51dcb2204bSKlap-in        $tests[] = array('page:',false,'page');
52dcb2204bSKlap-in        $tests[] = array('ns:page:',false,'ns:page');
53f8369d7dSTobias Sarnowski
54f8369d7dSTobias Sarnowski        $conf['useslash'] = 0;
55f8369d7dSTobias Sarnowski        $tests[] = array('page/page',false,'page_page');
56f8369d7dSTobias Sarnowski
57f8369d7dSTobias Sarnowski        foreach($tests as $test){
58f8369d7dSTobias Sarnowski            $this->assertEquals(cleanID($test[0],$test[1]),$test[2]);
59f8369d7dSTobias Sarnowski        }
60f8369d7dSTobias Sarnowski
61f8369d7dSTobias Sarnowski        $conf['useslash'] = 1;
62f8369d7dSTobias Sarnowski        $tests = array();
63f8369d7dSTobias Sarnowski        $tests[] = array('page/page',false,'page:page');
64f8369d7dSTobias Sarnowski
65f8369d7dSTobias Sarnowski        $this->teardown();
66f8369d7dSTobias Sarnowski
67f8369d7dSTobias Sarnowski        foreach($tests as $test){
68f8369d7dSTobias Sarnowski            $this->assertEquals(cleanID($test[0],$test[1]),$test[2]);
69f8369d7dSTobias Sarnowski        }
70f8369d7dSTobias Sarnowski    }
71f8369d7dSTobias Sarnowski
72f8369d7dSTobias Sarnowski    function test_sepchar(){
73f8369d7dSTobias Sarnowski        // we test multiple cases here
74f8369d7dSTobias Sarnowski        // format: $id, $ascii, $correct_output
75f8369d7dSTobias Sarnowski        $tests   = array();
76f8369d7dSTobias Sarnowski
77f8369d7dSTobias Sarnowski        global $conf;
78f8369d7dSTobias Sarnowski        $conf['sepchar'] = '-';
79f8369d7dSTobias Sarnowski        $conf['deaccent'] = 1;
80f8369d7dSTobias Sarnowski
81f8369d7dSTobias Sarnowski        $tests[] = array('pa-ge',false,'pa-ge');
82f8369d7dSTobias Sarnowski        $tests[] = array('pa%ge',false,'pa-ge');
83f8369d7dSTobias Sarnowski
84f8369d7dSTobias Sarnowski        foreach($tests as $test){
85f8369d7dSTobias Sarnowski            $this->assertEquals(cleanID($test[0],$test[1]),$test[2]);
86f8369d7dSTobias Sarnowski        }
87f8369d7dSTobias Sarnowski    }
88f8369d7dSTobias Sarnowski
89f8369d7dSTobias Sarnowski    function test_deaccent_keep(){
90f8369d7dSTobias Sarnowski        // we test multiple cases here
91f8369d7dSTobias Sarnowski        // format: $id, $ascii, $correct_output
92f8369d7dSTobias Sarnowski        $tests   = array();
93f8369d7dSTobias Sarnowski
94f8369d7dSTobias Sarnowski        global $conf;
95f8369d7dSTobias Sarnowski        $conf['sepchar'] = '_';
96f8369d7dSTobias Sarnowski        $conf['deaccent'] = 0;
97f8369d7dSTobias Sarnowski
98f8369d7dSTobias Sarnowski        $tests[] = array('pàge',false,'pàge');
99f8369d7dSTobias Sarnowski        $tests[] = array('pagĖ',false,'pagė');
100f8369d7dSTobias Sarnowski        $tests[] = array('pagĒēĔĕĖėĘęĚě',false,'pagēēĕĕėėęęěě');
101f8369d7dSTobias Sarnowski        $tests[] = array('ښ',false,'ښ');
102f8369d7dSTobias Sarnowski        $tests[] = array('ښ侧化并곦ঝഈβ',false,'ښ侧化并곦ঝഈβ');
103f8369d7dSTobias Sarnowski
104f8369d7dSTobias Sarnowski        foreach($tests as $test){
105f8369d7dSTobias Sarnowski            $this->assertEquals(cleanID($test[0],$test[1]),$test[2]);
106f8369d7dSTobias Sarnowski        }
107f8369d7dSTobias Sarnowski    }
108f8369d7dSTobias Sarnowski
109f8369d7dSTobias Sarnowski    function test_deaccent_romanize(){
110f8369d7dSTobias Sarnowski        // we test multiple cases here
111f8369d7dSTobias Sarnowski        // format: $id, $ascii, $correct_output
112f8369d7dSTobias Sarnowski        $tests   = array();
113f8369d7dSTobias Sarnowski
114f8369d7dSTobias Sarnowski        global $conf;
115f8369d7dSTobias Sarnowski        $conf['sepchar'] = '_';
116f8369d7dSTobias Sarnowski        $conf['deaccent'] = 2;
117f8369d7dSTobias Sarnowski
118f8369d7dSTobias Sarnowski        $tests[] = array('pàge',false,'page');
119f8369d7dSTobias Sarnowski        $tests[] = array('pagĖ',false,'page');
120f8369d7dSTobias Sarnowski        $tests[] = array('pagĒēĔĕĖėĘęĚě',false,'pageeeeeeeeee');
121f8369d7dSTobias Sarnowski        $tests[] = array('ښ',false,'ښ');
122f8369d7dSTobias Sarnowski        $tests[] = array('ښ侧化并곦ঝഈβ',false,'ښ侧化并곦ঝഈβ');
123f8369d7dSTobias Sarnowski
124f8369d7dSTobias Sarnowski        foreach($tests as $test){
125f8369d7dSTobias Sarnowski            $this->assertEquals(cleanID($test[0],$test[1]),$test[2]);
126f8369d7dSTobias Sarnowski        }
127f8369d7dSTobias Sarnowski    }
128f8369d7dSTobias Sarnowski
129f8369d7dSTobias Sarnowski    function test_deaccent_ascii(){
130f8369d7dSTobias Sarnowski        // we test multiple cases here
131f8369d7dSTobias Sarnowski        // format: $id, $ascii, $correct_output
132f8369d7dSTobias Sarnowski        $tests   = array();
133f8369d7dSTobias Sarnowski
134f8369d7dSTobias Sarnowski        global $conf;
135f8369d7dSTobias Sarnowski        $conf['sepchar'] = '_';
136f8369d7dSTobias Sarnowski        $conf['deaccent'] = 0;
137f8369d7dSTobias Sarnowski
138f8369d7dSTobias Sarnowski        $tests[] = array('pàge',true,'page');
139f8369d7dSTobias Sarnowski        $tests[] = array('pagĖ',true,'page');
140f8369d7dSTobias Sarnowski        $tests[] = array('pagĒēĔĕĖėĘęĚě',true,'pageeeeeeeeee');
141f8369d7dSTobias Sarnowski        $tests[] = array('ښ',true,'');
142f8369d7dSTobias Sarnowski        $tests[] = array('ښ侧化并곦ঝഈβ',true,'');
143f8369d7dSTobias Sarnowski
144f8369d7dSTobias Sarnowski        foreach($tests as $test){
145f8369d7dSTobias Sarnowski            $this->assertEquals(cleanID($test[0],$test[1]),$test[2]);
146f8369d7dSTobias Sarnowski        }
147f8369d7dSTobias Sarnowski
148f8369d7dSTobias Sarnowski        $conf['deaccent'] = 1;
149f8369d7dSTobias Sarnowski
150f8369d7dSTobias Sarnowski        foreach($tests as $test){
151f8369d7dSTobias Sarnowski            $this->assertEquals(cleanID($test[0],$test[1]),$test[2]);
152f8369d7dSTobias Sarnowski        }
153f8369d7dSTobias Sarnowski
154f8369d7dSTobias Sarnowski        $conf['deaccent'] = 2;
155f8369d7dSTobias Sarnowski
156f8369d7dSTobias Sarnowski        foreach($tests as $test){
157f8369d7dSTobias Sarnowski            $this->assertEquals(cleanID($test[0],$test[1]),$test[2]);
158f8369d7dSTobias Sarnowski        }
159f8369d7dSTobias Sarnowski    }
160f8369d7dSTobias Sarnowski
161*30f3bd15SMichael Grosse    function test_caching_ascii() {
162*30f3bd15SMichael Grosse        global $conf;
163*30f3bd15SMichael Grosse        $conf['deaccent'] = 0;
164*30f3bd15SMichael Grosse        $this->assertEquals('pàge', cleanID('pàge',false));
165*30f3bd15SMichael Grosse        $this->assertEquals('page', cleanID('pàge',true));
166*30f3bd15SMichael Grosse
167*30f3bd15SMichael Grosse        $this->assertEquals('page', cleanID('pagĖ',true));
168*30f3bd15SMichael Grosse        $this->assertEquals('pagė', cleanID('pagĖ',false));
169*30f3bd15SMichael Grosse    }
170*30f3bd15SMichael Grosse
171f8369d7dSTobias Sarnowski}
172f8369d7dSTobias Sarnowski//Setup VIM: ex: et ts=4 :
173