attr_collections = array ( 'Core' => array ( 0 => array ( 'Soup', 'Undefined' ), 'attribute' => 'Type', 'attribute-2' => 'Type2' ), 'Soup' => array ( 'attribute-3' => 'Type3-old' ) // overwritten ); $modules ['Module2'] = new HTMLPurifier_HTMLModule (); $modules ['Module2']->attr_collections = array ( 'Core' => array ( 0 => array ( 'Brocolli' ) ), 'Soup' => array ( 'attribute-3' => 'Type3' ), 'Brocolli' => array () ); $collections->__construct ( $types, $modules ); // this is without identifier expansion or inclusions $this->assertIdentical ( $collections->info, array ( 'Core' => array ( 0 => array ( 'Soup', 'Undefined', 'Brocolli' ), 'attribute' => 'Type', 'attribute-2' => 'Type2' ), 'Soup' => array ( 'attribute-3' => 'Type3' ), 'Brocolli' => array () ) ); } public function test_performInclusions() { generate_mock_once ( 'HTMLPurifier_AttrTypes' ); $types = new HTMLPurifier_AttrTypesMock (); $collections = new HTMLPurifier_AttrCollections ( $types, array () ); $collections->info = array ( 'Core' => array ( 0 => array ( 'Inclusion', 'Undefined' ), 'attr-original' => 'Type' ), 'Inclusion' => array ( 0 => array ( 'SubInclusion' ), 'attr' => 'Type' ), 'SubInclusion' => array ( 'attr2' => 'Type' ) ); $collections->performInclusions ( $collections->info ['Core'] ); $this->assertIdentical ( $collections->info ['Core'], array ( 'attr-original' => 'Type', 'attr' => 'Type', 'attr2' => 'Type' ) ); // test recursive $collections->info = array ( 'One' => array ( 0 => array ( 'Two' ), 'one' => 'Type' ), 'Two' => array ( 0 => array ( 'One' ), 'two' => 'Type' ) ); $collections->performInclusions ( $collections->info ['One'] ); $this->assertIdentical ( $collections->info ['One'], array ( 'one' => 'Type', 'two' => 'Type' ) ); } public function test_expandIdentifiers() { generate_mock_once ( 'HTMLPurifier_AttrTypes' ); $types = new HTMLPurifier_AttrTypesMock (); $collections = new HTMLPurifier_AttrCollections ( $types, array () ); $attr = array ( 'attr1' => 'Color', 'attr2*' => 'URI' ); $c_object = new HTMLPurifier_AttrDef_HTML_Color (); $u_object = new HTMLPurifier_AttrDef_URI (); $types->setReturnValue ( 'get', $c_object, array ( 'Color' ) ); $types->setReturnValue ( 'get', $u_object, array ( 'URI' ) ); $collections->expandIdentifiers ( $attr, $types ); $u_object->required = true; $this->assertIdentical ( $attr, array ( 'attr1' => $c_object, 'attr2' => $u_object ) ); } } // vim: et sw=4 sts=4