Project

General

Profile

Download (4.68 KB) Statistics
| Branch: | Tag: | Revision:
1
<?php
2
require_once("config.lib.inc");
3
use PHPUnit\Framework\TestCase;
4

    
5
class ConfigLibTest extends TestCase {
6
	public function test_config_get_path(): void {
7
		// Root element access
8
		$this->assertEquals("bar", config_get_path("foo"));
9
		// With leading /
10
		$this->assertEquals("bar", config_get_path("/foo"));
11
		// Unfound element returns default, even if non-null
12
		$this->assertNull(config_get_path("foobaz", null));
13
		$this->assertEquals("test", config_get_path("foobaz", "test"));
14
		// Subarray
15
		$this->assertIsArray(config_get_path("bar", null));
16
		$this->assertEquals("bang", config_get_path("bar/baz", null));
17
		// Root
18
		$this->assertIsArray(config_get_path("/"));
19
		// Sublist
20
		$this->assertEquals('one', config_get_path("sublist/0"));
21
		// Non-null default returned for key to empty element
22
		$this->assertEquals('', config_get_path('bar/foobang'));
23
		$this->assertEquals('foo', config_get_path('bar/foobang', 'foo'));
24
	}
25

    
26
	public function test_config_set_path(): void {
27
		// Root element
28
		$this->assertEquals("barbaz", config_set_path("baz", "barbaz"));
29
		$this->assertEquals("barbaz", config_get_path("baz", "barbaz"));
30
		// Root element already exists
31
		$this->assertEquals("barbaz", config_set_path("bar", "barbaz"));
32
		$this->assertEquals("barbaz", config_get_path("bar", "barbaz"));
33
		// Parent doesn't exist
34
		$this->assertEquals("bang", config_set_path("barbang/baz", "bang"));
35
		$this->assertEquals("bang", config_get_path("barbang/baz"));
36
		// Path doesn't exist
37
		$this->assertEquals("bang", config_set_path("foobar/foobaz/foobang", "bang"));
38
		$this->assertEquals("bang", config_get_path("foobar/foobaz/foobang"));
39
		// Parent is scalar, no changes are made
40
		$this->assertNull(config_set_path("barbang/baz/foo", "bar"));
41
		$this->assertEquals("bang", config_get_path("barbang/baz"));
42
		// Parent is scalar, non-null default return and no changes are made
43
		$this->assertEquals(-1, config_set_path("barbang/baz/foo", "bang", -1));
44
		$this->assertEquals("bang", config_get_path("barbang/baz"));
45
		// Parent is empty scalar, replaced with array
46
		$this->assertEquals("bang", config_set_path("emptybar/baz", "bang"));
47
		$this->assertEquals("bang", config_get_path("emptybar/baz"));
48
		// Subarray
49
		$this->assertIsArray(config_set_path("barbang", []));
50
		$this->assertEquals("bang", config_set_path("barbang/baz", "bang"));
51
		$this->assertEquals("bang", config_get_path("barbang/baz"));
52
		// Key exists, replace with array
53
		$this->assertNotNull(config_get_path("foo"));
54
		$this->assertNotNull(config_set_path("foo", ["bar" => "barbaz", "baz" => "barbaz"]));
55
		$this->assertEquals("barbaz", config_get_path("foo/bar"));
56
		$this->assertEquals("barbaz", config_get_path("foo/baz"));
57
		// Key in subarray exists
58
		$this->assertIsArray(config_set_path("bar", []));
59
		$this->assertEquals("barbaz", config_set_path("bar/baz", "barbaz"));
60
		$this->assertEquals("barbaz", config_get_path("bar/baz"));
61
		// Sublist
62
		$this->assertIsArray(config_set_path('sublist/0', ['0_foo' => '0_bar']));
63
		$this->assertEquals('0_bar', config_get_path('sublist/0/0_foo'));
64
	}
65

    
66
	public function test_config_path_enabled(): void {
67
		// True value in enable
68
		$this->assertTrue(config_path_enabled('servicefoo'));
69
		// False value in enable
70
		$this->assertTrue(config_path_enabled('servicebar'));
71
		// null value in enable
72
		$this->assertFalse(config_path_enabled('servicebaz'));
73
		// Alternate enable key
74
		$this->assertTrue(config_path_enabled('servicebang', 'otherkey'));
75
		// nonexistent path
76
		$this->assertFalse(config_path_enabled('servicebazbang'));
77
		// Key in root
78
		$this->assertTrue(config_path_enabled('', 'rootkey'));
79
		$this->assertTrue(config_path_enabled('/', 'rootkey'));
80
	}
81

    
82
	public function test_config_del_path(): void {
83
		global $config;
84
		// Path not in config
85
		$this->assertNull(config_del_path("foobang/fooband"));
86
		// Scalar value
87
		$this->assertEquals('bar', config_del_path('foo'));
88
		$this->assertArrayNotHasKey('foo', $config);
89
		// Subarray
90
		$expect = $config['bar'];
91
		$val = config_del_path('bar');
92
		$this->assertSame($expect, $val);
93
		$this->assertArrayNotHasKey('bar', $config);
94
		// Sublist
95
		$expect = $config['sublist'][0];
96
		$val = config_del_path('sublist/0');
97
		$this->assertSame($expect, $val);
98
		$this->assertArrayNotHasKey('0', $config['sublist']);
99
	}
100

    
101
	public function setUp(): void {
102
		global $config;
103
		$config = array(
104
			"foo" => "bar",
105
			"bar" => array(
106
				"baz" => "bang",
107
				"foobar" => "foobaz",
108
				"foobang" => ""
109
			),
110
			"emptybar" => null,
111
			"servicefoo" => array(
112
				"enable" => true
113
			),
114
			"servicebar" => array(
115
				"enable" => false
116
			),
117
			"servicebaz" => array(
118
				"enable" => null
119
			),
120
			"servicebang" => array(
121
				"otherkey" => true
122
			),
123
			"rootkey" => true,
124
			"sublist" => ["one", "two", "three"]
125
		);
126
	}
127
}
128
?>
(1-1/62)