-
Notifications
You must be signed in to change notification settings - Fork 0
/
XmlAdapter.statement.phpt
45 lines (36 loc) · 1.49 KB
/
XmlAdapter.statement.phpt
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
<?php
/**
* Test: Sallyx\Nette\DI\Config\Adapters\XmlAdapter
*/
use Nette\DI\Config;
use Nette\DI\Statement;
use Tester\Assert;
require __DIR__ . '/../bootstrap.php';
define('TEMP_FILE', TEMP_DIR . '/cfg.xml');
$config = new Config\Loader;
$config->addAdapter('xml','Sallyx\Nette\DI\Config\Adapters\XmlAdapter');
$data = $config->load('files/xmlAdapter.entity.xml');
Assert::equal(array(
new Statement('ent', array(1)),
new Statement(array(
new Statement('ent', array(2)),
'inner',
),
array('3', '4')
),
new Statement(array(
new Statement('ent', array('3')),
'inner',
),
array('5','6')
),
), $data);
$data = $config->load('files/xmlAdapter.entity.xml');
$config->save($data, TEMP_FILE);
$actual = file_get_contents(TEMP_FILE);
$actual = preg_replace('/\<([^\s\/>]+)(\s*[^\/>]*)\/\s*\>/i', '<$1$2></$1>', $actual);
Assert::match(<<<EOD
<?xml version="1.0"?>
<config xmlns:nc="http://www.sallyx.org/xmlns/nette/config/1.0" xmlns="http://www.sallyx.org/xmlns/nette/config/1.0" array="numeric"><item statement="statement"><s><ent>ent</ent><args array="numeric"><item number="1"></item></args></s></item><item statement="statement"><s><ent>ent</ent><args array="numeric"><item number="2"></item></args></s><s><ent>inner</ent><args array="numeric"><item>3</item><item>4</item></args></s></item><item statement="statement"><s><ent>ent</ent><args array="numeric"><item>3</item></args></s><s><ent>inner</ent><args array="numeric"><item>5</item><item>6</item></args></s></item></config>
EOD
, $actual);