177 : void
178 {
179 $metrics = new M(M::STABILITY_MIXED, M::TYPE_COLLECTION, [
180 "a" => new M(M::STABILITY_MIXED, M::TYPE_COLLECTION, [
181 "h" => new M(M::STABILITY_CONFIG, M::TYPE_TEXT, "a_h"),
182 "c" => new M(M::STABILITY_MIXED, M::TYPE_COLLECTION, [
183 "d" => new M(M::STABILITY_MIXED, M::TYPE_COLLECTION, [
184 "e" => new M(M::STABILITY_STABLE, M::TYPE_TEXT, "a_c_d_e"),
185 "f" => new M(M::STABILITY_VOLATILE, M::TYPE_TEXT, "a_c_d_f")
186 ]),
187 "g" => new M(M::STABILITY_CONFIG, M::TYPE_TEXT, "a_c_g")
188 ]),
189 "i" => new M(M::STABILITY_STABLE, M::TYPE_TEXT, "a_i\na_i")
190 ]),
191 "b" => new M(M::STABILITY_MIXED, M::TYPE_COLLECTION, [
192 "j" => new M(M::STABILITY_VOLATILE, M::TYPE_TEXT, "b_j")
193 ]),
194 "k" => new M(M::STABILITY_CONFIG, M::TYPE_TEXT, "k")
195 ]);
196
197 $expected_extracted = new M(M::STABILITY_CONFIG, M::TYPE_COLLECTION, [
198 "a" => new M(M::STABILITY_CONFIG, M::TYPE_COLLECTION, [
199 "h" => new M(M::STABILITY_CONFIG, M::TYPE_TEXT, "a_h"),
200 "c" => new M(M::STABILITY_CONFIG, M::TYPE_COLLECTION, [
201 "g" => new M(M::STABILITY_CONFIG, M::TYPE_TEXT, "a_c_g")
202 ]),
203 ]),
204 "k" => new M(M::STABILITY_CONFIG, M::TYPE_TEXT, "k")
205 ]);
206 $expected_rest = new M(M::STABILITY_MIXED, M::TYPE_COLLECTION, [
207 "a" => new M(M::STABILITY_MIXED, M::TYPE_COLLECTION, [
208 "c" => new M(M::STABILITY_MIXED, M::TYPE_COLLECTION, [
209 "d" => new M(M::STABILITY_MIXED, M::TYPE_COLLECTION, [
210 "e" => new M(M::STABILITY_STABLE, M::TYPE_TEXT, "a_c_d_e"),
211 "f" => new M(M::STABILITY_VOLATILE, M::TYPE_TEXT, "a_c_d_f")
212 ])
213 ]),
214 "i" => new M(M::STABILITY_STABLE, M::TYPE_TEXT, "a_i\na_i")
215 ]),
216 "b" => new M(M::STABILITY_MIXED, M::TYPE_COLLECTION, [
217 "j" => new M(M::STABILITY_VOLATILE, M::TYPE_TEXT, "b_j")
218 ])
219 ]);
220
221 list($extracted, $rest) = $metrics->extractByStability(M::STABILITY_CONFIG);
222
223 $this->assertEquals($expected_extracted, $extracted);
224 $this->assertEquals($expected_rest, $rest);
225 }