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