xref: /dokuwiki/_test/tests/inc/common_dokupref.test.php (revision 3f108b378b26a51a8deb0e3ec08ce3ed6342d5af)
15833995aSPhy<?php
25833995aSPhy
35833995aSPhyclass common_dokupref_test extends DokuWikiTest {
45833995aSPhy
55833995aSPhy    function test_get_default() {
65833995aSPhy        $this->assertEquals('nil', get_doku_pref('foo', 'nil'));
75833995aSPhy    }
85833995aSPhy
95833995aSPhy    function test_set() {
105833995aSPhy        set_doku_pref('foo1', 'bar1');
115833995aSPhy        set_doku_pref('foo2', 'bar2');
12df69dadaSPhy        $this->assertEquals('bar1', get_doku_pref('foo1', 'nil'));
13df69dadaSPhy        $this->assertEquals('bar2', get_doku_pref('foo2', 'nil'));
14df69dadaSPhy    }
15df69dadaSPhy
16df69dadaSPhy    function test_set_encode() {
17df69dadaSPhy        set_doku_pref('foo#1', 'bar#1');
18df69dadaSPhy        set_doku_pref('foo#2', 'bar2');
19df69dadaSPhy        $this->assertEquals('bar#1', get_doku_pref('foo#1', 'nil'));
20df69dadaSPhy        $this->assertEquals('bar2', get_doku_pref('foo#2', 'nil'));
21df69dadaSPhy
22df69dadaSPhy        set_doku_pref('foo#2', 'bar#2');
23df69dadaSPhy        $this->assertEquals('bar#1', get_doku_pref('foo#1', 'nil'));
24df69dadaSPhy        $this->assertEquals('bar#2', get_doku_pref('foo#2', 'nil'));
25df69dadaSPhy    }
26df69dadaSPhy
27df69dadaSPhy    // mitigate bug in #2721
28df69dadaSPhy    function test_duplicate_entries() {
29df69dadaSPhy        $_COOKIE['DOKU_PREFS'] = 'foo1#bar1#foo2#bar1#foo2#bar2';
30df69dadaSPhy        $this->assertEquals('bar2', get_doku_pref('foo2', 'nil'));
31df69dadaSPhy
32df69dadaSPhy        set_doku_pref('foo2', 'new2');
33df69dadaSPhy        $this->assertEquals('bar1', get_doku_pref('foo1', 'nil'));
34df69dadaSPhy        $this->assertEquals('new2', get_doku_pref('foo2', 'nil'));
35df69dadaSPhy        $this->assertEquals('foo1#bar1#foo2#new2', $_COOKIE['DOKU_PREFS'],
36df69dadaSPhy                            'cookie should not have duplicate entries');
37df69dadaSPhy    }
38df69dadaSPhy
39df69dadaSPhy    // This is a definition from #1129
40df69dadaSPhy    function test_empty() {
41df69dadaSPhy        set_doku_pref('foo', '');
42df69dadaSPhy        $this->assertSame('', get_doku_pref('foo', 'nil'));
43df69dadaSPhy
44df69dadaSPhy        set_doku_pref('foo', 0);
45df69dadaSPhy        $this->assertSame('0', get_doku_pref('foo', 'nil'));
46df69dadaSPhy
47df69dadaSPhy        set_doku_pref('foo', null);
48df69dadaSPhy        $this->assertSame('', get_doku_pref('foo', 'nil'));
49df69dadaSPhy
50df69dadaSPhy        set_doku_pref('foo', false);
51df69dadaSPhy        $this->assertSame('nil', get_doku_pref('foo', 'nil'));
525833995aSPhy    }
535833995aSPhy
545833995aSPhy    // #2721
555833995aSPhy    function test_set_empty_string() {
565833995aSPhy        set_doku_pref('foo1', 'bar1');
575833995aSPhy        set_doku_pref('foo2', 'bar1');
585833995aSPhy
595833995aSPhy        set_doku_pref('foo2', '');
605833995aSPhy        $this->assertEquals('bar1', get_doku_pref('foo1', 'nil'));
615833995aSPhy        $this->assertEquals('', get_doku_pref('foo2', 'nil'));
625833995aSPhy
635833995aSPhy        set_doku_pref('foo2', 'bar2');
645833995aSPhy        $this->assertEquals('bar1', get_doku_pref('foo1', 'nil'));
655833995aSPhy        $this->assertEquals('bar2', get_doku_pref('foo2', 'nil'));
66df69dadaSPhy        $this->assertEquals('foo1#bar1#foo2#bar2', $_COOKIE['DOKU_PREFS'],
67df69dadaSPhy                            'cookie should not have duplicate entries');
685833995aSPhy    }
695833995aSPhy
705833995aSPhy    // #2721
715833995aSPhy    function test_set_delete() {
725833995aSPhy        set_doku_pref('foo1', 'bar1');
735833995aSPhy        set_doku_pref('foo2', 'bar2');
745833995aSPhy
755833995aSPhy        set_doku_pref('foo1', false);
765833995aSPhy        $this->assertEquals('nil', get_doku_pref('foo1', 'nil'));
775833995aSPhy        $this->assertEquals('bar2', get_doku_pref('foo2', 'nil'));
785833995aSPhy
795833995aSPhy        set_doku_pref('foo2', false);
805833995aSPhy        $this->assertEquals('nil', get_doku_pref('foo1', 'nil'));
815833995aSPhy        $this->assertEquals('nil', get_doku_pref('foo2', 'nil'));
825833995aSPhy    }
835833995aSPhy
84*3f108b37SAndreas Gohr    // #4544
85*3f108b37SAndreas Gohr    function test_set_same() {
86*3f108b37SAndreas Gohr        set_doku_pref('foo1', 'bar1');
87*3f108b37SAndreas Gohr        $this->assertEquals('bar1', get_doku_pref('foo1', 'nil'), 'first set');
88*3f108b37SAndreas Gohr
89*3f108b37SAndreas Gohr        set_doku_pref('foo2', 'bar2');
90*3f108b37SAndreas Gohr        $this->assertEquals('bar1', get_doku_pref('foo1', 'nil'), 'second set');
91*3f108b37SAndreas Gohr        $this->assertEquals('bar2', get_doku_pref('foo2', 'nil'), 'second set');
92*3f108b37SAndreas Gohr
93*3f108b37SAndreas Gohr        // setting the same value for foo2 should not destroy the cookie
94*3f108b37SAndreas Gohr        set_doku_pref('foo2', 'bar2');
95*3f108b37SAndreas Gohr        $this->assertEquals('bar1', get_doku_pref('foo1', 'nil'), 'third set');
96*3f108b37SAndreas Gohr        $this->assertEquals('bar2', get_doku_pref('foo2', 'nil'), 'third set');
97*3f108b37SAndreas Gohr    }
985833995aSPhy}
995833995aSPhy
1005833995aSPhy//Setup VIM: ex: et ts=4 :
101