public function testAddElementWithUnderscoreInType()
 {
     HTML_QuickForm2_Factory::registerElement('super_box', 'HTML_QuickForm2_Element_InputCheckbox');
     $this->assertTrue(HTML_QuickForm2_Factory::isElementRegistered('super_box'));
     $c = new HTML_QuickForm2_ContainerImpl('cCOT3');
     $el1 = $c->addSuper_Box('sBox_1');
     $el2 = $c->addsuper_box('sBox_2');
     $el3 = $c->addSuper_box('sBox_3');
     $this->assertSame($el1, $c->getElementById('sBox_1-0'));
     $this->assertSame($el2, $c->getElementById('sBox_2-0'));
     $this->assertSame($el3, $c->getElementById('sBox_3-0'));
     try {
         $c->addSuper_Select('sSel_1');
     } catch (HTML_QuickForm2_InvalidArgumentException $e) {
         $this->assertEquals("Element type 'super_select' is not known", $e->getMessage());
         return;
     }
     $this->fail('Expected HTML_QuickForm2_InvalidArgumentException was not thrown');
 }
 public function testInsertBefore()
 {
     $e1 = new HTML_QuickForm2_ElementImpl2('k1');
     $e2 = new HTML_QuickForm2_ElementImpl2('k2');
     $e3 = new HTML_QuickForm2_ElementImpl2('k3');
     $e4 = new HTML_QuickForm2_ElementImpl2('k4');
     $c1 = new HTML_QuickForm2_ContainerImpl('l1');
     $c2 = new HTML_QuickForm2_ContainerImpl('l2');
     $c1->appendChild($e1);
     $c1->appendChild($e2);
     $c2->appendChild($e4);
     $e3Insert = $c1->insertBefore($e3, $e1);
     $c1->insertBefore($e4, $e1);
     $c1->insertBefore($e2, $e3);
     $this->assertSame($e3, $e3Insert, 'insertBefore() should return the inserted element');
     $this->assertNull($c2->getElementById($e4->getId()), 'Element should be removed from container');
     $test = array($e2, $e3, $e4, $e1);
     $i = 0;
     foreach ($c1 as $element) {
         $this->assertSame($test[$i++], $element, 'Elements are in the wrong order');
     }
 }