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