1*5153720fSfkaag71<?php 2*5153720fSfkaag71 3*5153720fSfkaag71/** 4*5153720fSfkaag71 * Tests types. 5*5153720fSfkaag71 * 6*5153720fSfkaag71 * @group plugin_strata 7*5153720fSfkaag71 * @group plugins 8*5153720fSfkaag71 */ 9*5153720fSfkaag71class types_test extends DokuWikiTest { 10*5153720fSfkaag71 11*5153720fSfkaag71 function setup() { 12*5153720fSfkaag71 $this->_types = new helper_plugin_strata_util(); 13*5153720fSfkaag71 } 14*5153720fSfkaag71 15*5153720fSfkaag71 function testString() { 16*5153720fSfkaag71 $type = $this->_types->loadType('text'); 17*5153720fSfkaag71 // Empty hint 18*5153720fSfkaag71 $s = $type->normalize('bob', ''); 19*5153720fSfkaag71 $this->assertEquals($s, 'bob'); 20*5153720fSfkaag71 // Empty hint 21*5153720fSfkaag71 $s = $type->normalize('Bob', ''); 22*5153720fSfkaag71 $this->assertEquals($s, 'Bob'); 23*5153720fSfkaag71 // Numerical hint 24*5153720fSfkaag71 $s = $type->normalize('Bob', 10); 25*5153720fSfkaag71 $this->assertEquals($s, 'Bob'); 26*5153720fSfkaag71 // String hint 27*5153720fSfkaag71 $s = $type->normalize('Bob', 'master'); 28*5153720fSfkaag71 $this->assertEquals($s, 'Bob'); 29*5153720fSfkaag71 // Whitespace 30*5153720fSfkaag71 $s = $type->normalize(' Bob ', ''); 31*5153720fSfkaag71 $this->assertEquals($s, ' Bob '); 32*5153720fSfkaag71 // Special characters 33*5153720fSfkaag71 $s = $type->normalize('Bob & Alice', ''); 34*5153720fSfkaag71 $this->assertEquals($s, 'Bob & Alice'); 35*5153720fSfkaag71 // Unicode 36*5153720fSfkaag71 $s = $type->normalize('Één ís één.', ''); 37*5153720fSfkaag71 $this->assertEquals($s, 'Één ís één.'); 38*5153720fSfkaag71 } 39*5153720fSfkaag71 40*5153720fSfkaag71 function testPage() { 41*5153720fSfkaag71 $type = $this->_types->loadType('page'); 42*5153720fSfkaag71 // Empty hint 43*5153720fSfkaag71 $s = $type->normalize('bob', ''); 44*5153720fSfkaag71 $this->assertEquals($s, 'bob'); 45*5153720fSfkaag71 // Empty hint 46*5153720fSfkaag71 $s = $type->normalize('Bob', ''); 47*5153720fSfkaag71 $this->assertEquals($s, 'bob'); 48*5153720fSfkaag71 // Numerical hint 49*5153720fSfkaag71 $s = $type->normalize('Bob', 10); 50*5153720fSfkaag71 $this->assertEquals($s, '10:bob'); 51*5153720fSfkaag71 // String hint 52*5153720fSfkaag71 $s = $type->normalize('Bob', 'master'); 53*5153720fSfkaag71 $this->assertEquals($s, 'master:bob'); 54*5153720fSfkaag71 // Whitespace 55*5153720fSfkaag71 $s = $type->normalize(' Bob ', ''); 56*5153720fSfkaag71 $this->assertEquals($s, 'bob'); 57*5153720fSfkaag71 // Special characters 58*5153720fSfkaag71 $s = $type->normalize('Bob & Alice', ''); 59*5153720fSfkaag71 $this->assertEquals($s, 'bob_alice'); 60*5153720fSfkaag71 // Unicode 61*5153720fSfkaag71 $s = $type->normalize('Één ís één.', ''); 62*5153720fSfkaag71 $this->assertEquals($s, 'een_is_een'); 63*5153720fSfkaag71 // Relative pathes 64*5153720fSfkaag71 $s = $type->normalize('..:.:Bob', 'master:user'); 65*5153720fSfkaag71 $this->assertEquals($s, 'master:bob'); 66*5153720fSfkaag71 $s = $type->normalize('.:..:Bob', 'master:user'); 67*5153720fSfkaag71 $this->assertEquals($s, 'master:bob'); 68*5153720fSfkaag71 // Fragments in url (link to namespace start) 69*5153720fSfkaag71 $s = $type->normalize(':#Bob', 'master:user'); 70*5153720fSfkaag71 $this->assertEquals($s, 'start#bob'); 71*5153720fSfkaag71 $s = $type->normalize('.:#Bob', 'master:user'); 72*5153720fSfkaag71 $this->assertEquals($s, 'master:user:start#bob'); 73*5153720fSfkaag71 $s = $type->normalize('..:#Bob', 'master:user'); 74*5153720fSfkaag71 $this->assertEquals($s, 'master:start#bob'); 75*5153720fSfkaag71 } 76*5153720fSfkaag71 77*5153720fSfkaag71 function testPageWithID() { 78*5153720fSfkaag71 // Set ID 79*5153720fSfkaag71 global $ID; 80*5153720fSfkaag71 $this->assertEquals($ID, null); // Test whether the test suite is initialised as expected. 81*5153720fSfkaag71 $ID = 'an_id:sub:current_page'; 82*5153720fSfkaag71 83*5153720fSfkaag71 $type = $this->_types->loadType('page'); 84*5153720fSfkaag71 // Empty hint 85*5153720fSfkaag71 $s = $type->normalize('bob', ''); 86*5153720fSfkaag71 $this->assertEquals($s, 'an_id:sub:bob'); 87*5153720fSfkaag71 // Empty hint 88*5153720fSfkaag71 $s = $type->normalize('Bob', ''); 89*5153720fSfkaag71 $this->assertEquals($s, 'an_id:sub:bob'); 90*5153720fSfkaag71 // Numerical hint 91*5153720fSfkaag71 $s = $type->normalize('Bob', 10); 92*5153720fSfkaag71 $this->assertEquals($s, '10:bob'); 93*5153720fSfkaag71 // String hint 94*5153720fSfkaag71 $s = $type->normalize('Bob', 'master'); 95*5153720fSfkaag71 $this->assertEquals($s, 'master:bob'); 96*5153720fSfkaag71 // Whitespace 97*5153720fSfkaag71 $s = $type->normalize(' Bob ', ''); 98*5153720fSfkaag71 $this->assertEquals($s, 'an_id:sub:bob'); 99*5153720fSfkaag71 // Special characters 100*5153720fSfkaag71 $s = $type->normalize('Bob & Alice', ''); 101*5153720fSfkaag71 $this->assertEquals($s, 'an_id:sub:bob_alice'); 102*5153720fSfkaag71 // Unicode 103*5153720fSfkaag71 $s = $type->normalize('Één ís één.', ''); 104*5153720fSfkaag71 $this->assertEquals($s, 'an_id:sub:een_is_een'); 105*5153720fSfkaag71 // Relative pathes w.r.t. given namespace 106*5153720fSfkaag71 $s = $type->normalize('..:.:Bob', 'master:user'); 107*5153720fSfkaag71 $this->assertEquals($s, 'master:bob'); 108*5153720fSfkaag71 $s = $type->normalize('.:..:Bob', 'master:user'); 109*5153720fSfkaag71 $this->assertEquals($s, 'master:bob'); 110*5153720fSfkaag71 // Fragments in url w.r.t. given namespace 111*5153720fSfkaag71 $s = $type->normalize('.:#Bob', 'master:user'); 112*5153720fSfkaag71 $this->assertEquals($s, 'master:user:start#bob'); 113*5153720fSfkaag71 $s = $type->normalize('..:#Bob', 'master:user'); 114*5153720fSfkaag71 $this->assertEquals($s, 'master:start#bob'); 115*5153720fSfkaag71 $s = $type->normalize('#Bob', 'master:user'); 116*5153720fSfkaag71 $this->assertEquals($s, 'an_id:sub:current_page#bob'); 117*5153720fSfkaag71 // Relative pathes w.r.t. ID 118*5153720fSfkaag71 $s = $type->normalize('..:.:Bob', ''); 119*5153720fSfkaag71 $this->assertEquals($s, 'an_id:bob'); 120*5153720fSfkaag71 $s = $type->normalize('.:..:Bob', ''); 121*5153720fSfkaag71 $this->assertEquals($s, 'an_id:bob'); 122*5153720fSfkaag71 // Fragments in url w.r.t. ID 123*5153720fSfkaag71 $s = $type->normalize('.:#Bob', ''); 124*5153720fSfkaag71 $this->assertEquals($s, 'an_id:sub:start#bob'); 125*5153720fSfkaag71 $s = $type->normalize('..:#Bob', ''); 126*5153720fSfkaag71 $this->assertEquals($s, 'an_id:start#bob'); 127*5153720fSfkaag71 $s = $type->normalize('#Bob', ''); 128*5153720fSfkaag71 $this->assertEquals($s, 'an_id:sub:current_page#bob'); 129*5153720fSfkaag71 $s = $type->normalize('Other Page#Bob', ''); 130*5153720fSfkaag71 $this->assertEquals($s, 'an_id:sub:other_page#bob'); 131*5153720fSfkaag71 132*5153720fSfkaag71 // Restore global to avoid interference with other tests 133*5153720fSfkaag71 $ID = null; 134*5153720fSfkaag71 } 135*5153720fSfkaag71 136*5153720fSfkaag71 function testRef() { 137*5153720fSfkaag71 $type = $this->_types->loadType('ref'); 138*5153720fSfkaag71 // Empty hint 139*5153720fSfkaag71 $s = $type->normalize('bob', ''); 140*5153720fSfkaag71 $this->assertEquals($s, 'bob'); 141*5153720fSfkaag71 // Empty hint 142*5153720fSfkaag71 $s = $type->normalize('Bob', ''); 143*5153720fSfkaag71 $this->assertEquals($s, 'bob'); 144*5153720fSfkaag71 // Numerical hint 145*5153720fSfkaag71 $s = $type->normalize('Bob', 10); 146*5153720fSfkaag71 $this->assertEquals($s, '10:bob'); 147*5153720fSfkaag71 // String hint 148*5153720fSfkaag71 $s = $type->normalize('Bob', 'master'); 149*5153720fSfkaag71 $this->assertEquals($s, 'master:bob'); 150*5153720fSfkaag71 // Whitespace 151*5153720fSfkaag71 $s = $type->normalize(' Bob ', ''); 152*5153720fSfkaag71 $this->assertEquals($s, 'bob'); 153*5153720fSfkaag71 // Special characters 154*5153720fSfkaag71 $s = $type->normalize('Bob & Alice', ''); 155*5153720fSfkaag71 $this->assertEquals($s, 'bob_alice'); 156*5153720fSfkaag71 // Unicode 157*5153720fSfkaag71 $s = $type->normalize('Één ís één.', ''); 158*5153720fSfkaag71 $this->assertEquals($s, 'een_is_een'); 159*5153720fSfkaag71 // Relative pathes 160*5153720fSfkaag71 $s = $type->normalize('..:.:Bob', 'master:user'); 161*5153720fSfkaag71 $this->assertEquals($s, 'master:bob'); 162*5153720fSfkaag71 $s = $type->normalize('.:..:Bob', 'master:user'); 163*5153720fSfkaag71 $this->assertEquals($s, 'master:bob'); 164*5153720fSfkaag71 // Fragments in url (link to namespace) 165*5153720fSfkaag71 $s = $type->normalize('.:#Bob', 'master:user'); 166*5153720fSfkaag71 $this->assertEquals($s, 'master:user:start#bob'); 167*5153720fSfkaag71 $s = $type->normalize('..:#Bob', 'master:user'); 168*5153720fSfkaag71 $this->assertEquals($s, 'master:start#bob'); 169*5153720fSfkaag71 $s = $type->normalize(':#Bob', 'master:user'); 170*5153720fSfkaag71 $this->assertEquals($s, 'start#bob'); 171*5153720fSfkaag71 } 172*5153720fSfkaag71 173*5153720fSfkaag71 function testImage() { 174*5153720fSfkaag71 $type = $this->_types->loadType('image'); 175*5153720fSfkaag71 // Empty hint 176*5153720fSfkaag71 $s = $type->normalize('bob.png', ''); 177*5153720fSfkaag71 $this->assertEquals($s, 'bob.png'); 178*5153720fSfkaag71 // Empty hint 179*5153720fSfkaag71 $s = $type->normalize('Bob.png', ''); 180*5153720fSfkaag71 $this->assertEquals($s, 'bob.png'); 181*5153720fSfkaag71 // Numerical hint 182*5153720fSfkaag71 $s = $type->normalize('Bob.png', 10); 183*5153720fSfkaag71 $this->assertEquals($s, 'bob.png'); 184*5153720fSfkaag71 // Whitespace 185*5153720fSfkaag71 $s = $type->normalize(' Bob.png ', ''); 186*5153720fSfkaag71 $this->assertEquals($s, 'bob.png'); 187*5153720fSfkaag71 // Special characters 188*5153720fSfkaag71 $s = $type->normalize('Bob & Alice.png', ''); 189*5153720fSfkaag71 $this->assertEquals($s, 'bob_alice.png'); 190*5153720fSfkaag71 // Unicode 191*5153720fSfkaag71 $s = $type->normalize('Één ís één.png', ''); 192*5153720fSfkaag71 $this->assertEquals($s, 'een_is_een.png'); 193*5153720fSfkaag71 } 194*5153720fSfkaag71} 195*5153720fSfkaag71 196