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