<?php 
/** 
 * $Id: FormSelect.class.php 562 2006-09-28 16:38:53Z matthieu $ 
 */ 
if (!class_exists('Test_Form_Select')) { 
    if (!defined('__CLASS_PATH__')) { 
        define('__CLASS_PATH__', realpath(dirname(__FILE__) . '/../../')); 
    } 
    require_once __CLASS_PATH__ . '/Autoload.php'; 
    /** 
     * unit test case for Form_Select class 
     * @author matthieu <[email protected]> 
     * @package html 
     * @subpackage unit_test_case 
     */ 
    class Test_Form_Select extends Test_Html_Template implements Test_Html_Design_Interface { 
        /** 
         * the group name label 
         */ 
        const __GROUP_NAME__ = 'group_name'; 
        /** 
         * the test field name 
         */ 
        const __FIELDNAME__ = 'selectfield'; 
        /** 
         * @var mixed $option : the option object to test 
         * @access private 
         */ 
        private $opt = null; 
        /** 
         * constructor 
         * @access public 
         * @return void 
         */ 
        public function __construct() { 
            parent :: __construct(); 
            $this->fieldname = self :: __FIELDNAME__; 
            $this->opt = new Form_Option('option_name', 'option_value', true); 
        } 
        /** 
         * reinit the FormTextarea object 
         * @access public 
         * @return void 
         */ 
        public function setUp() { 
            $this->obj = new Form_Select($this->fieldname); 
        } 
        /** 
         * test the set style method 
         * @access public 
         * @return void 
         */ 
        public function testDefault() { 
            $this->_testCode('<select name="' . $this->fieldname . '"></select>'); 
        } 
        /** 
         * test the set style method 
         * @access public 
         * @return void 
         */ 
        public function testSetStyle() { 
            $this->obj->setStyle(parent :: __STYLE_CONTENT__); 
            $this->_testCode('<select name="' . $this->fieldname . '" style="' . parent :: __STYLE_CONTENT__ . '"></select>'); 
            $this->_testGetter('getStyle()', parent :: __STYLE_CONTENT__, $this->obj->getStyle()); 
        } 
        /** 
         * test the set style class method 
         * @access public 
         * @return void 
         */ 
        public function testSetStyleClass() { 
            $this->obj->setStyleClass(parent :: __STYLE_CLASS_NAME__); 
            $this->_testCode('<select name="' . $this->fieldname . '" class="' . parent :: __STYLE_CLASS_NAME__ . '"></select>'); 
            $this->_testGetter('getStyleClass()', parent :: __STYLE_CLASS_NAME__, $this->obj->getStyleClass()); 
        } 
        /** 
         * test the add option method 
         * @access public 
         * @return void 
         */ 
        public function testAddOption() { 
            $this->obj->addOption($this->opt->getName(), $this->opt->getValue(), $this->opt->isSelected()); 
            $this->_testCode('<select name="' . $this->fieldname . '"><option value="' . $this->opt->getValue() . '" selected="selected">' . $this->opt->getName() . '</option></select>'); 
        } 
        /** 
         * test the add option object method 
         * @access public 
         * @return void 
         */ 
        public function testAddOptionObject() { 
            $this->obj->addOptionObject($this->opt); 
            $this->_testCode('<select name="' . $this->fieldname . '"><option value="' . $this->opt->getValue() . '" selected="selected">' . $this->opt->getName() . '</option></select>'); 
        } 
        /** 
         * test the add option method 
         * @access public 
         * @return void 
         */ 
        public function testAddOptionGroup() { 
            $this->obj->addOptionGroup(self :: __GROUP_NAME__, $this->opt->getName(), $this->opt->getValue(), $this->opt->isSelected()); 
            $this->_testCode('<select name="' . $this->fieldname . '"><optgroup label="' . self :: __GROUP_NAME__ . '"><option value="' . $this->opt->getValue() . '" selected="selected">' . $this->opt->getName() . '</option></optgroup></select>'); 
        } 
        /** 
         * test the add option object method 
         * @access public 
         * @return void 
         */ 
        public function testAddOptionGroupObject() { 
            $this->obj->addOptionGroupObject(self :: __GROUP_NAME__, $this->opt); 
            $this->_testCode('<select name="' . $this->fieldname . '"><optgroup label="' . self :: __GROUP_NAME__ . '"><option value="' . $this->opt->getValue() . '" selected="selected">' . $this->opt->getName() . '</option></optgroup></select>'); 
        } 
        /** 
         * test the set multiple method 
         * @access public 
         * @return void 
         */ 
        public function testSetMultiple() { 
            $this->obj->setMultiple(5); 
            $this->_testCode('<select name="' . $this->fieldname . '" multiple="multiple"></select>'); 
        } 
        /** 
         * test the set disabled method 
         * @access public 
         * @return void 
         */ 
        public function testSetDisabled() { 
            try { 
                $this->obj->setDisabled(); 
                $this->_testCode('<select name="' . $this->fieldname . '" disabled></select>'); 
            } 
            catch (Exception $e) { 
                $this->assertTrue(false, 'An unexpected exception is thrown while disabling ' . get_class($this->obj) . ' object :' . $e->getMessage()); 
            } 
        } 
        /** 
         * test the add js method 
         * @access public 
         * @return void 
         */ 
        public function testAddJS() { 
            $js = new Html_Javascript(Html_Javascript :: __ONCHANGE__, "alert('ok')"); 
            $this->obj->addJs($js); 
            $this->_testCode('<select name="' . $this->fieldname . '" ' . $js->__toString() . '></select>'); 
            unset ($js); 
        } 
        /** 
        * test the add js method with an unexpected js event 
        * @access public 
        * @return void 
        */ 
        public function testAddJSUnexpected() { 
            $this->obj->addJs(new Html_Javascript(Html_Javascript :: __ONSUBMIT__, "alert('ok')")); 
            $this->_testCode('<select name="' . $this->fieldname . '"></select>'); 
        } 
    } 
}
 
 |