Project

General

Profile

Download (3.72 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
		// Unfound element returns default, even if non-null
10
		$this->assertNull(config_get_path("foobaz", null));
11
		$this->assertEquals("test", config_get_path("foobaz", "test"));
12
		// Subarray
13
		$this->assertIsArray(config_get_path("bar", null));
14
		$this->assertEquals("bang", config_get_path("bar/baz", null));
15
	}
16

    
17
	public function test_config_set_path(): void {
18
		// Root element
19
		$this->assertEquals("barbaz", config_set_path("baz", "barbaz"));
20
		$this->assertEquals("barbaz", config_get_path("baz", "barbaz"));
21
		// Root element already exists
22
		$this->assertEquals("barbaz", config_set_path("bar", "barbaz"));
23
		$this->assertEquals("barbaz", config_get_path("bar", "barbaz"));
24
		// Parent doesn't exist
25
		$this->assertEquals("bang", config_set_path("barbang/baz", "bang"));
26
		$this->assertEquals("bang", config_get_path("barbang/baz"));
27
		// Path doesn't exist
28
		$this->assertEquals("bang", config_set_path("foobar/foobaz/foobang", "bang"));
29
		$this->assertEquals("bang", config_get_path("foobar/foobaz/foobang"));
30
		// Parent is scalar, no changes are made
31
		$this->assertNull(config_set_path("barbang/baz/foo", "bar"));
32
		$this->assertEquals("bang", config_get_path("barbang/baz"));
33
		// Parent is scalar, non-null default return and no changes are made
34
		$this->assertEquals(-1, config_set_path("barbang/baz/foo", "bang", -1));
35
		$this->assertEquals("bang", config_get_path("barbang/baz"));
36
		// Parent is empty scalar, replaced with array
37
		$this->assertEquals("bang", config_set_path("emptybar/baz", "bang"));
38
		$this->assertEquals("bang", config_get_path("emptybar/baz"));
39
		// Subarray
40
		$this->assertIsArray(config_set_path("barbang", []));
41
		$this->assertEquals("bang", config_set_path("barbang/baz", "bang"));
42
		$this->assertEquals("bang", config_get_path("barbang/baz"));
43
		// Key exists, replace with array
44
		$this->assertNotNull(config_get_path("foo"));
45
		$this->assertNotNull(config_set_path("foo", ["bar" => "barbaz", "baz" => "barbaz"]));
46
		$this->assertEquals("barbaz", config_get_path("foo/bar"));
47
		$this->assertEquals("barbaz", config_get_path("foo/baz"));
48
		// Key in subarray exists
49
		$this->assertIsArray(config_set_path("bar", []));
50
		$this->assertEquals("barbaz", config_set_path("bar/baz", "barbaz"));
51
		$this->assertEquals("barbaz", config_get_path("bar/baz"));
52
	}
53

    
54
	public function test_config_path_enabled(): void {
55
		// True value in enable
56
		$this->assertTrue(config_path_enabled('servicefoo'));
57
		// False value in enable
58
		$this->assertTrue(config_path_enabled('servicebar'));
59
		// null value in enable
60
		$this->assertFalse(config_path_enabled('servicebaz'));
61
		// Alternate enable key
62
		$this->assertTrue(config_path_enabled('servicebang', 'otherkey'));
63
		// nonexistent path
64
		$this->assertFalse(config_path_enabled('servicebazbang'));
65
	}
66

    
67
	public function test_config_del_path(): void {
68
		global $config;
69
		// Path not in config
70
		$this->assertNull(config_del_path("foobang/fooband"));
71
		// Scalar value
72
		$this->assertEquals('bar', config_del_path('foo'));
73
		$this->assertArrayNotHasKey('foo', $config);
74
		// Subarray
75
		$expect = $config['bar'];
76
		$val = config_del_path('bar');
77
		$this->assertSame($expect, $val);
78
	}
79

    
80
	public function setUp(): void {
81
		global $config;
82
		$config = array(
83
			"foo" => "bar",
84
			"bar" => array(
85
				"baz" => "bang",
86
				"foobar" => "foobaz"
87
			),
88
			"emptybar" => null,
89
			"servicefoo" => array(
90
				"enable" => true
91
			),
92
			"servicebar" => array(
93
				"enable" => false
94
			),
95
			"servicebaz" => array(
96
				"enable" => null
97
			),
98
			"servicebang" => array(
99
				"otherkey" => true
100
			)
101
		);
102
	}
103
}
104
?>
(1-1/62)