aboutsummaryrefslogtreecommitdiffstats
path: root/lib/htmlpurifier/tests/HTMLPurifier/StringHashParserTest.php
blob: 6d357f86ca8fd896f33c8bcc54d2c47b677715c4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php

/**
 * @note Sample input files are located in the StringHashParser/ directory.
 */
class HTMLPurifier_StringHashParserTest extends UnitTestCase
{

    /**
     * Instance of ConfigSchema_StringHashParser being tested.
     */
    protected $parser;

    public function setup() {
        $this->parser = new HTMLPurifier_StringHashParser();
    }

    /**
     * Assert that $file gets parsed into the form of $expect
     */
    protected function assertParse($file, $expect) {
        $result = $this->parser->parseFile(dirname(__FILE__) . '/StringHashParser/' . $file);
        $this->assertIdentical($result, $expect);
    }

    function testSimple() {
        $this->assertParse('Simple.txt', array(
            'ID' => 'Namespace.Directive',
            'TYPE' => 'string',
            'CHAIN-ME' => '2',
            'DESCRIPTION' => "Multiline\nstuff\n",
            'EMPTY' => '',
            'FOR-WHO' => "Single multiline\n",
        ));
    }

    function testOverrideSingle() {
        $this->assertParse('OverrideSingle.txt', array(
            'KEY' => 'New',
        ));
    }

    function testAppendMultiline() {
        $this->assertParse('AppendMultiline.txt', array(
            'KEY' => "Line1\nLine2\n",
        ));
    }

    function testDefault() {
        $this->parser->default = 'NEW-ID';
        $this->assertParse('Default.txt', array(
            'NEW-ID' => 'DefaultValue',
        ));
    }

    function testError() {
        try {
            $this->parser->parseFile('NoExist.txt');
        } catch (HTMLPurifier_ConfigSchema_Exception $e) {
            $this->assertIdentical($e->getMessage(), 'File NoExist.txt does not exist');
        }
    }

    function testParseMultiple() {
        $result = $this->parser->parseMultiFile(dirname(__FILE__) . '/StringHashParser/Multi.txt');
        $this->assertIdentical(
            $result,
            array(
                array(
                    'ID' => 'Namespace.Directive',
                    'TYPE' => 'string',
                    'CHAIN-ME' => '2',
                    'DESCRIPTION' => "Multiline\nstuff\n",
                    'FOR-WHO' => "Single multiline\n",
                ),
                array(
                    'ID' => 'Namespace.Directive2',
                    'TYPE' => 'integer',
                    'CHAIN-ME' => '3',
                    'DESCRIPTION' => "M\nstuff\n",
                    'FOR-WHO' => "Single multiline2\n",
                )
            )
        );
    }

}

// vim: et sw=4 sts=4