xref: /plugin/struct/_test/ValueTest.php (revision 8fed17f342cc190557a6ce94d1787f9e2f63cb6c)
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