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