1*8fed17f3SAndreas Gohr<?php 2*8fed17f3SAndreas Gohr 3*8fed17f3SAndreas Gohrnamespace dokuwiki\plugin\struct\test; 4*8fed17f3SAndreas Gohr 5*8fed17f3SAndreas Gohruse dokuwiki\plugin\struct\meta\Column; 6*8fed17f3SAndreas Gohruse dokuwiki\plugin\struct\meta\Value; 7*8fed17f3SAndreas Gohruse dokuwiki\plugin\struct\types\Text; 8*8fed17f3SAndreas Gohr 9*8fed17f3SAndreas Gohr/** 10*8fed17f3SAndreas Gohr * @group plugin_struct 11*8fed17f3SAndreas Gohr * @group plugins 12*8fed17f3SAndreas Gohr */ 13*8fed17f3SAndreas Gohrclass ValueTest extends StructTest 14*8fed17f3SAndreas Gohr{ 15*8fed17f3SAndreas Gohr 16*8fed17f3SAndreas Gohr /** 17*8fed17f3SAndreas Gohr * @param bool $multi 18*8fed17f3SAndreas Gohr * @return Column 19*8fed17f3SAndreas Gohr */ 20*8fed17f3SAndreas Gohr protected function makeColumn($multi) 21*8fed17f3SAndreas Gohr { 22*8fed17f3SAndreas Gohr return new Column(10, new Text(null, '', $multi)); 23*8fed17f3SAndreas Gohr } 24*8fed17f3SAndreas Gohr 25*8fed17f3SAndreas Gohr /** 26*8fed17f3SAndreas Gohr * Test setting and getting multi values 27*8fed17f3SAndreas Gohr */ 28*8fed17f3SAndreas Gohr public function test_multi() 29*8fed17f3SAndreas Gohr { 30*8fed17f3SAndreas Gohr $col = $this->makeColumn(true); 31*8fed17f3SAndreas Gohr $val = new Value($col, ['one', 'two']); 32*8fed17f3SAndreas Gohr $this->assertSame($col, $val->getColumn()); 33*8fed17f3SAndreas Gohr $this->assertEquals(['one', 'two'], $val->getValue()); 34*8fed17f3SAndreas Gohr 35*8fed17f3SAndreas Gohr $val->setValue(['one', '', 'two', '']); 36*8fed17f3SAndreas Gohr $this->assertEquals(['one', 'two'], $val->getValue()); 37*8fed17f3SAndreas Gohr 38*8fed17f3SAndreas Gohr $val->setValue(['one', '0', 'two']); 39*8fed17f3SAndreas Gohr $this->assertEquals(['one', '0', 'two'], $val->getValue()); 40*8fed17f3SAndreas Gohr 41*8fed17f3SAndreas Gohr $val->setValue(['', null, false, " \n"]); 42*8fed17f3SAndreas Gohr $this->assertEquals([], $val->getValue()); 43*8fed17f3SAndreas Gohr 44*8fed17f3SAndreas Gohr $val->setValue(''); 45*8fed17f3SAndreas Gohr $this->assertEquals([], $val->getValue()); 46*8fed17f3SAndreas Gohr 47*8fed17f3SAndreas Gohr $val->setValue('0'); 48*8fed17f3SAndreas Gohr $this->assertEquals(['0'], $val->getValue()); 49*8fed17f3SAndreas Gohr 50*8fed17f3SAndreas Gohr $val->setValue(0); 51*8fed17f3SAndreas Gohr $this->assertEquals(['0'], $val->getValue()); 52*8fed17f3SAndreas Gohr 53*8fed17f3SAndreas Gohr $val->setValue([]); 54*8fed17f3SAndreas Gohr $this->assertEquals([], $val->getValue()); 55*8fed17f3SAndreas Gohr } 56*8fed17f3SAndreas Gohr 57*8fed17f3SAndreas Gohr /** 58*8fed17f3SAndreas Gohr * Test setting and getting single values 59*8fed17f3SAndreas Gohr */ 60*8fed17f3SAndreas Gohr public function test_single() 61*8fed17f3SAndreas Gohr { 62*8fed17f3SAndreas Gohr $col = $this->makeColumn(false); 63*8fed17f3SAndreas Gohr $val = new Value($col, 'one'); 64*8fed17f3SAndreas Gohr $this->assertSame($col, $val->getColumn()); 65*8fed17f3SAndreas Gohr $this->assertEquals('one', $val->getValue()); 66*8fed17f3SAndreas Gohr 67*8fed17f3SAndreas Gohr $val->setValue('0'); 68*8fed17f3SAndreas Gohr $this->assertEquals('0', $val->getValue()); 69*8fed17f3SAndreas Gohr 70*8fed17f3SAndreas Gohr $val->setValue(''); 71*8fed17f3SAndreas Gohr $this->assertEquals('', $val->getValue()); 72*8fed17f3SAndreas Gohr 73*8fed17f3SAndreas Gohr $val->setValue(" \n"); 74*8fed17f3SAndreas Gohr $this->assertEquals('', $val->getValue()); 75*8fed17f3SAndreas Gohr 76*8fed17f3SAndreas Gohr $val->setValue(null); 77*8fed17f3SAndreas Gohr $this->assertEquals('', $val->getValue()); 78*8fed17f3SAndreas Gohr 79*8fed17f3SAndreas Gohr $val->setValue(false); 80*8fed17f3SAndreas Gohr $this->assertEquals('', $val->getValue()); 81*8fed17f3SAndreas Gohr 82*8fed17f3SAndreas Gohr $val->setValue(['what', 'the', 'foo']); 83*8fed17f3SAndreas Gohr $this->assertEquals('what', $val->getValue()); 84*8fed17f3SAndreas Gohr 85*8fed17f3SAndreas Gohr $val->setValue([]); 86*8fed17f3SAndreas Gohr $this->assertEquals('', $val->getValue()); 87*8fed17f3SAndreas Gohr 88*8fed17f3SAndreas Gohr $val->setValue(" * hi\n * ho"); 89*8fed17f3SAndreas Gohr $this->assertEquals(" * hi\n * ho", $val->getValue()); 90*8fed17f3SAndreas Gohr } 91*8fed17f3SAndreas Gohr 92*8fed17f3SAndreas Gohr /** 93*8fed17f3SAndreas Gohr * empty values should not render 94*8fed17f3SAndreas Gohr */ 95*8fed17f3SAndreas Gohr public function test_blankrender() 96*8fed17f3SAndreas Gohr { 97*8fed17f3SAndreas Gohr $R = new \Doku_Renderer_xhtml(); 98*8fed17f3SAndreas Gohr 99*8fed17f3SAndreas Gohr $val = new Value($this->makeColumn(false), ''); 100*8fed17f3SAndreas Gohr $val->render($R, 'xhtml'); 101*8fed17f3SAndreas Gohr $this->assertEquals('', $R->doc); 102*8fed17f3SAndreas Gohr 103*8fed17f3SAndreas Gohr $val = new Value($this->makeColumn(true), array()); 104*8fed17f3SAndreas Gohr $val->render($R, 'xhtml'); 105*8fed17f3SAndreas Gohr $this->assertEquals('', $R->doc); 106*8fed17f3SAndreas Gohr } 107*8fed17f3SAndreas Gohr} 108