1
+ <?php
2
+
3
+ namespace PE \Tests \Options ;
4
+ use PE \Options \EncoderOptions ;
5
+ use PE \Tests \Samples ;
6
+
7
+ class EncoderOptionsTest extends Samples
8
+ {
9
+
10
+ protected function setUp () {
11
+ parent ::setUp ();
12
+ $ this ->_peApp = $ this ->encoderOptions (array ());
13
+ }
14
+
15
+ /**
16
+ * @param $options
17
+ * @return EncoderOptions
18
+ */
19
+ protected function encoderOptions ($ options ) {
20
+ return new EncoderOptions ($ options );
21
+ }
22
+
23
+ public function testConstructor () {
24
+ $ options = new EncoderOptions (array ());
25
+ $ this ->assertNotNull ($ options );
26
+ $ this ->assertTrue ($ options instanceof EncoderOptions);
27
+ $ this ->assertEquals (array (), $ options ->getRawOptions ());
28
+ }
29
+
30
+ public function testGetRawOptions () {
31
+ $ options = $ this ->encoderOptions (array (
32
+ 'hello ' => 'test '
33
+ ));
34
+ $ this ->assertEquals (array (
35
+ 'hello ' => 'test '
36
+ ), $ options ->getRawOptions ());
37
+ }
38
+
39
+ public function testSetOptions () {
40
+ $ options = $ this ->encoderOptions (array (
41
+ 'init ' => 'hello '
42
+ ));
43
+ $ this ->assertEquals ('hello ' , $ options ->option ('init ' ));
44
+ $ options ->setOptions (array (
45
+ 'init ' => 'world '
46
+ ));
47
+ $ this ->assertEquals ('world ' , $ options ->option ('init ' ));
48
+
49
+ $ options ->setOptions (array (
50
+ 'nodeInit ' => 'hello world '
51
+ ), 'node ' );
52
+ $ this ->assertEquals (array (
53
+ 'init ' => 'world ' ,
54
+ 'node ' => array (
55
+ 'nodeInit ' => 'hello world '
56
+ )
57
+ ), $ options ->getRawOptions ());
58
+ $ this ->assertEquals ('hello world ' , $ options ->option ('nodeInit ' , 'node ' ));
59
+
60
+ // edit node and retrieve data
61
+ $ options ->setOptions (array (
62
+ 'nodeInit ' => 'hello universe '
63
+ ), 'node ' );
64
+ $ this ->assertEquals (array (
65
+ 'init ' => 'world ' ,
66
+ 'node ' => array (
67
+ 'nodeInit ' => 'hello universe '
68
+ )
69
+ ), $ options ->getRawOptions ());
70
+ $ this ->assertEquals ('hello universe ' , $ options ->option ('nodeInit ' , 'node ' ));
71
+ }
72
+
73
+ public function testOption () {
74
+ $ options = $ this ->encoderOptions (array (
75
+ 'option ' => 'test ' ,
76
+ 'rootOption ' => 'root ' ,
77
+ 'node ' => array (
78
+ 'option ' => 'nodeOption '
79
+ ),
80
+ 'node[1] ' => array (
81
+ 'option ' => 'nodeOption1 '
82
+ ),
83
+ 'things ' => array (
84
+ 'option ' => 'thingOption '
85
+ )
86
+ ));
87
+ $ this ->assertEquals ('test ' , $ options ->option ('option ' ));
88
+ $ this ->assertNull ($ options ->option ('unknown ' ));
89
+ $ this ->assertEquals ('nodeOption ' , $ options ->option ('option ' , 'node ' ));
90
+ $ this ->assertEquals ('test ' , $ options ->option ('option ' , 'unknown ' ));
91
+
92
+ // inheritance
93
+ $ this ->assertEquals ('root ' , $ options ->option ('rootOption ' ));
94
+ $ this ->assertEquals ('root ' , $ options ->option ('rootOption ' , 'node ' ));
95
+
96
+ // iterated
97
+ $ this ->assertEquals ('nodeOption1 ' , $ options ->option ('option ' , 'node[1] ' ));
98
+
99
+ $ node = $ this ->addThingNode ();
100
+ $ this ->assertEquals ('thingOption ' , $ options ->option ('option ' , $ node ));
101
+ }
102
+
103
+ public function testHasOption () {
104
+ $ options = $ this ->encoderOptions (array (
105
+ 'option ' => 'test ' ,
106
+ 'node ' => array (
107
+ 'option ' => 'option ' ,
108
+ 'nodeOption ' => 'nodeOption '
109
+ )
110
+ ));
111
+ $ this ->assertTrue ($ options ->hasOption ('option ' ));
112
+ $ this ->assertTrue ($ options ->hasOption ('option ' , 'node ' ));
113
+ $ this ->assertTrue ($ options ->hasOption ('nodeOption ' , 'node ' ));
114
+ $ this ->assertTrue ($ options ->hasOption ('option ' , 'unknown ' ));
115
+
116
+ $ this ->assertFalse ($ options ->hasOption ('unknown ' ));
117
+ }
118
+
119
+ public function testGetRootOptions () {
120
+ $ options = $ this ->encoderOptions (array (
121
+ 'option ' => 'test ' ,
122
+ 'node ' => array (
123
+ 'option ' => 'nodeOption '
124
+ )
125
+ ));
126
+ $ this ->assertEquals (array (
127
+ 'option ' => 'test '
128
+ ), $ options ->getRootOptions ());
129
+ }
130
+
131
+ public function testNodeExists () {
132
+ $ this ->addThingsNode ();
133
+ $ options = $ this ->encoderOptions (array (
134
+ 'thingsContainer ' => array (),
135
+ 'things ' => array ()
136
+ ));
137
+ $ this ->assertTrue ($ options ->nodeExists ('thingsContainer ' ));
138
+ $ this ->assertFalse ($ options ->nodeExists ('things ' ));
139
+ $ this ->assertFalse ($ options ->nodeExists ('unknown ' ));
140
+ }
141
+ public function testRawNodeExists () {
142
+ $ options = $ this ->encoderOptions (array (
143
+ 'node ' => array ()
144
+ ));
145
+ $ this ->assertTrue ($ options ->rawNodeExists ('node ' ));
146
+ $ this ->assertFalse ($ options ->rawNodeExists ('unknown ' ));
147
+ }
148
+ public function testGetRawNode () {
149
+ $ options = $ this ->encoderOptions (array (
150
+ 'node ' => array (
151
+ 'option ' => 'hello world '
152
+ )
153
+ ));
154
+ $ this ->assertEquals (array (
155
+ 'option ' => 'hello world '
156
+ ), $ options ->getRawNode ('node ' ));
157
+ }
158
+
159
+ public function testGetRawNodeWithUnknownNodeName () {
160
+ $ this ->setExpectedException ('\\PE \\Exceptions \\EncoderOptionsException ' , 'Cannot get raw node "unknown" because it doesn \'t exist ' );
161
+ $ options = $ this ->encoderOptions (array ());
162
+ $ options ->getRawNode ('unknown ' );
163
+ }
164
+
165
+ public function testProcessOptionsFromNode () {
166
+ $ thingsNode = $ this ->addThingsNode ();
167
+ $ options = $ this ->encoderOptions (array (
168
+ 'root ' => 'rootOption ' ,
169
+ 'thingsContainer ' => array (
170
+ 'option ' => 'hello ' ,
171
+ 'thingsContainerOption ' => 'options '
172
+ ),
173
+ 'thingContainer ' => array (
174
+ 'option ' => 'world ' ,
175
+ 'thingContainerOption ' => 'optionSingle '
176
+ )
177
+ ));
178
+ $ this ->assertEquals (array (
179
+ 'root ' => 'rootOption ' ,
180
+ 'option ' => 'hello ' ,
181
+ 'thingContainerOption ' => 'optionSingle ' ,
182
+ 'thingsContainerOption ' => 'options '
183
+ ), $ options ->processOptionsFromNode ($ thingsNode ));
184
+ }
185
+ }
0 commit comments