xref: /plugin/strata/_test/types.test.php (revision 5153720fcc1dd2b6e63035d45f7c2bc32e429371)
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