[ Index ]
 

Code source de PHPonTrax 2.6.6-svn

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/test/ -> DateHelperTest.php (source)

   1  <?php
   2  /**
   3   *  File for the DateHelperTest class
   4   *
   5   * (PHP 5)
   6   *
   7   * @package PHPonTraxTest
   8   * @license http://opensource.org/licenses/gpl-license.php GNU Public License
   9   * @copyright (c) Walter O. Haas 2006
  10   * @version $Id: DateHelperTest.php 198 2006-04-20 16:20:30Z haas $
  11   * @author Walt Haas <haas@xmission.com>
  12   */
  13  
  14  echo "testing DateHelper\n";
  15  require_once  'testenv.php';
  16  
  17  // Call DateHelperTest::main() if this source file is executed directly.
  18  if (!defined("PHPUnit2_MAIN_METHOD")) {
  19      define("PHPUnit2_MAIN_METHOD", "DateHelperTest::main");
  20  }
  21  
  22  require_once "PHPUnit2/Framework/TestCase.php";
  23  require_once "PHPUnit2/Framework/TestSuite.php";
  24  
  25  // You may remove the following line when all tests have been implemented.
  26  require_once "PHPUnit2/Framework/IncompleteTestError.php";
  27  
  28  //  Create an ActiveRecord and an ActionController to test with
  29  @ini_set('include_path',
  30           './mockActiveRecord:./mockActionController:'.ini_get('include_path'));
  31  require_once "active_record.php";
  32  require_once "action_controller.php";
  33  require_once "trax_exceptions.php";
  34  require_once "action_view/helpers.php";
  35  require_once "action_view/helpers/date_helper.php";
  36  
  37  /**
  38   *  Extend the DateHelper class so we can access protected stuff
  39   */
  40  class ExDateHelper extends DateHelper
  41  {
  42      function value() {
  43          return parent::value();
  44      }
  45  }
  46  
  47  
  48  /**
  49   * Test class for DateHelper.
  50   * Generated by PHPUnit2_Util_Skeleton on 2006-03-01 at 13:17:32.
  51   */
  52  class DateHelperTest extends PHPUnit2_Framework_TestCase {
  53      /**
  54       * Runs the test methods of this class.
  55       *
  56       * @access public
  57       * @static
  58       */
  59      public static function main() {
  60          require_once "PHPUnit2/TextUI/TestRunner.php";
  61  
  62          $suite  = new PHPUnit2_Framework_TestSuite("DateHelperTest");
  63          $result = PHPUnit2_TextUI_TestRunner::run($suite);
  64      }
  65  
  66      /**
  67       * Sets up the fixture, for example, open a network connection.
  68       * This method is called before a test is executed.
  69       *
  70       * @access protected
  71       */
  72      protected function setUp() {
  73      }
  74  
  75      /**
  76       * Tears down the fixture, for example, close a network connection.
  77       * This method is called after a test is executed.
  78       *
  79       * @access protected
  80       */
  81      protected function tearDown() {
  82          unset($_REQUEST);
  83      }
  84  
  85      /**
  86       *  Test __construct()
  87       *
  88       *  Test the {@link DateHelper::__construct() constructor}
  89       */
  90      public function testConstruct() {
  91          $dh = new DateHelper('Foo', 'bar');
  92          $this->assertEquals('Foo', $dh->object_name);
  93          $this->assertEquals('bar', $dh->attribute_name);
  94      }
  95  
  96      /**
  97       *  Test the expiration_date_select() method
  98       *
  99       *  Test the {@link DateHelper::expiration_date_select()} method
 100       */
 101      public function testExpiration_date_select() {
 102          $dh = new DateHelper('License', 'expiration_date');
 103          $_REQUEST['License']['expiration_date(1i)'] = date('Y');
 104          $_REQUEST['License']['expiration_date(2i)'] = '08';
 105  
 106          //  Test expiration date of August this year
 107          $this->assertContains('<option value="'.date('Y').
 108                                '"  selected="selected"',
 109                                $dh->expiration_date_select());
 110          $this->assertContains('<option value="'.(date('Y')+7).'"',
 111                                $dh->expiration_date_select());
 112          $this->assertContains('<option value="08" selected="selected">'
 113                                . '8</option>',
 114                                $dh->expiration_date_select());
 115      }
 116  
 117      /**
 118       *  Test datetime_select() method
 119       *
 120       *  Test the {@link DateHelper::datetime_select()} method
 121       */
 122      public function testDatetime_select_method() {
 123          $dh = new DateHelper('Person','birth');
 124          $dh->controller_object = new ActionController;
 125          $ar = new ActiveRecord;
 126          $dh->controller_object->Person = $ar;
 127  
 128          //  With no value in $_REQUEST, data should be
 129          //  retrieved from the the ActiveRecord
 130          $ar->expect_query("birth","2001-07-05 11:30:45");
 131          $this->assertEquals('<select name="Person[birth(1i)]">' . "\n"
 132             . '<option value="1996">1996</option>' . "\n"
 133             . '<option value="1997">1997</option>' . "\n"
 134             . '<option value="1998">1998</option>' . "\n"
 135             . '<option value="1999">1999</option>' . "\n"
 136             . '<option value="2000">2000</option>' . "\n"
 137             . '<option value="2001"  selected="selected">2001</option>' . "\n"
 138             . '<option value="2002">2002</option>' . "\n"
 139             . '<option value="2003">2003</option>' . "\n"
 140             . '<option value="2004">2004</option>' . "\n"
 141             . '<option value="2005">2005</option>' . "\n"
 142             . '<option value="2006">2006</option>' . "\n"
 143             . '</select>' . "\n"
 144             . '<select name="Person[birth(2i)]">' . "\n"
 145             . '<option value="01">January</option>' . "\n"
 146             . '<option value="02">February</option>' . "\n"
 147             . '<option value="03">March</option>' . "\n"
 148             . '<option value="04">April</option>' . "\n"
 149             . '<option value="05">May</option>' . "\n"
 150             . '<option value="06">June</option>' . "\n"
 151             . '<option value="07" selected="selected">July</option>' . "\n"
 152             . '<option value="08">August</option>' . "\n"
 153             . '<option value="09">September</option>' . "\n"
 154             . '<option value="10">October</option>' . "\n"
 155             . '<option value="11">November</option>' . "\n"
 156             . '<option value="12">December</option>' . "\n"
 157             . '</select>' . "\n"
 158             . '<select name="Person[birth(3i)]">' . "\n"
 159             . '<option value="01">01</option>' . "\n"
 160             . '<option value="02">02</option>' . "\n"
 161             . '<option value="03">03</option>' . "\n"
 162             . '<option value="04">04</option>' . "\n"
 163             . '<option value="05"  selected="selected">05</option>' . "\n"
 164             . '<option value="06">06</option>' . "\n"
 165             . '<option value="07">07</option>' . "\n"
 166             . '<option value="08">08</option>' . "\n"
 167             . '<option value="09">09</option>' . "\n"
 168             . '<option value="10">10</option>' . "\n"
 169             . '<option value="11">11</option>' . "\n"
 170             . '<option value="12">12</option>' . "\n"
 171             . '<option value="13">13</option>' . "\n"
 172             . '<option value="14">14</option>' . "\n"
 173             . '<option value="15">15</option>' . "\n"
 174             . '<option value="16">16</option>' . "\n"
 175             . '<option value="17">17</option>' . "\n"
 176             . '<option value="18">18</option>' . "\n"
 177             . '<option value="19">19</option>' . "\n"
 178             . '<option value="20">20</option>' . "\n"
 179             . '<option value="21">21</option>' . "\n"
 180             . '<option value="22">22</option>' . "\n"
 181             . '<option value="23">23</option>' . "\n"
 182             . '<option value="24">24</option>' . "\n"
 183             . '<option value="25">25</option>' . "\n"
 184             . '<option value="26">26</option>' . "\n"
 185             . '<option value="27">27</option>' . "\n"
 186             . '<option value="28">28</option>' . "\n"
 187             . '<option value="29">29</option>' . "\n"
 188             . '<option value="30">30</option>' . "\n"
 189             . '<option value="31">31</option>' . "\n"
 190             . '</select>' . "\n"
 191             . ' &mdash; <select name="Person[birth(4i)]">' . "\n"
 192             . '<option value="00">00</option>' . "\n"
 193             . '<option value="01">01</option>' . "\n"
 194             . '<option value="02">02</option>' . "\n"
 195             . '<option value="03">03</option>' . "\n"
 196             . '<option value="04">04</option>' . "\n"
 197             . '<option value="05">05</option>' . "\n"
 198             . '<option value="06">06</option>' . "\n"
 199             . '<option value="07">07</option>' . "\n"
 200             . '<option value="08">08</option>' . "\n"
 201             . '<option value="09">09</option>' . "\n"
 202             . '<option value="10">10</option>' . "\n"
 203             . '<option value="11"  selected="selected">11</option>' . "\n"
 204             . '<option value="12">12</option>' . "\n"
 205             . '<option value="13">13</option>' . "\n"
 206             . '<option value="14">14</option>' . "\n"
 207             . '<option value="15">15</option>' . "\n"
 208             . '<option value="16">16</option>' . "\n"
 209             . '<option value="17">17</option>' . "\n"
 210             . '<option value="18">18</option>' . "\n"
 211             . '<option value="19">19</option>' . "\n"
 212             . '<option value="20">20</option>' . "\n"
 213             . '<option value="21">21</option>' . "\n"
 214             . '<option value="22">22</option>' . "\n"
 215             . '<option value="23">23</option>' . "\n"
 216             . '</select>' . "\n"
 217             . ' : <select name="Person[birth(5i)]">' . "\n"
 218             . '<option value="00">00</option>' . "\n"
 219             . '<option value="01">01</option>' . "\n"
 220             . '<option value="02">02</option>' . "\n"
 221             . '<option value="03">03</option>' . "\n"
 222             . '<option value="04">04</option>' . "\n"
 223             . '<option value="05">05</option>' . "\n"
 224             . '<option value="06">06</option>' . "\n"
 225             . '<option value="07">07</option>' . "\n"
 226             . '<option value="08">08</option>' . "\n"
 227             . '<option value="09">09</option>' . "\n"
 228             . '<option value="10">10</option>' . "\n"
 229             . '<option value="11">11</option>' . "\n"
 230             . '<option value="12">12</option>' . "\n"
 231             . '<option value="13">13</option>' . "\n"
 232             . '<option value="14">14</option>' . "\n"
 233             . '<option value="15">15</option>' . "\n"
 234             . '<option value="16">16</option>' . "\n"
 235             . '<option value="17">17</option>' . "\n"
 236             . '<option value="18">18</option>' . "\n"
 237             . '<option value="19">19</option>' . "\n"
 238             . '<option value="20">20</option>' . "\n"
 239             . '<option value="21">21</option>' . "\n"
 240             . '<option value="22">22</option>' . "\n"
 241             . '<option value="23">23</option>' . "\n"
 242             . '<option value="24">24</option>' . "\n"
 243             . '<option value="25">25</option>' . "\n"
 244             . '<option value="26">26</option>' . "\n"
 245             . '<option value="27">27</option>' . "\n"
 246             . '<option value="28">28</option>' . "\n"
 247             . '<option value="29">29</option>' . "\n"
 248             . '<option value="30"  selected="selected">30</option>' . "\n"
 249             . '<option value="31">31</option>' . "\n"
 250             . '<option value="32">32</option>' . "\n"
 251             . '<option value="33">33</option>' . "\n"
 252             . '<option value="34">34</option>' . "\n"
 253             . '<option value="35">35</option>' . "\n"
 254             . '<option value="36">36</option>' . "\n"
 255             . '<option value="37">37</option>' . "\n"
 256             . '<option value="38">38</option>' . "\n"
 257             . '<option value="39">39</option>' . "\n"
 258             . '<option value="40">40</option>' . "\n"
 259             . '<option value="41">41</option>' . "\n"
 260             . '<option value="42">42</option>' . "\n"
 261             . '<option value="43">43</option>' . "\n"
 262             . '<option value="44">44</option>' . "\n"
 263             . '<option value="45">45</option>' . "\n"
 264             . '<option value="46">46</option>' . "\n"
 265             . '<option value="47">47</option>' . "\n"
 266             . '<option value="48">48</option>' . "\n"
 267             . '<option value="49">49</option>' . "\n"
 268             . '<option value="50">50</option>' . "\n"
 269             . '<option value="51">51</option>' . "\n"
 270             . '<option value="52">52</option>' . "\n"
 271             . '<option value="53">53</option>' . "\n"
 272             . '<option value="54">54</option>' . "\n"
 273             . '<option value="55">55</option>' . "\n"
 274             . '<option value="56">56</option>' . "\n"
 275             . '<option value="57">57</option>' . "\n"
 276             . '<option value="58">58</option>' . "\n"
 277             . '<option value="59">59</option>' . "\n"
 278             . '</select>' . "\n",
 279             $dh->datetime_select());
 280      }
 281  
 282      /**
 283       *  Test datetime_select() function
 284       *
 285       *  Test the {@link datetime_select()} function in procedural file
 286       *  {@link date_helper.php}
 287       */
 288      public function testDatetime_select_function() {
 289  
 290          //  Values from $_REQUEST, default format
 291          $_REQUEST['Person']['birth(1i)'] = '2001';
 292          $_REQUEST['Person']['birth(2i)'] = '07';
 293          $_REQUEST['Person']['birth(3i)'] = '05';
 294          $_REQUEST['Person']['birth(4i)'] = '11';
 295          $_REQUEST['Person']['birth(5i)'] = '30';
 296          $this->assertEquals('<select name="Person[birth(1i)]">' . "\n"
 297             . '<option value="1996">1996</option>' . "\n"
 298             . '<option value="1997">1997</option>' . "\n"
 299             . '<option value="1998">1998</option>' . "\n"
 300             . '<option value="1999">1999</option>' . "\n"
 301             . '<option value="2000">2000</option>' . "\n"
 302             . '<option value="2001"  selected="selected">2001</option>' . "\n"
 303             . '<option value="2002">2002</option>' . "\n"
 304             . '<option value="2003">2003</option>' . "\n"
 305             . '<option value="2004">2004</option>' . "\n"
 306             . '<option value="2005">2005</option>' . "\n"
 307             . '<option value="2006">2006</option>' . "\n"
 308             . '</select>' . "\n"
 309             . '<select name="Person[birth(2i)]">' . "\n"
 310             . '<option value="01">January</option>' . "\n"
 311             . '<option value="02">February</option>' . "\n"
 312             . '<option value="03">March</option>' . "\n"
 313             . '<option value="04">April</option>' . "\n"
 314             . '<option value="05">May</option>' . "\n"
 315             . '<option value="06">June</option>' . "\n"
 316             . '<option value="07" selected="selected">July</option>' . "\n"
 317             . '<option value="08">August</option>' . "\n"
 318             . '<option value="09">September</option>' . "\n"
 319             . '<option value="10">October</option>' . "\n"
 320             . '<option value="11">November</option>' . "\n"
 321             . '<option value="12">December</option>' . "\n"
 322             . '</select>' . "\n"
 323             . '<select name="Person[birth(3i)]">' . "\n"
 324             . '<option value="01">01</option>' . "\n"
 325             . '<option value="02">02</option>' . "\n"
 326             . '<option value="03">03</option>' . "\n"
 327             . '<option value="04">04</option>' . "\n"
 328             . '<option value="05"  selected="selected">05</option>' . "\n"
 329             . '<option value="06">06</option>' . "\n"
 330             . '<option value="07">07</option>' . "\n"
 331             . '<option value="08">08</option>' . "\n"
 332             . '<option value="09">09</option>' . "\n"
 333             . '<option value="10">10</option>' . "\n"
 334             . '<option value="11">11</option>' . "\n"
 335             . '<option value="12">12</option>' . "\n"
 336             . '<option value="13">13</option>' . "\n"
 337             . '<option value="14">14</option>' . "\n"
 338             . '<option value="15">15</option>' . "\n"
 339             . '<option value="16">16</option>' . "\n"
 340             . '<option value="17">17</option>' . "\n"
 341             . '<option value="18">18</option>' . "\n"
 342             . '<option value="19">19</option>' . "\n"
 343             . '<option value="20">20</option>' . "\n"
 344             . '<option value="21">21</option>' . "\n"
 345             . '<option value="22">22</option>' . "\n"
 346             . '<option value="23">23</option>' . "\n"
 347             . '<option value="24">24</option>' . "\n"
 348             . '<option value="25">25</option>' . "\n"
 349             . '<option value="26">26</option>' . "\n"
 350             . '<option value="27">27</option>' . "\n"
 351             . '<option value="28">28</option>' . "\n"
 352             . '<option value="29">29</option>' . "\n"
 353             . '<option value="30">30</option>' . "\n"
 354             . '<option value="31">31</option>' . "\n"
 355             . '</select>' . "\n"
 356             . ' &mdash; <select name="Person[birth(4i)]">' . "\n"
 357             . '<option value="00">00</option>' . "\n"
 358             . '<option value="01">01</option>' . "\n"
 359             . '<option value="02">02</option>' . "\n"
 360             . '<option value="03">03</option>' . "\n"
 361             . '<option value="04">04</option>' . "\n"
 362             . '<option value="05">05</option>' . "\n"
 363             . '<option value="06">06</option>' . "\n"
 364             . '<option value="07">07</option>' . "\n"
 365             . '<option value="08">08</option>' . "\n"
 366             . '<option value="09">09</option>' . "\n"
 367             . '<option value="10">10</option>' . "\n"
 368             . '<option value="11"  selected="selected">11</option>' . "\n"
 369             . '<option value="12">12</option>' . "\n"
 370             . '<option value="13">13</option>' . "\n"
 371             . '<option value="14">14</option>' . "\n"
 372             . '<option value="15">15</option>' . "\n"
 373             . '<option value="16">16</option>' . "\n"
 374             . '<option value="17">17</option>' . "\n"
 375             . '<option value="18">18</option>' . "\n"
 376             . '<option value="19">19</option>' . "\n"
 377             . '<option value="20">20</option>' . "\n"
 378             . '<option value="21">21</option>' . "\n"
 379             . '<option value="22">22</option>' . "\n"
 380             . '<option value="23">23</option>' . "\n"
 381             . '</select>' . "\n"
 382             . ' : <select name="Person[birth(5i)]">' . "\n"
 383             . '<option value="00">00</option>' . "\n"
 384             . '<option value="01">01</option>' . "\n"
 385             . '<option value="02">02</option>' . "\n"
 386             . '<option value="03">03</option>' . "\n"
 387             . '<option value="04">04</option>' . "\n"
 388             . '<option value="05">05</option>' . "\n"
 389             . '<option value="06">06</option>' . "\n"
 390             . '<option value="07">07</option>' . "\n"
 391             . '<option value="08">08</option>' . "\n"
 392             . '<option value="09">09</option>' . "\n"
 393             . '<option value="10">10</option>' . "\n"
 394             . '<option value="11">11</option>' . "\n"
 395             . '<option value="12">12</option>' . "\n"
 396             . '<option value="13">13</option>' . "\n"
 397             . '<option value="14">14</option>' . "\n"
 398             . '<option value="15">15</option>' . "\n"
 399             . '<option value="16">16</option>' . "\n"
 400             . '<option value="17">17</option>' . "\n"
 401             . '<option value="18">18</option>' . "\n"
 402             . '<option value="19">19</option>' . "\n"
 403             . '<option value="20">20</option>' . "\n"
 404             . '<option value="21">21</option>' . "\n"
 405             . '<option value="22">22</option>' . "\n"
 406             . '<option value="23">23</option>' . "\n"
 407             . '<option value="24">24</option>' . "\n"
 408             . '<option value="25">25</option>' . "\n"
 409             . '<option value="26">26</option>' . "\n"
 410             . '<option value="27">27</option>' . "\n"
 411             . '<option value="28">28</option>' . "\n"
 412             . '<option value="29">29</option>' . "\n"
 413             . '<option value="30"  selected="selected">30</option>' . "\n"
 414             . '<option value="31">31</option>' . "\n"
 415             . '<option value="32">32</option>' . "\n"
 416             . '<option value="33">33</option>' . "\n"
 417             . '<option value="34">34</option>' . "\n"
 418             . '<option value="35">35</option>' . "\n"
 419             . '<option value="36">36</option>' . "\n"
 420             . '<option value="37">37</option>' . "\n"
 421             . '<option value="38">38</option>' . "\n"
 422             . '<option value="39">39</option>' . "\n"
 423             . '<option value="40">40</option>' . "\n"
 424             . '<option value="41">41</option>' . "\n"
 425             . '<option value="42">42</option>' . "\n"
 426             . '<option value="43">43</option>' . "\n"
 427             . '<option value="44">44</option>' . "\n"
 428             . '<option value="45">45</option>' . "\n"
 429             . '<option value="46">46</option>' . "\n"
 430             . '<option value="47">47</option>' . "\n"
 431             . '<option value="48">48</option>' . "\n"
 432             . '<option value="49">49</option>' . "\n"
 433             . '<option value="50">50</option>' . "\n"
 434             . '<option value="51">51</option>' . "\n"
 435             . '<option value="52">52</option>' . "\n"
 436             . '<option value="53">53</option>' . "\n"
 437             . '<option value="54">54</option>' . "\n"
 438             . '<option value="55">55</option>' . "\n"
 439             . '<option value="56">56</option>' . "\n"
 440             . '<option value="57">57</option>' . "\n"
 441             . '<option value="58">58</option>' . "\n"
 442             . '<option value="59">59</option>' . "\n"
 443             . '</select>' . "\n",
 444             datetime_select('Person', 'birth'));
 445      }
 446  
 447      /**
 448       *  Test date_select_method()
 449       *
 450       *  Test the {@link DateHelper::date_select()} method
 451       */
 452      public function testDate_select_method() {
 453          $dh = new DateHelper('Person', 'birthdate');
 454          $_REQUEST['Person']['birthdate(1i)'] = '1955';
 455          $_REQUEST['Person']['birthdate(2i)'] = '08';
 456          $_REQUEST['Person']['birthdate(3i)'] = '13';
 457  
 458          //  Test with default format
 459          $this->assertEquals('<select name="Person[birthdate(1i)]">' . "\n"
 460             . '<option value="1950">1950</option>' . "\n"
 461             . '<option value="1951">1951</option>' . "\n"
 462             . '<option value="1952">1952</option>' . "\n"
 463             . '<option value="1953">1953</option>' . "\n"
 464             . '<option value="1954">1954</option>' . "\n"
 465             . '<option value="1955"  selected="selected">1955</option>' . "\n"
 466             . '<option value="1956">1956</option>' . "\n"
 467             . '<option value="1957">1957</option>' . "\n"
 468             . '<option value="1958">1958</option>' . "\n"
 469             . '<option value="1959">1959</option>' . "\n"
 470             . '<option value="1960">1960</option>' . "\n"
 471             . '</select>' . "\n"
 472             . ' <select name="Person[birthdate(2i)]">' . "\n"
 473             . '<option value="01">January</option>' . "\n"
 474             . '<option value="02">February</option>' . "\n"
 475             . '<option value="03">March</option>' . "\n"
 476             . '<option value="04">April</option>' . "\n"
 477             . '<option value="05">May</option>' . "\n"
 478             . '<option value="06">June</option>' . "\n"
 479             . '<option value="07">July</option>' . "\n"
 480             . '<option value="08" selected="selected">August</option>' . "\n"
 481             . '<option value="09">September</option>' . "\n"
 482             . '<option value="10">October</option>' . "\n"
 483             . '<option value="11">November</option>' . "\n"
 484             . '<option value="12">December</option>' . "\n"
 485             . '</select>' . "\n"
 486             . ' <select name="Person[birthdate(3i)]">' . "\n"
 487             . '<option value="01">01</option>' . "\n"
 488             . '<option value="02">02</option>' . "\n"
 489             . '<option value="03">03</option>' . "\n"
 490             . '<option value="04">04</option>' . "\n"
 491             . '<option value="05">05</option>' . "\n"
 492             . '<option value="06">06</option>' . "\n"
 493             . '<option value="07">07</option>' . "\n"
 494             . '<option value="08">08</option>' . "\n"
 495             . '<option value="09">09</option>' . "\n"
 496             . '<option value="10">10</option>' . "\n"
 497             . '<option value="11">11</option>' . "\n"
 498             . '<option value="12">12</option>' . "\n"
 499             . '<option value="13"  selected="selected">13</option>' . "\n"
 500             . '<option value="14">14</option>' . "\n"
 501             . '<option value="15">15</option>' . "\n"
 502             . '<option value="16">16</option>' . "\n"
 503             . '<option value="17">17</option>' . "\n"
 504             . '<option value="18">18</option>' . "\n"
 505             . '<option value="19">19</option>' . "\n"
 506             . '<option value="20">20</option>' . "\n"
 507             . '<option value="21">21</option>' . "\n"
 508             . '<option value="22">22</option>' . "\n"
 509             . '<option value="23">23</option>' . "\n"
 510             . '<option value="24">24</option>' . "\n"
 511             . '<option value="25">25</option>' . "\n"
 512             . '<option value="26">26</option>' . "\n"
 513             . '<option value="27">27</option>' . "\n"
 514             . '<option value="28">28</option>' . "\n"
 515             . '<option value="29">29</option>' . "\n"
 516             . '<option value="30">30</option>' . "\n"
 517             . '<option value="31">31</option>' . "\n"
 518             . '</select>' . "\n",
 519                              $dh->date_select());
 520      }
 521  
 522      /**
 523       *  Test date_select() function
 524       *
 525       *  Test the {@link date_select()} function in the
 526       *  {@link date_helper.php} procedural file
 527       */
 528      public function testDate_select_function() {
 529          $_REQUEST['Person']['birthdate(1i)'] = '1955';
 530          $_REQUEST['Person']['birthdate(2i)'] = '08';
 531          $_REQUEST['Person']['birthdate(3i)'] = '13';
 532  
 533          //  Test with default format
 534          $this->assertEquals('<select name="Person[birthdate(1i)]">' . "\n"
 535             . '<option value="1950">1950</option>' . "\n"
 536             . '<option value="1951">1951</option>' . "\n"
 537             . '<option value="1952">1952</option>' . "\n"
 538             . '<option value="1953">1953</option>' . "\n"
 539             . '<option value="1954">1954</option>' . "\n"
 540             . '<option value="1955"  selected="selected">1955</option>' . "\n"
 541             . '<option value="1956">1956</option>' . "\n"
 542             . '<option value="1957">1957</option>' . "\n"
 543             . '<option value="1958">1958</option>' . "\n"
 544             . '<option value="1959">1959</option>' . "\n"
 545             . '<option value="1960">1960</option>' . "\n"
 546             . '</select>' . "\n"
 547             . ' <select name="Person[birthdate(2i)]">' . "\n"
 548             . '<option value="01">January</option>' . "\n"
 549             . '<option value="02">February</option>' . "\n"
 550             . '<option value="03">March</option>' . "\n"
 551             . '<option value="04">April</option>' . "\n"
 552             . '<option value="05">May</option>' . "\n"
 553             . '<option value="06">June</option>' . "\n"
 554             . '<option value="07">July</option>' . "\n"
 555             . '<option value="08" selected="selected">August</option>' . "\n"
 556             . '<option value="09">September</option>' . "\n"
 557             . '<option value="10">October</option>' . "\n"
 558             . '<option value="11">November</option>' . "\n"
 559             . '<option value="12">December</option>' . "\n"
 560             . '</select>' . "\n"
 561             . ' <select name="Person[birthdate(3i)]">' . "\n"
 562             . '<option value="01">01</option>' . "\n"
 563             . '<option value="02">02</option>' . "\n"
 564             . '<option value="03">03</option>' . "\n"
 565             . '<option value="04">04</option>' . "\n"
 566             . '<option value="05">05</option>' . "\n"
 567             . '<option value="06">06</option>' . "\n"
 568             . '<option value="07">07</option>' . "\n"
 569             . '<option value="08">08</option>' . "\n"
 570             . '<option value="09">09</option>' . "\n"
 571             . '<option value="10">10</option>' . "\n"
 572             . '<option value="11">11</option>' . "\n"
 573             . '<option value="12">12</option>' . "\n"
 574             . '<option value="13"  selected="selected">13</option>' . "\n"
 575             . '<option value="14">14</option>' . "\n"
 576             . '<option value="15">15</option>' . "\n"
 577             . '<option value="16">16</option>' . "\n"
 578             . '<option value="17">17</option>' . "\n"
 579             . '<option value="18">18</option>' . "\n"
 580             . '<option value="19">19</option>' . "\n"
 581             . '<option value="20">20</option>' . "\n"
 582             . '<option value="21">21</option>' . "\n"
 583             . '<option value="22">22</option>' . "\n"
 584             . '<option value="23">23</option>' . "\n"
 585             . '<option value="24">24</option>' . "\n"
 586             . '<option value="25">25</option>' . "\n"
 587             . '<option value="26">26</option>' . "\n"
 588             . '<option value="27">27</option>' . "\n"
 589             . '<option value="28">28</option>' . "\n"
 590             . '<option value="29">29</option>' . "\n"
 591             . '<option value="30">30</option>' . "\n"
 592             . '<option value="31">31</option>' . "\n"
 593             . '</select>' . "\n",
 594               date_select('Person', 'birthdate'));
 595       }
 596  
 597      /**
 598       *  Test select_expiration_date() method
 599       *
 600       *  Test the {@link DateHelper::select_expiration_date()} method
 601       */
 602      public function testSelect_expiration_date_method() {
 603          $dh = new DateHelper;
 604  
 605          //  Test expiration date of August this year
 606          $_REQUEST['expiration_year'] = date('Y');
 607          $_REQUEST['expiration_month'] = '08';
 608          $this->assertContains('<option value="'.date('Y').
 609                                '"  selected="selected"',
 610                     $dh->select_expiration_date());
 611          $this->assertContains('<option value="'.(date('Y')+7).'"',
 612                     $dh->select_expiration_date());
 613          $this->assertContains('<option value="08" selected="selected">'
 614                                . '8</option>',
 615                     $dh->select_expiration_date());
 616      }
 617  
 618      /**
 619       *  Test select_expiration_date() function
 620       *
 621       *  Test the {@link select_expiration_date()} function in the
 622       *  {@link date_helper.php} procedural file
 623       */
 624      public function testSelect_expiration_date_function() {
 625  
 626          //  Test expiration date of August this year
 627          $_REQUEST['expiration_year'] = date('Y');
 628          $_REQUEST['expiration_month'] = '08';
 629          $this->assertContains('<option value="'.date('Y').
 630                                '"  selected="selected"',
 631                                select_expiration_date());
 632          $this->assertContains('<option value="'.(date('Y')+7).'"',
 633                                select_expiration_date());
 634          $this->assertContains('<option value="08" selected="selected">'
 635                                . '8</option>',
 636                                select_expiration_date());
 637      }
 638  
 639      /**
 640       *  Test select_date() method
 641       *
 642       *  Test the {@link DateHelper::select_date()} method
 643       */
 644      public function testSelect_date_method() {
 645          $dh = new DateHelper;
 646          $this->assertEquals('<select name="year">' . "\n"
 647             . '<option value="1993">1993</option>' . "\n"
 648             . '<option value="1994">1994</option>' . "\n"
 649             . '<option value="1995">1995</option>' . "\n"
 650             . '<option value="1996">1996</option>' . "\n"
 651             . '<option value="1997">1997</option>' . "\n"
 652             . '<option value="1998"  selected="selected">1998</option>' . "\n"
 653             . '<option value="1999">1999</option>' . "\n"
 654             . '<option value="2000">2000</option>' . "\n"
 655             . '<option value="2001">2001</option>' . "\n"
 656             . '<option value="2002">2002</option>' . "\n"
 657             . '<option value="2003">2003</option>' . "\n"
 658             . '</select>' . "\n"
 659             . '<select name="month">' . "\n"
 660             . '<option value="01">January</option>' . "\n"
 661             . '<option value="02">February</option>' . "\n"
 662             . '<option value="03">March</option>' . "\n"
 663             . '<option value="04">April</option>' . "\n"
 664             . '<option value="05">May</option>' . "\n"
 665             . '<option value="06">June</option>' . "\n"
 666             . '<option value="07">July</option>' . "\n"
 667             . '<option value="08" selected="selected">August</option>' . "\n"
 668             . '<option value="09">September</option>' . "\n"
 669             . '<option value="10">October</option>' . "\n"
 670             . '<option value="11">November</option>' . "\n"
 671             . '<option value="12">December</option>' . "\n"
 672             . '</select>' . "\n"
 673             . '<select name="day">' . "\n"
 674             . '<option value="01">01</option>' . "\n"
 675             . '<option value="02">02</option>' . "\n"
 676             . '<option value="03">03</option>' . "\n"
 677             . '<option value="04"  selected="selected">04</option>' . "\n"
 678             . '<option value="05">05</option>' . "\n"
 679             . '<option value="06">06</option>' . "\n"
 680             . '<option value="07">07</option>' . "\n"
 681             . '<option value="08">08</option>' . "\n"
 682             . '<option value="09">09</option>' . "\n"
 683             . '<option value="10">10</option>' . "\n"
 684             . '<option value="11">11</option>' . "\n"
 685             . '<option value="12">12</option>' . "\n"
 686             . '<option value="13">13</option>' . "\n"
 687             . '<option value="14">14</option>' . "\n"
 688             . '<option value="15">15</option>' . "\n"
 689             . '<option value="16">16</option>' . "\n"
 690             . '<option value="17">17</option>' . "\n"
 691             . '<option value="18">18</option>' . "\n"
 692             . '<option value="19">19</option>' . "\n"
 693             . '<option value="20">20</option>' . "\n"
 694             . '<option value="21">21</option>' . "\n"
 695             . '<option value="22">22</option>' . "\n"
 696             . '<option value="23">23</option>' . "\n"
 697             . '<option value="24">24</option>' . "\n"
 698             . '<option value="25">25</option>' . "\n"
 699             . '<option value="26">26</option>' . "\n"
 700             . '<option value="27">27</option>' . "\n"
 701             . '<option value="28">28</option>' . "\n"
 702             . '<option value="29">29</option>' . "\n"
 703             . '<option value="30">30</option>' . "\n"
 704             . '<option value="31">31</option>' . "\n"
 705             . '</select>' . "\n",
 706                              $dh->select_date('August 4, 1998'));
 707      }
 708  
 709      /**
 710       *  Test select_date() function
 711       *
 712       *  Test the {@link select_date()} function in procedural file
 713       *  {@link date_helper.php}
 714       */
 715      public function testSelect_date_function() {
 716          $this->assertEquals('<select name="year">' . "\n"
 717             . '<option value="1993">1993</option>' . "\n"
 718             . '<option value="1994">1994</option>' . "\n"
 719             . '<option value="1995">1995</option>' . "\n"
 720             . '<option value="1996">1996</option>' . "\n"
 721             . '<option value="1997">1997</option>' . "\n"
 722             . '<option value="1998"  selected="selected">1998</option>' . "\n"
 723             . '<option value="1999">1999</option>' . "\n"
 724             . '<option value="2000">2000</option>' . "\n"
 725             . '<option value="2001">2001</option>' . "\n"
 726             . '<option value="2002">2002</option>' . "\n"
 727             . '<option value="2003">2003</option>' . "\n"
 728             . '</select>' . "\n"
 729             . '<select name="month">' . "\n"
 730             . '<option value="01">January</option>' . "\n"
 731             . '<option value="02">February</option>' . "\n"
 732             . '<option value="03">March</option>' . "\n"
 733             . '<option value="04">April</option>' . "\n"
 734             . '<option value="05">May</option>' . "\n"
 735             . '<option value="06">June</option>' . "\n"
 736             . '<option value="07">July</option>' . "\n"
 737             . '<option value="08" selected="selected">August</option>' . "\n"
 738             . '<option value="09">September</option>' . "\n"
 739             . '<option value="10">October</option>' . "\n"
 740             . '<option value="11">November</option>' . "\n"
 741             . '<option value="12">December</option>' . "\n"
 742             . '</select>' . "\n"
 743             . '<select name="day">' . "\n"
 744             . '<option value="01">01</option>' . "\n"
 745             . '<option value="02">02</option>' . "\n"
 746             . '<option value="03">03</option>' . "\n"
 747             . '<option value="04"  selected="selected">04</option>' . "\n"
 748             . '<option value="05">05</option>' . "\n"
 749             . '<option value="06">06</option>' . "\n"
 750             . '<option value="07">07</option>' . "\n"
 751             . '<option value="08">08</option>' . "\n"
 752             . '<option value="09">09</option>' . "\n"
 753             . '<option value="10">10</option>' . "\n"
 754             . '<option value="11">11</option>' . "\n"
 755             . '<option value="12">12</option>' . "\n"
 756             . '<option value="13">13</option>' . "\n"
 757             . '<option value="14">14</option>' . "\n"
 758             . '<option value="15">15</option>' . "\n"
 759             . '<option value="16">16</option>' . "\n"
 760             . '<option value="17">17</option>' . "\n"
 761             . '<option value="18">18</option>' . "\n"
 762             . '<option value="19">19</option>' . "\n"
 763             . '<option value="20">20</option>' . "\n"
 764             . '<option value="21">21</option>' . "\n"
 765             . '<option value="22">22</option>' . "\n"
 766             . '<option value="23">23</option>' . "\n"
 767             . '<option value="24">24</option>' . "\n"
 768             . '<option value="25">25</option>' . "\n"
 769             . '<option value="26">26</option>' . "\n"
 770             . '<option value="27">27</option>' . "\n"
 771             . '<option value="28">28</option>' . "\n"
 772             . '<option value="29">29</option>' . "\n"
 773             . '<option value="30">30</option>' . "\n"
 774             . '<option value="31">31</option>' . "\n"
 775             . '</select>' . "\n",
 776                              select_date('August 4, 1998'));
 777      }
 778  
 779      /**
 780       *  Test select_datetime() method
 781       *
 782       *  Test {@link DateHelper::select_datetime() method
 783       */
 784      public function testSelect_datetime_method() {
 785          //  Default format
 786          $dh = new DateHelper;
 787          $this->assertEquals('<select name="year">' . "\n"
 788             . '<option value="1995">1995</option>' . "\n"
 789             . '<option value="1996">1996</option>' . "\n"
 790             . '<option value="1997">1997</option>' . "\n"
 791             . '<option value="1998">1998</option>' . "\n"
 792             . '<option value="1999">1999</option>' . "\n"
 793             . '<option value="2000"  selected="selected">2000</option>' . "\n"
 794             . '<option value="2001">2001</option>' . "\n"
 795             . '<option value="2002">2002</option>' . "\n"
 796             . '<option value="2003">2003</option>' . "\n"
 797             . '<option value="2004">2004</option>' . "\n"
 798             . '<option value="2005">2005</option>' . "\n"
 799             . '</select>' . "\n"
 800             . '<select name="month">' . "\n"
 801             . '<option value="01">January</option>' . "\n"
 802             . '<option value="02">February</option>' . "\n"
 803             . '<option value="03">March</option>' . "\n"
 804             . '<option value="04">April</option>' . "\n"
 805             . '<option value="05">May</option>' . "\n"
 806             . '<option value="06">June</option>' . "\n"
 807             . '<option value="07">July</option>' . "\n"
 808             . '<option value="08">August</option>' . "\n"
 809             . '<option value="09" selected="selected">September</option>' . "\n"
 810             . '<option value="10">October</option>' . "\n"
 811             . '<option value="11">November</option>' . "\n"
 812             . '<option value="12">December</option>' . "\n"
 813             . '</select>' . "\n"
 814             . '<select name="day">' . "\n"
 815             . '<option value="01">01</option>' . "\n"
 816             . '<option value="02">02</option>' . "\n"
 817             . '<option value="03">03</option>' . "\n"
 818             . '<option value="04">04</option>' . "\n"
 819             . '<option value="05">05</option>' . "\n"
 820             . '<option value="06">06</option>' . "\n"
 821             . '<option value="07">07</option>' . "\n"
 822             . '<option value="08">08</option>' . "\n"
 823             . '<option value="09">09</option>' . "\n"
 824             . '<option value="10">10</option>' . "\n"
 825             . '<option value="11">11</option>' . "\n"
 826             . '<option value="12">12</option>' . "\n"
 827             . '<option value="13">13</option>' . "\n"
 828             . '<option value="14">14</option>' . "\n"
 829             . '<option value="15">15</option>' . "\n"
 830             . '<option value="16">16</option>' . "\n"
 831             . '<option value="17"  selected="selected">17</option>' . "\n"
 832             . '<option value="18">18</option>' . "\n"
 833             . '<option value="19">19</option>' . "\n"
 834             . '<option value="20">20</option>' . "\n"
 835             . '<option value="21">21</option>' . "\n"
 836             . '<option value="22">22</option>' . "\n"
 837             . '<option value="23">23</option>' . "\n"
 838             . '<option value="24">24</option>' . "\n"
 839             . '<option value="25">25</option>' . "\n"
 840             . '<option value="26">26</option>' . "\n"
 841             . '<option value="27">27</option>' . "\n"
 842             . '<option value="28">28</option>' . "\n"
 843             . '<option value="29">29</option>' . "\n"
 844             . '<option value="30">30</option>' . "\n"
 845             . '<option value="31">31</option>' . "\n"
 846             . '</select>' . "\n"
 847             . '<select name="hour">' . "\n"
 848             . '<option value="00">00</option>' . "\n"
 849             . '<option value="01">01</option>' . "\n"
 850             . '<option value="02">02</option>' . "\n"
 851             . '<option value="03">03</option>' . "\n"
 852             . '<option value="04">04</option>' . "\n"
 853             . '<option value="05">05</option>' . "\n"
 854             . '<option value="06">06</option>' . "\n"
 855             . '<option value="07">07</option>' . "\n"
 856             . '<option value="08">08</option>' . "\n"
 857             . '<option value="09"  selected="selected">09</option>' . "\n"
 858             . '<option value="10">10</option>' . "\n"
 859             . '<option value="11">11</option>' . "\n"
 860             . '<option value="12">12</option>' . "\n"
 861             . '<option value="13">13</option>' . "\n"
 862             . '<option value="14">14</option>' . "\n"
 863             . '<option value="15">15</option>' . "\n"
 864             . '<option value="16">16</option>' . "\n"
 865             . '<option value="17">17</option>' . "\n"
 866             . '<option value="18">18</option>' . "\n"
 867             . '<option value="19">19</option>' . "\n"
 868             . '<option value="20">20</option>' . "\n"
 869             . '<option value="21">21</option>' . "\n"
 870             . '<option value="22">22</option>' . "\n"
 871             . '<option value="23">23</option>' . "\n"
 872             . '</select>' . "\n"
 873             . '<select name="minute">' . "\n"
 874             . '<option value="00">00</option>' . "\n"
 875             . '<option value="01">01</option>' . "\n"
 876             . '<option value="02">02</option>' . "\n"
 877             . '<option value="03">03</option>' . "\n"
 878             . '<option value="04">04</option>' . "\n"
 879             . '<option value="05">05</option>' . "\n"
 880             . '<option value="06">06</option>' . "\n"
 881             . '<option value="07">07</option>' . "\n"
 882             . '<option value="08">08</option>' . "\n"
 883             . '<option value="09">09</option>' . "\n"
 884             . '<option value="10">10</option>' . "\n"
 885             . '<option value="11">11</option>' . "\n"
 886             . '<option value="12">12</option>' . "\n"
 887             . '<option value="13">13</option>' . "\n"
 888             . '<option value="14">14</option>' . "\n"
 889             . '<option value="15">15</option>' . "\n"
 890             . '<option value="16">16</option>' . "\n"
 891             . '<option value="17">17</option>' . "\n"
 892             . '<option value="18">18</option>' . "\n"
 893             . '<option value="19">19</option>' . "\n"
 894             . '<option value="20">20</option>' . "\n"
 895             . '<option value="21">21</option>' . "\n"
 896             . '<option value="22">22</option>' . "\n"
 897             . '<option value="23">23</option>' . "\n"
 898             . '<option value="24">24</option>' . "\n"
 899             . '<option value="25">25</option>' . "\n"
 900             . '<option value="26">26</option>' . "\n"
 901             . '<option value="27">27</option>' . "\n"
 902             . '<option value="28">28</option>' . "\n"
 903             . '<option value="29">29</option>' . "\n"
 904             . '<option value="30">30</option>' . "\n"
 905             . '<option value="31">31</option>' . "\n"
 906             . '<option value="32">32</option>' . "\n"
 907             . '<option value="33">33</option>' . "\n"
 908             . '<option value="34">34</option>' . "\n"
 909             . '<option value="35">35</option>' . "\n"
 910             . '<option value="36">36</option>' . "\n"
 911             . '<option value="37">37</option>' . "\n"
 912             . '<option value="38">38</option>' . "\n"
 913             . '<option value="39">39</option>' . "\n"
 914             . '<option value="40">40</option>' . "\n"
 915             . '<option value="41">41</option>' . "\n"
 916             . '<option value="42"  selected="selected">42</option>' . "\n"
 917             . '<option value="43">43</option>' . "\n"
 918             . '<option value="44">44</option>' . "\n"
 919             . '<option value="45">45</option>' . "\n"
 920             . '<option value="46">46</option>' . "\n"
 921             . '<option value="47">47</option>' . "\n"
 922             . '<option value="48">48</option>' . "\n"
 923             . '<option value="49">49</option>' . "\n"
 924             . '<option value="50">50</option>' . "\n"
 925             . '<option value="51">51</option>' . "\n"
 926             . '<option value="52">52</option>' . "\n"
 927             . '<option value="53">53</option>' . "\n"
 928             . '<option value="54">54</option>' . "\n"
 929             . '<option value="55">55</option>' . "\n"
 930             . '<option value="56">56</option>' . "\n"
 931             . '<option value="57">57</option>' . "\n"
 932             . '<option value="58">58</option>' . "\n"
 933             . '<option value="59">59</option>' . "\n"
 934             . '</select>' . "\n",
 935             $dh->select_datetime('2000-09-17 09:42:53'));
 936      }
 937  
 938      /**
 939       *  Test select_datetime() function
 940       *
 941       *  Test the {@link select_datetime()} function in procedural file
 942       *  {@link date_helper.php}
 943       */
 944      public function testSelect_datetime_function() {
 945          $this->assertEquals('<select name="year">' . "\n"
 946             . '<option value="1995">1995</option>' . "\n"
 947             . '<option value="1996">1996</option>' . "\n"
 948             . '<option value="1997">1997</option>' . "\n"
 949             . '<option value="1998">1998</option>' . "\n"
 950             . '<option value="1999">1999</option>' . "\n"
 951             . '<option value="2000"  selected="selected">2000</option>' . "\n"
 952             . '<option value="2001">2001</option>' . "\n"
 953             . '<option value="2002">2002</option>' . "\n"
 954             . '<option value="2003">2003</option>' . "\n"
 955             . '<option value="2004">2004</option>' . "\n"
 956             . '<option value="2005">2005</option>' . "\n"
 957             . '</select>' . "\n"
 958             . '<select name="month">' . "\n"
 959             . '<option value="01">January</option>' . "\n"
 960             . '<option value="02">February</option>' . "\n"
 961             . '<option value="03">March</option>' . "\n"
 962             . '<option value="04">April</option>' . "\n"
 963             . '<option value="05">May</option>' . "\n"
 964             . '<option value="06">June</option>' . "\n"
 965             . '<option value="07">July</option>' . "\n"
 966             . '<option value="08">August</option>' . "\n"
 967             . '<option value="09" selected="selected">September</option>' . "\n"
 968             . '<option value="10">October</option>' . "\n"
 969             . '<option value="11">November</option>' . "\n"
 970             . '<option value="12">December</option>' . "\n"
 971             . '</select>' . "\n"
 972             . '<select name="day">' . "\n"
 973             . '<option value="01">01</option>' . "\n"
 974             . '<option value="02">02</option>' . "\n"
 975             . '<option value="03">03</option>' . "\n"
 976             . '<option value="04">04</option>' . "\n"
 977             . '<option value="05">05</option>' . "\n"
 978             . '<option value="06">06</option>' . "\n"
 979             . '<option value="07">07</option>' . "\n"
 980             . '<option value="08">08</option>' . "\n"
 981             . '<option value="09">09</option>' . "\n"
 982             . '<option value="10">10</option>' . "\n"
 983             . '<option value="11">11</option>' . "\n"
 984             . '<option value="12">12</option>' . "\n"
 985             . '<option value="13">13</option>' . "\n"
 986             . '<option value="14">14</option>' . "\n"
 987             . '<option value="15">15</option>' . "\n"
 988             . '<option value="16">16</option>' . "\n"
 989             . '<option value="17"  selected="selected">17</option>' . "\n"
 990             . '<option value="18">18</option>' . "\n"
 991             . '<option value="19">19</option>' . "\n"
 992             . '<option value="20">20</option>' . "\n"
 993             . '<option value="21">21</option>' . "\n"
 994             . '<option value="22">22</option>' . "\n"
 995             . '<option value="23">23</option>' . "\n"
 996             . '<option value="24">24</option>' . "\n"
 997             . '<option value="25">25</option>' . "\n"
 998             . '<option value="26">26</option>' . "\n"
 999             . '<option value="27">27</option>' . "\n"
1000             . '<option value="28">28</option>' . "\n"
1001             . '<option value="29">29</option>' . "\n"
1002             . '<option value="30">30</option>' . "\n"
1003             . '<option value="31">31</option>' . "\n"
1004             . '</select>' . "\n"
1005             . '<select name="hour">' . "\n"
1006             . '<option value="00">00</option>' . "\n"
1007             . '<option value="01">01</option>' . "\n"
1008             . '<option value="02">02</option>' . "\n"
1009             . '<option value="03">03</option>' . "\n"
1010             . '<option value="04">04</option>' . "\n"
1011             . '<option value="05">05</option>' . "\n"
1012             . '<option value="06">06</option>' . "\n"
1013             . '<option value="07">07</option>' . "\n"
1014             . '<option value="08">08</option>' . "\n"
1015             . '<option value="09"  selected="selected">09</option>' . "\n"
1016             . '<option value="10">10</option>' . "\n"
1017             . '<option value="11">11</option>' . "\n"
1018             . '<option value="12">12</option>' . "\n"
1019             . '<option value="13">13</option>' . "\n"
1020             . '<option value="14">14</option>' . "\n"
1021             . '<option value="15">15</option>' . "\n"
1022             . '<option value="16">16</option>' . "\n"
1023             . '<option value="17">17</option>' . "\n"
1024             . '<option value="18">18</option>' . "\n"
1025             . '<option value="19">19</option>' . "\n"
1026             . '<option value="20">20</option>' . "\n"
1027             . '<option value="21">21</option>' . "\n"
1028             . '<option value="22">22</option>' . "\n"
1029             . '<option value="23">23</option>' . "\n"
1030             . '</select>' . "\n"
1031             . '<select name="minute">' . "\n"
1032             . '<option value="00">00</option>' . "\n"
1033             . '<option value="01">01</option>' . "\n"
1034             . '<option value="02">02</option>' . "\n"
1035             . '<option value="03">03</option>' . "\n"
1036             . '<option value="04">04</option>' . "\n"
1037             . '<option value="05">05</option>' . "\n"
1038             . '<option value="06">06</option>' . "\n"
1039             . '<option value="07">07</option>' . "\n"
1040             . '<option value="08">08</option>' . "\n"
1041             . '<option value="09">09</option>' . "\n"
1042             . '<option value="10">10</option>' . "\n"
1043             . '<option value="11">11</option>' . "\n"
1044             . '<option value="12">12</option>' . "\n"
1045             . '<option value="13">13</option>' . "\n"
1046             . '<option value="14">14</option>' . "\n"
1047             . '<option value="15">15</option>' . "\n"
1048             . '<option value="16">16</option>' . "\n"
1049             . '<option value="17">17</option>' . "\n"
1050             . '<option value="18">18</option>' . "\n"
1051             . '<option value="19">19</option>' . "\n"
1052             . '<option value="20">20</option>' . "\n"
1053             . '<option value="21">21</option>' . "\n"
1054             . '<option value="22">22</option>' . "\n"
1055             . '<option value="23">23</option>' . "\n"
1056             . '<option value="24">24</option>' . "\n"
1057             . '<option value="25">25</option>' . "\n"
1058             . '<option value="26">26</option>' . "\n"
1059             . '<option value="27">27</option>' . "\n"
1060             . '<option value="28">28</option>' . "\n"
1061             . '<option value="29">29</option>' . "\n"
1062             . '<option value="30">30</option>' . "\n"
1063             . '<option value="31">31</option>' . "\n"
1064             . '<option value="32">32</option>' . "\n"
1065             . '<option value="33">33</option>' . "\n"
1066             . '<option value="34">34</option>' . "\n"
1067             . '<option value="35">35</option>' . "\n"
1068             . '<option value="36">36</option>' . "\n"
1069             . '<option value="37">37</option>' . "\n"
1070             . '<option value="38">38</option>' . "\n"
1071             . '<option value="39">39</option>' . "\n"
1072             . '<option value="40">40</option>' . "\n"
1073             . '<option value="41">41</option>' . "\n"
1074             . '<option value="42"  selected="selected">42</option>' . "\n"
1075             . '<option value="43">43</option>' . "\n"
1076             . '<option value="44">44</option>' . "\n"
1077             . '<option value="45">45</option>' . "\n"
1078             . '<option value="46">46</option>' . "\n"
1079             . '<option value="47">47</option>' . "\n"
1080             . '<option value="48">48</option>' . "\n"
1081             . '<option value="49">49</option>' . "\n"
1082             . '<option value="50">50</option>' . "\n"
1083             . '<option value="51">51</option>' . "\n"
1084             . '<option value="52">52</option>' . "\n"
1085             . '<option value="53">53</option>' . "\n"
1086             . '<option value="54">54</option>' . "\n"
1087             . '<option value="55">55</option>' . "\n"
1088             . '<option value="56">56</option>' . "\n"
1089             . '<option value="57">57</option>' . "\n"
1090             . '<option value="58">58</option>' . "\n"
1091             . '<option value="59">59</option>' . "\n"
1092             . '</select>' . "\n",
1093             select_datetime('2000-09-17 09:42:53'));
1094      }
1095  
1096      /**
1097       *  Test select_time()
1098       *
1099       *  Test the {@link DateHelper::select_time()} method
1100       */
1101      public function testSelect_time() {
1102          $dh = new DateHelper;
1103  
1104          //  Test 8:12 AM on April 8, 1998
1105          $this->assertEquals('<select name="hour">' . "\n"
1106             . '<option value="00">00</option>' . "\n"
1107             . '<option value="01">01</option>' . "\n"
1108             . '<option value="02">02</option>' . "\n"
1109             . '<option value="03">03</option>' . "\n"
1110             . '<option value="04">04</option>' . "\n"
1111             . '<option value="05">05</option>' . "\n"
1112             . '<option value="06">06</option>' . "\n"
1113             . '<option value="07">07</option>' . "\n"
1114             . '<option value="08"  selected="selected">08</option>' . "\n"
1115             . '<option value="09">09</option>' . "\n"
1116             . '<option value="10">10</option>' . "\n"
1117             . '<option value="11">11</option>' . "\n"
1118             . '<option value="12">12</option>' . "\n"
1119             . '<option value="13">13</option>' . "\n"
1120             . '<option value="14">14</option>' . "\n"
1121             . '<option value="15">15</option>' . "\n"
1122             . '<option value="16">16</option>' . "\n"
1123             . '<option value="17">17</option>' . "\n"
1124             . '<option value="18">18</option>' . "\n"
1125             . '<option value="19">19</option>' . "\n"
1126             . '<option value="20">20</option>' . "\n"
1127             . '<option value="21">21</option>' . "\n"
1128             . '<option value="22">22</option>' . "\n"
1129             . '<option value="23">23</option>' . "\n"
1130             . '</select>' . "\n"
1131             . '<select name="minute">' . "\n"
1132             . '<option value="00">00</option>' . "\n"
1133             . '<option value="01">01</option>' . "\n"
1134             . '<option value="02">02</option>' . "\n"
1135             . '<option value="03">03</option>' . "\n"
1136             . '<option value="04">04</option>' . "\n"
1137             . '<option value="05">05</option>' . "\n"
1138             . '<option value="06">06</option>' . "\n"
1139             . '<option value="07">07</option>' . "\n"
1140             . '<option value="08">08</option>' . "\n"
1141             . '<option value="09">09</option>' . "\n"
1142             . '<option value="10">10</option>' . "\n"
1143             . '<option value="11">11</option>' . "\n"
1144             . '<option value="12"  selected="selected">12</option>' . "\n"
1145             . '<option value="13">13</option>' . "\n"
1146             . '<option value="14">14</option>' . "\n"
1147             . '<option value="15">15</option>' . "\n"
1148             . '<option value="16">16</option>' . "\n"
1149             . '<option value="17">17</option>' . "\n"
1150             . '<option value="18">18</option>' . "\n"
1151             . '<option value="19">19</option>' . "\n"
1152             . '<option value="20">20</option>' . "\n"
1153             . '<option value="21">21</option>' . "\n"
1154             . '<option value="22">22</option>' . "\n"
1155             . '<option value="23">23</option>' . "\n"
1156             . '<option value="24">24</option>' . "\n"
1157             . '<option value="25">25</option>' . "\n"
1158             . '<option value="26">26</option>' . "\n"
1159             . '<option value="27">27</option>' . "\n"
1160             . '<option value="28">28</option>' . "\n"
1161             . '<option value="29">29</option>' . "\n"
1162             . '<option value="30">30</option>' . "\n"
1163             . '<option value="31">31</option>' . "\n"
1164             . '<option value="32">32</option>' . "\n"
1165             . '<option value="33">33</option>' . "\n"
1166             . '<option value="34">34</option>' . "\n"
1167             . '<option value="35">35</option>' . "\n"
1168             . '<option value="36">36</option>' . "\n"
1169             . '<option value="37">37</option>' . "\n"
1170             . '<option value="38">38</option>' . "\n"
1171             . '<option value="39">39</option>' . "\n"
1172             . '<option value="40">40</option>' . "\n"
1173             . '<option value="41">41</option>' . "\n"
1174             . '<option value="42">42</option>' . "\n"
1175             . '<option value="43">43</option>' . "\n"
1176             . '<option value="44">44</option>' . "\n"
1177             . '<option value="45">45</option>' . "\n"
1178             . '<option value="46">46</option>' . "\n"
1179             . '<option value="47">47</option>' . "\n"
1180             . '<option value="48">48</option>' . "\n"
1181             . '<option value="49">49</option>' . "\n"
1182             . '<option value="50">50</option>' . "\n"
1183             . '<option value="51">51</option>' . "\n"
1184             . '<option value="52">52</option>' . "\n"
1185             . '<option value="53">53</option>' . "\n"
1186             . '<option value="54">54</option>' . "\n"
1187             . '<option value="55">55</option>' . "\n"
1188             . '<option value="56">56</option>' . "\n"
1189             . '<option value="57">57</option>' . "\n"
1190             . '<option value="58">58</option>' . "\n"
1191             . '<option value="59">59</option>' . "\n"
1192             . '</select>' . "\n",
1193             $dh->select_time('1998-04-08 8:12'));
1194      }
1195  
1196      /**
1197       *  Test time_select() method
1198       *
1199       *  Test the {@link DateHelper::time_select()} method
1200       */
1201      public function testTime_select_method() {
1202          $dh = new DateHelper('Person','lunch');
1203          $dh->controller_object = new ActionController;
1204          $ar = new ActiveRecord;
1205          $dh->controller_object->Person = $ar;
1206  
1207          //  With no value in $_REQUEST, data should be
1208          //  retrieved from the the ActiveRecord
1209          $ar->expect_query("lunch","11:30:45");
1210          $this->assertEquals('<select name="Person[lunch(4i)]">' . "\n"
1211             . '<option value="00">00</option>' . "\n"
1212             . '<option value="01">01</option>' . "\n"
1213             . '<option value="02">02</option>' . "\n"
1214             . '<option value="03">03</option>' . "\n"
1215             . '<option value="04">04</option>' . "\n"
1216             . '<option value="05">05</option>' . "\n"
1217             . '<option value="06">06</option>' . "\n"
1218             . '<option value="07">07</option>' . "\n"
1219             . '<option value="08">08</option>' . "\n"
1220             . '<option value="09">09</option>' . "\n"
1221             . '<option value="10">10</option>' . "\n"
1222             . '<option value="11"  selected="selected">11</option>' . "\n"
1223             . '<option value="12">12</option>' . "\n"
1224             . '<option value="13">13</option>' . "\n"
1225             . '<option value="14">14</option>' . "\n"
1226             . '<option value="15">15</option>' . "\n"
1227             . '<option value="16">16</option>' . "\n"
1228             . '<option value="17">17</option>' . "\n"
1229             . '<option value="18">18</option>' . "\n"
1230             . '<option value="19">19</option>' . "\n"
1231             . '<option value="20">20</option>' . "\n"
1232             . '<option value="21">21</option>' . "\n"
1233             . '<option value="22">22</option>' . "\n"
1234             . '<option value="23">23</option>' . "\n"
1235             . '</select>' . "\n"
1236             . ' : <select name="Person[lunch(5i)]">' . "\n"
1237             . '<option value="00">00</option>' . "\n"
1238             . '<option value="01">01</option>' . "\n"
1239             . '<option value="02">02</option>' . "\n"
1240             . '<option value="03">03</option>' . "\n"
1241             . '<option value="04">04</option>' . "\n"
1242             . '<option value="05">05</option>' . "\n"
1243             . '<option value="06">06</option>' . "\n"
1244             . '<option value="07">07</option>' . "\n"
1245             . '<option value="08">08</option>' . "\n"
1246             . '<option value="09">09</option>' . "\n"
1247             . '<option value="10">10</option>' . "\n"
1248             . '<option value="11">11</option>' . "\n"
1249             . '<option value="12">12</option>' . "\n"
1250             . '<option value="13">13</option>' . "\n"
1251             . '<option value="14">14</option>' . "\n"
1252             . '<option value="15">15</option>' . "\n"
1253             . '<option value="16">16</option>' . "\n"
1254             . '<option value="17">17</option>' . "\n"
1255             . '<option value="18">18</option>' . "\n"
1256             . '<option value="19">19</option>' . "\n"
1257             . '<option value="20">20</option>' . "\n"
1258             . '<option value="21">21</option>' . "\n"
1259             . '<option value="22">22</option>' . "\n"
1260             . '<option value="23">23</option>' . "\n"
1261             . '<option value="24">24</option>' . "\n"
1262             . '<option value="25">25</option>' . "\n"
1263             . '<option value="26">26</option>' . "\n"
1264             . '<option value="27">27</option>' . "\n"
1265             . '<option value="28">28</option>' . "\n"
1266             . '<option value="29">29</option>' . "\n"
1267             . '<option value="30"  selected="selected">30</option>' . "\n"
1268             . '<option value="31">31</option>' . "\n"
1269             . '<option value="32">32</option>' . "\n"
1270             . '<option value="33">33</option>' . "\n"
1271             . '<option value="34">34</option>' . "\n"
1272             . '<option value="35">35</option>' . "\n"
1273             . '<option value="36">36</option>' . "\n"
1274             . '<option value="37">37</option>' . "\n"
1275             . '<option value="38">38</option>' . "\n"
1276             . '<option value="39">39</option>' . "\n"
1277             . '<option value="40">40</option>' . "\n"
1278             . '<option value="41">41</option>' . "\n"
1279             . '<option value="42">42</option>' . "\n"
1280             . '<option value="43">43</option>' . "\n"
1281             . '<option value="44">44</option>' . "\n"
1282             . '<option value="45">45</option>' . "\n"
1283             . '<option value="46">46</option>' . "\n"
1284             . '<option value="47">47</option>' . "\n"
1285             . '<option value="48">48</option>' . "\n"
1286             . '<option value="49">49</option>' . "\n"
1287             . '<option value="50">50</option>' . "\n"
1288             . '<option value="51">51</option>' . "\n"
1289             . '<option value="52">52</option>' . "\n"
1290             . '<option value="53">53</option>' . "\n"
1291             . '<option value="54">54</option>' . "\n"
1292             . '<option value="55">55</option>' . "\n"
1293             . '<option value="56">56</option>' . "\n"
1294             . '<option value="57">57</option>' . "\n"
1295             . '<option value="58">58</option>' . "\n"
1296             . '<option value="59">59</option>' . "\n"
1297             . '</select>' . "\n",
1298             $dh->time_select());
1299  
1300          //  Value in $_REQUEST should override the model
1301          $_REQUEST['Person']['lunch(4i)'] = '08';
1302          $_REQUEST['Person']['lunch(5i)'] = '12';
1303          $this->assertEquals('<select name="Person[lunch(4i)]">' . "\n"
1304             . '<option value="00">00</option>' . "\n"
1305             . '<option value="01">01</option>' . "\n"
1306             . '<option value="02">02</option>' . "\n"
1307             . '<option value="03">03</option>' . "\n"
1308             . '<option value="04">04</option>' . "\n"
1309             . '<option value="05">05</option>' . "\n"
1310             . '<option value="06">06</option>' . "\n"
1311             . '<option value="07">07</option>' . "\n"
1312             . '<option value="08"  selected="selected">08</option>' . "\n"
1313             . '<option value="09">09</option>' . "\n"
1314             . '<option value="10">10</option>' . "\n"
1315             . '<option value="11">11</option>' . "\n"
1316             . '<option value="12">12</option>' . "\n"
1317             . '<option value="13">13</option>' . "\n"
1318             . '<option value="14">14</option>' . "\n"
1319             . '<option value="15">15</option>' . "\n"
1320             . '<option value="16">16</option>' . "\n"
1321             . '<option value="17">17</option>' . "\n"
1322             . '<option value="18">18</option>' . "\n"
1323             . '<option value="19">19</option>' . "\n"
1324             . '<option value="20">20</option>' . "\n"
1325             . '<option value="21">21</option>' . "\n"
1326             . '<option value="22">22</option>' . "\n"
1327             . '<option value="23">23</option>' . "\n"
1328             . '</select>' . "\n"
1329             . ' : <select name="Person[lunch(5i)]">' . "\n"
1330             . '<option value="00">00</option>' . "\n"
1331             . '<option value="01">01</option>' . "\n"
1332             . '<option value="02">02</option>' . "\n"
1333             . '<option value="03">03</option>' . "\n"
1334             . '<option value="04">04</option>' . "\n"
1335             . '<option value="05">05</option>' . "\n"
1336             . '<option value="06">06</option>' . "\n"
1337             . '<option value="07">07</option>' . "\n"
1338             . '<option value="08">08</option>' . "\n"
1339             . '<option value="09">09</option>' . "\n"
1340             . '<option value="10">10</option>' . "\n"
1341             . '<option value="11">11</option>' . "\n"
1342             . '<option value="12"  selected="selected">12</option>' . "\n"
1343             . '<option value="13">13</option>' . "\n"
1344             . '<option value="14">14</option>' . "\n"
1345             . '<option value="15">15</option>' . "\n"
1346             . '<option value="16">16</option>' . "\n"
1347             . '<option value="17">17</option>' . "\n"
1348             . '<option value="18">18</option>' . "\n"
1349             . '<option value="19">19</option>' . "\n"
1350             . '<option value="20">20</option>' . "\n"
1351             . '<option value="21">21</option>' . "\n"
1352             . '<option value="22">22</option>' . "\n"
1353             . '<option value="23">23</option>' . "\n"
1354             . '<option value="24">24</option>' . "\n"
1355             . '<option value="25">25</option>' . "\n"
1356             . '<option value="26">26</option>' . "\n"
1357             . '<option value="27">27</option>' . "\n"
1358             . '<option value="28">28</option>' . "\n"
1359             . '<option value="29">29</option>' . "\n"
1360             . '<option value="30">30</option>' . "\n"
1361             . '<option value="31">31</option>' . "\n"
1362             . '<option value="32">32</option>' . "\n"
1363             . '<option value="33">33</option>' . "\n"
1364             . '<option value="34">34</option>' . "\n"
1365             . '<option value="35">35</option>' . "\n"
1366             . '<option value="36">36</option>' . "\n"
1367             . '<option value="37">37</option>' . "\n"
1368             . '<option value="38">38</option>' . "\n"
1369             . '<option value="39">39</option>' . "\n"
1370             . '<option value="40">40</option>' . "\n"
1371             . '<option value="41">41</option>' . "\n"
1372             . '<option value="42">42</option>' . "\n"
1373             . '<option value="43">43</option>' . "\n"
1374             . '<option value="44">44</option>' . "\n"
1375             . '<option value="45">45</option>' . "\n"
1376             . '<option value="46">46</option>' . "\n"
1377             . '<option value="47">47</option>' . "\n"
1378             . '<option value="48">48</option>' . "\n"
1379             . '<option value="49">49</option>' . "\n"
1380             . '<option value="50">50</option>' . "\n"
1381             . '<option value="51">51</option>' . "\n"
1382             . '<option value="52">52</option>' . "\n"
1383             . '<option value="53">53</option>' . "\n"
1384             . '<option value="54">54</option>' . "\n"
1385             . '<option value="55">55</option>' . "\n"
1386             . '<option value="56">56</option>' . "\n"
1387             . '<option value="57">57</option>' . "\n"
1388             . '<option value="58">58</option>' . "\n"
1389             . '<option value="59">59</option>' . "\n"
1390             . '</select>' . "\n",
1391             $dh->time_select());
1392  
1393          //  Test output format option 'discard_second' => false
1394          $_REQUEST['Person']['lunch(4i)'] = '12';
1395          $_REQUEST['Person']['lunch(5i)'] = '14';
1396          $_REQUEST['Person']['lunch(6i)'] = '27';
1397          $this->assertEquals('<select name="Person[lunch(4i)]">' . "\n"
1398             . '<option value="00">00</option>' . "\n"
1399             . '<option value="01">01</option>' . "\n"
1400             . '<option value="02">02</option>' . "\n"
1401             . '<option value="03">03</option>' . "\n"
1402             . '<option value="04">04</option>' . "\n"
1403             . '<option value="05">05</option>' . "\n"
1404             . '<option value="06">06</option>' . "\n"
1405             . '<option value="07">07</option>' . "\n"
1406             . '<option value="08">08</option>' . "\n"
1407             . '<option value="09">09</option>' . "\n"
1408             . '<option value="10">10</option>' . "\n"
1409             . '<option value="11">11</option>' . "\n"
1410             . '<option value="12"  selected="selected">12</option>' . "\n"
1411             . '<option value="13">13</option>' . "\n"
1412             . '<option value="14">14</option>' . "\n"
1413             . '<option value="15">15</option>' . "\n"
1414             . '<option value="16">16</option>' . "\n"
1415             . '<option value="17">17</option>' . "\n"
1416             . '<option value="18">18</option>' . "\n"
1417             . '<option value="19">19</option>' . "\n"
1418             . '<option value="20">20</option>' . "\n"
1419             . '<option value="21">21</option>' . "\n"
1420             . '<option value="22">22</option>' . "\n"
1421             . '<option value="23">23</option>' . "\n"
1422             . '</select>' . "\n"
1423             . ' : <select name="Person[lunch(5i)]">' . "\n"
1424             . '<option value="00">00</option>' . "\n"
1425             . '<option value="01">01</option>' . "\n"
1426             . '<option value="02">02</option>' . "\n"
1427             . '<option value="03">03</option>' . "\n"
1428             . '<option value="04">04</option>' . "\n"
1429             . '<option value="05">05</option>' . "\n"
1430             . '<option value="06">06</option>' . "\n"
1431             . '<option value="07">07</option>' . "\n"
1432             . '<option value="08">08</option>' . "\n"
1433             . '<option value="09">09</option>' . "\n"
1434             . '<option value="10">10</option>' . "\n"
1435             . '<option value="11">11</option>' . "\n"
1436             . '<option value="12">12</option>' . "\n"
1437             . '<option value="13">13</option>' . "\n"
1438             . '<option value="14"  selected="selected">14</option>' . "\n"
1439             . '<option value="15">15</option>' . "\n"
1440             . '<option value="16">16</option>' . "\n"
1441             . '<option value="17">17</option>' . "\n"
1442             . '<option value="18">18</option>' . "\n"
1443             . '<option value="19">19</option>' . "\n"
1444             . '<option value="20">20</option>' . "\n"
1445             . '<option value="21">21</option>' . "\n"
1446             . '<option value="22">22</option>' . "\n"
1447             . '<option value="23">23</option>' . "\n"
1448             . '<option value="24">24</option>' . "\n"
1449             . '<option value="25">25</option>' . "\n"
1450             . '<option value="26">26</option>' . "\n"
1451             . '<option value="27">27</option>' . "\n"
1452             . '<option value="28">28</option>' . "\n"
1453             . '<option value="29">29</option>' . "\n"
1454             . '<option value="30">30</option>' . "\n"
1455             . '<option value="31">31</option>' . "\n"
1456             . '<option value="32">32</option>' . "\n"
1457             . '<option value="33">33</option>' . "\n"
1458             . '<option value="34">34</option>' . "\n"
1459             . '<option value="35">35</option>' . "\n"
1460             . '<option value="36">36</option>' . "\n"
1461             . '<option value="37">37</option>' . "\n"
1462             . '<option value="38">38</option>' . "\n"
1463             . '<option value="39">39</option>' . "\n"
1464             . '<option value="40">40</option>' . "\n"
1465             . '<option value="41">41</option>' . "\n"
1466             . '<option value="42">42</option>' . "\n"
1467             . '<option value="43">43</option>' . "\n"
1468             . '<option value="44">44</option>' . "\n"
1469             . '<option value="45">45</option>' . "\n"
1470             . '<option value="46">46</option>' . "\n"
1471             . '<option value="47">47</option>' . "\n"
1472             . '<option value="48">48</option>' . "\n"
1473             . '<option value="49">49</option>' . "\n"
1474             . '<option value="50">50</option>' . "\n"
1475             . '<option value="51">51</option>' . "\n"
1476             . '<option value="52">52</option>' . "\n"
1477             . '<option value="53">53</option>' . "\n"
1478             . '<option value="54">54</option>' . "\n"
1479             . '<option value="55">55</option>' . "\n"
1480             . '<option value="56">56</option>' . "\n"
1481             . '<option value="57">57</option>' . "\n"
1482             . '<option value="58">58</option>' . "\n"
1483             . '<option value="59">59</option>' . "\n"
1484             . '</select>' . "\n"
1485             . ' : <select name="Person[lunch(6i)]">' . "\n"
1486             . '<option value="00">00</option>' . "\n"
1487             . '<option value="01">01</option>' . "\n"
1488             . '<option value="02">02</option>' . "\n"
1489             . '<option value="03">03</option>' . "\n"
1490             . '<option value="04">04</option>' . "\n"
1491             . '<option value="05">05</option>' . "\n"
1492             . '<option value="06">06</option>' . "\n"
1493             . '<option value="07">07</option>' . "\n"
1494             . '<option value="08">08</option>' . "\n"
1495             . '<option value="09">09</option>' . "\n"
1496             . '<option value="10">10</option>' . "\n"
1497             . '<option value="11">11</option>' . "\n"
1498             . '<option value="12">12</option>' . "\n"
1499             . '<option value="13">13</option>' . "\n"
1500             . '<option value="14">14</option>' . "\n"
1501             . '<option value="15">15</option>' . "\n"
1502             . '<option value="16">16</option>' . "\n"
1503             . '<option value="17">17</option>' . "\n"
1504             . '<option value="18">18</option>' . "\n"
1505             . '<option value="19">19</option>' . "\n"
1506             . '<option value="20">20</option>' . "\n"
1507             . '<option value="21">21</option>' . "\n"
1508             . '<option value="22">22</option>' . "\n"
1509             . '<option value="23">23</option>' . "\n"
1510             . '<option value="24">24</option>' . "\n"
1511             . '<option value="25">25</option>' . "\n"
1512             . '<option value="26">26</option>' . "\n"
1513             . '<option value="27"  selected="selected">27</option>' . "\n"
1514             . '<option value="28">28</option>' . "\n"
1515             . '<option value="29">29</option>' . "\n"
1516             . '<option value="30">30</option>' . "\n"
1517             . '<option value="31">31</option>' . "\n"
1518             . '<option value="32">32</option>' . "\n"
1519             . '<option value="33">33</option>' . "\n"
1520             . '<option value="34">34</option>' . "\n"
1521             . '<option value="35">35</option>' . "\n"
1522             . '<option value="36">36</option>' . "\n"
1523             . '<option value="37">37</option>' . "\n"
1524             . '<option value="38">38</option>' . "\n"
1525             . '<option value="39">39</option>' . "\n"
1526             . '<option value="40">40</option>' . "\n"
1527             . '<option value="41">41</option>' . "\n"
1528             . '<option value="42">42</option>' . "\n"
1529             . '<option value="43">43</option>' . "\n"
1530             . '<option value="44">44</option>' . "\n"
1531             . '<option value="45">45</option>' . "\n"
1532             . '<option value="46">46</option>' . "\n"
1533             . '<option value="47">47</option>' . "\n"
1534             . '<option value="48">48</option>' . "\n"
1535             . '<option value="49">49</option>' . "\n"
1536             . '<option value="50">50</option>' . "\n"
1537             . '<option value="51">51</option>' . "\n"
1538             . '<option value="52">52</option>' . "\n"
1539             . '<option value="53">53</option>' . "\n"
1540             . '<option value="54">54</option>' . "\n"
1541             . '<option value="55">55</option>' . "\n"
1542             . '<option value="56">56</option>' . "\n"
1543             . '<option value="57">57</option>' . "\n"
1544             . '<option value="58">58</option>' . "\n"
1545             . '<option value="59">59</option>' . "\n"
1546             . '</select>' . "\n",
1547             $dh->time_select(array('discard_second' => false)));
1548      }
1549  
1550      /**
1551       *  Test time_select() function
1552       *
1553       *  Test {@link time_select()} function in procedural file
1554       *  {@link date_helper.php}
1555       */
1556      public function testTime_select_function() {
1557          $_REQUEST['Person']['lunch(4i)'] = '08';
1558          $_REQUEST['Person']['lunch(5i)'] = '12';
1559          $this->assertEquals('<select name="Person[lunch(4i)]">' . "\n"
1560             . '<option value="00">00</option>' . "\n"
1561             . '<option value="01">01</option>' . "\n"
1562             . '<option value="02">02</option>' . "\n"
1563             . '<option value="03">03</option>' . "\n"
1564             . '<option value="04">04</option>' . "\n"
1565             . '<option value="05">05</option>' . "\n"
1566             . '<option value="06">06</option>' . "\n"
1567             . '<option value="07">07</option>' . "\n"
1568             . '<option value="08"  selected="selected">08</option>' . "\n"
1569             . '<option value="09">09</option>' . "\n"
1570             . '<option value="10">10</option>' . "\n"
1571             . '<option value="11">11</option>' . "\n"
1572             . '<option value="12">12</option>' . "\n"
1573             . '<option value="13">13</option>' . "\n"
1574             . '<option value="14">14</option>' . "\n"
1575             . '<option value="15">15</option>' . "\n"
1576             . '<option value="16">16</option>' . "\n"
1577             . '<option value="17">17</option>' . "\n"
1578             . '<option value="18">18</option>' . "\n"
1579             . '<option value="19">19</option>' . "\n"
1580             . '<option value="20">20</option>' . "\n"
1581             . '<option value="21">21</option>' . "\n"
1582             . '<option value="22">22</option>' . "\n"
1583             . '<option value="23">23</option>' . "\n"
1584             . '</select>' . "\n"
1585             . ' : <select name="Person[lunch(5i)]">' . "\n"
1586             . '<option value="00">00</option>' . "\n"
1587             . '<option value="01">01</option>' . "\n"
1588             . '<option value="02">02</option>' . "\n"
1589             . '<option value="03">03</option>' . "\n"
1590             . '<option value="04">04</option>' . "\n"
1591             . '<option value="05">05</option>' . "\n"
1592             . '<option value="06">06</option>' . "\n"
1593             . '<option value="07">07</option>' . "\n"
1594             . '<option value="08">08</option>' . "\n"
1595             . '<option value="09">09</option>' . "\n"
1596             . '<option value="10">10</option>' . "\n"
1597             . '<option value="11">11</option>' . "\n"
1598             . '<option value="12"  selected="selected">12</option>' . "\n"
1599             . '<option value="13">13</option>' . "\n"
1600             . '<option value="14">14</option>' . "\n"
1601             . '<option value="15">15</option>' . "\n"
1602             . '<option value="16">16</option>' . "\n"
1603             . '<option value="17">17</option>' . "\n"
1604             . '<option value="18">18</option>' . "\n"
1605             . '<option value="19">19</option>' . "\n"
1606             . '<option value="20">20</option>' . "\n"
1607             . '<option value="21">21</option>' . "\n"
1608             . '<option value="22">22</option>' . "\n"
1609             . '<option value="23">23</option>' . "\n"
1610             . '<option value="24">24</option>' . "\n"
1611             . '<option value="25">25</option>' . "\n"
1612             . '<option value="26">26</option>' . "\n"
1613             . '<option value="27">27</option>' . "\n"
1614             . '<option value="28">28</option>' . "\n"
1615             . '<option value="29">29</option>' . "\n"
1616             . '<option value="30">30</option>' . "\n"
1617             . '<option value="31">31</option>' . "\n"
1618             . '<option value="32">32</option>' . "\n"
1619             . '<option value="33">33</option>' . "\n"
1620             . '<option value="34">34</option>' . "\n"
1621             . '<option value="35">35</option>' . "\n"
1622             . '<option value="36">36</option>' . "\n"
1623             . '<option value="37">37</option>' . "\n"
1624             . '<option value="38">38</option>' . "\n"
1625             . '<option value="39">39</option>' . "\n"
1626             . '<option value="40">40</option>' . "\n"
1627             . '<option value="41">41</option>' . "\n"
1628             . '<option value="42">42</option>' . "\n"
1629             . '<option value="43">43</option>' . "\n"
1630             . '<option value="44">44</option>' . "\n"
1631             . '<option value="45">45</option>' . "\n"
1632             . '<option value="46">46</option>' . "\n"
1633             . '<option value="47">47</option>' . "\n"
1634             . '<option value="48">48</option>' . "\n"
1635             . '<option value="49">49</option>' . "\n"
1636             . '<option value="50">50</option>' . "\n"
1637             . '<option value="51">51</option>' . "\n"
1638             . '<option value="52">52</option>' . "\n"
1639             . '<option value="53">53</option>' . "\n"
1640             . '<option value="54">54</option>' . "\n"
1641             . '<option value="55">55</option>' . "\n"
1642             . '<option value="56">56</option>' . "\n"
1643             . '<option value="57">57</option>' . "\n"
1644             . '<option value="58">58</option>' . "\n"
1645             . '<option value="59">59</option>' . "\n"
1646             . '</select>' . "\n",
1647             time_select('Person','lunch'));
1648      }
1649  
1650      /**
1651       *  Test select_second()
1652       *
1653       *  Test {@link DateHelper::select_second()} method
1654       */
1655      public function testSelect_second() {
1656          $dh = new DateHelper;
1657  
1658          //  Test generation with all arguments omitted
1659          $this->assertContains('selected="selected">'.date('s'),
1660                              $dh->select_second());
1661  
1662          //  Test generation with 43 selected, default format
1663          $this->assertEquals('<select name="second">' . "\n"
1664                              . '<option value="00">00</option>' . "\n"
1665                              . '<option value="01">01</option>' . "\n"
1666                              . '<option value="02">02</option>' . "\n"
1667                              . '<option value="03">03</option>' . "\n"
1668                              . '<option value="04">04</option>' . "\n"
1669                              . '<option value="05">05</option>' . "\n"
1670                              . '<option value="06">06</option>' . "\n"
1671                              . '<option value="07">07</option>' . "\n"
1672                              . '<option value="08">08</option>' . "\n"
1673                              . '<option value="09">09</option>' . "\n"
1674                              . '<option value="10">10</option>' . "\n"
1675                              . '<option value="11">11</option>' . "\n"
1676                              . '<option value="12">12</option>' . "\n"
1677                              . '<option value="13">13</option>' . "\n"
1678                              . '<option value="14">14</option>' . "\n"
1679                              . '<option value="15">15</option>' . "\n"
1680                              . '<option value="16">16</option>' . "\n"
1681                              . '<option value="17">17</option>' . "\n"
1682                              . '<option value="18">18</option>' . "\n"
1683                              . '<option value="19">19</option>' . "\n"
1684                              . '<option value="20">20</option>' . "\n"
1685                              . '<option value="21">21</option>' . "\n"
1686                              . '<option value="22">22</option>' . "\n"
1687                              . '<option value="23">23</option>' . "\n"
1688                              . '<option value="24">24</option>' . "\n"
1689                              . '<option value="25">25</option>' . "\n"
1690                              . '<option value="26">26</option>' . "\n"
1691                              . '<option value="27">27</option>' . "\n"
1692                              . '<option value="28">28</option>' . "\n"
1693                              . '<option value="29">29</option>' . "\n"
1694                              . '<option value="30">30</option>' . "\n"
1695                              . '<option value="31">31</option>' . "\n"
1696                              . '<option value="32">32</option>' . "\n"
1697                              . '<option value="33">33</option>' . "\n"
1698                              . '<option value="34">34</option>' . "\n"
1699                              . '<option value="35">35</option>' . "\n"
1700                              . '<option value="36">36</option>' . "\n"
1701                              . '<option value="37">37</option>' . "\n"
1702                              . '<option value="38">38</option>' . "\n"
1703                              . '<option value="39">39</option>' . "\n"
1704                              . '<option value="40">40</option>' . "\n"
1705                              . '<option value="41">41</option>' . "\n"
1706                              . '<option value="42">42</option>' . "\n"
1707                              . '<option value="43"  selected="selected">43</option>' . "\n"
1708                              . '<option value="44">44</option>' . "\n"
1709                              . '<option value="45">45</option>' . "\n"
1710                              . '<option value="46">46</option>' . "\n"
1711                              . '<option value="47">47</option>' . "\n"
1712                              . '<option value="48">48</option>' . "\n"
1713                              . '<option value="49">49</option>' . "\n"
1714                              . '<option value="50">50</option>' . "\n"
1715                              . '<option value="51">51</option>' . "\n"
1716                              . '<option value="52">52</option>' . "\n"
1717                              . '<option value="53">53</option>' . "\n"
1718                              . '<option value="54">54</option>' . "\n"
1719                              . '<option value="55">55</option>' . "\n"
1720                              . '<option value="56">56</option>' . "\n"
1721                              . '<option value="57">57</option>' . "\n"
1722                              . '<option value="58">58</option>' . "\n"
1723                              . '<option value="59">59</option>' . "\n"
1724                              . '</select>' . "\n",
1725                              $dh->select_second('43'));
1726  
1727          //  Test generation with 17 selected, name change
1728          $this->assertEquals('<select name="last-second">' . "\n"
1729                              . '<option value="00">00</option>' . "\n"
1730                              . '<option value="01">01</option>' . "\n"
1731                              . '<option value="02">02</option>' . "\n"
1732                              . '<option value="03">03</option>' . "\n"
1733                              . '<option value="04">04</option>' . "\n"
1734                              . '<option value="05">05</option>' . "\n"
1735                              . '<option value="06">06</option>' . "\n"
1736                              . '<option value="07">07</option>' . "\n"
1737                              . '<option value="08">08</option>' . "\n"
1738                              . '<option value="09">09</option>' . "\n"
1739                              . '<option value="10">10</option>' . "\n"
1740                              . '<option value="11">11</option>' . "\n"
1741                              . '<option value="12">12</option>' . "\n"
1742                              . '<option value="13">13</option>' . "\n"
1743                              . '<option value="14">14</option>' . "\n"
1744                              . '<option value="15">15</option>' . "\n"
1745                              . '<option value="16">16</option>' . "\n"
1746                              . '<option value="17"  selected="selected">17</option>' . "\n"
1747                              . '<option value="18">18</option>' . "\n"
1748                              . '<option value="19">19</option>' . "\n"
1749                              . '<option value="20">20</option>' . "\n"
1750                              . '<option value="21">21</option>' . "\n"
1751                              . '<option value="22">22</option>' . "\n"
1752                              . '<option value="23">23</option>' . "\n"
1753                              . '<option value="24">24</option>' . "\n"
1754                              . '<option value="25">25</option>' . "\n"
1755                              . '<option value="26">26</option>' . "\n"
1756                              . '<option value="27">27</option>' . "\n"
1757                              . '<option value="28">28</option>' . "\n"
1758                              . '<option value="29">29</option>' . "\n"
1759                              . '<option value="30">30</option>' . "\n"
1760                              . '<option value="31">31</option>' . "\n"
1761                              . '<option value="32">32</option>' . "\n"
1762                              . '<option value="33">33</option>' . "\n"
1763                              . '<option value="34">34</option>' . "\n"
1764                              . '<option value="35">35</option>' . "\n"
1765                              . '<option value="36">36</option>' . "\n"
1766                              . '<option value="37">37</option>' . "\n"
1767                              . '<option value="38">38</option>' . "\n"
1768                              . '<option value="39">39</option>' . "\n"
1769                              . '<option value="40">40</option>' . "\n"
1770                              . '<option value="41">41</option>' . "\n"
1771                              . '<option value="42">42</option>' . "\n"
1772                              . '<option value="43">43</option>' . "\n"
1773                              . '<option value="44">44</option>' . "\n"
1774                              . '<option value="45">45</option>' . "\n"
1775                              . '<option value="46">46</option>' . "\n"
1776                              . '<option value="47">47</option>' . "\n"
1777                              . '<option value="48">48</option>' . "\n"
1778                              . '<option value="49">49</option>' . "\n"
1779                              . '<option value="50">50</option>' . "\n"
1780                              . '<option value="51">51</option>' . "\n"
1781                              . '<option value="52">52</option>' . "\n"
1782                              . '<option value="53">53</option>' . "\n"
1783                              . '<option value="54">54</option>' . "\n"
1784                              . '<option value="55">55</option>' . "\n"
1785                              . '<option value="56">56</option>' . "\n"
1786                              . '<option value="57">57</option>' . "\n"
1787                              . '<option value="58">58</option>' . "\n"
1788                              . '<option value="59">59</option>' . "\n"
1789                              . '</select>' . "\n",
1790                              $dh->select_second('17',
1791                                    array('field_name' => 'last-second')));
1792  
1793          //  Test generation with 52 selected, include blank
1794          $this->assertEquals('<select name="second">' . "\n"
1795                              . '<option value=""></option>' . "\n"
1796                              . '<option value="00">00</option>' . "\n"
1797                              . '<option value="01">01</option>' . "\n"
1798                              . '<option value="02">02</option>' . "\n"
1799                              . '<option value="03">03</option>' . "\n"
1800                              . '<option value="04">04</option>' . "\n"
1801                              . '<option value="05">05</option>' . "\n"
1802                              . '<option value="06">06</option>' . "\n"
1803                              . '<option value="07">07</option>' . "\n"
1804                              . '<option value="08">08</option>' . "\n"
1805                              . '<option value="09">09</option>' . "\n"
1806                              . '<option value="10">10</option>' . "\n"
1807                              . '<option value="11">11</option>' . "\n"
1808                              . '<option value="12">12</option>' . "\n"
1809                              . '<option value="13">13</option>' . "\n"
1810                              . '<option value="14">14</option>' . "\n"
1811                              . '<option value="15">15</option>' . "\n"
1812                              . '<option value="16">16</option>' . "\n"
1813                              . '<option value="17">17</option>' . "\n"
1814                              . '<option value="18">18</option>' . "\n"
1815                              . '<option value="19">19</option>' . "\n"
1816                              . '<option value="20">20</option>' . "\n"
1817                              . '<option value="21">21</option>' . "\n"
1818                              . '<option value="22">22</option>' . "\n"
1819                              . '<option value="23">23</option>' . "\n"
1820                              . '<option value="24">24</option>' . "\n"
1821                              . '<option value="25">25</option>' . "\n"
1822                              . '<option value="26">26</option>' . "\n"
1823                              . '<option value="27">27</option>' . "\n"
1824                              . '<option value="28">28</option>' . "\n"
1825                              . '<option value="29">29</option>' . "\n"
1826                              . '<option value="30">30</option>' . "\n"
1827                              . '<option value="31">31</option>' . "\n"
1828                              . '<option value="32">32</option>' . "\n"
1829                              . '<option value="33">33</option>' . "\n"
1830                              . '<option value="34">34</option>' . "\n"
1831                              . '<option value="35">35</option>' . "\n"
1832                              . '<option value="36">36</option>' . "\n"
1833                              . '<option value="37">37</option>' . "\n"
1834                              . '<option value="38">38</option>' . "\n"
1835                              . '<option value="39">39</option>' . "\n"
1836                              . '<option value="40">40</option>' . "\n"
1837                              . '<option value="41">41</option>' . "\n"
1838                              . '<option value="42">42</option>' . "\n"
1839                              . '<option value="43">43</option>' . "\n"
1840                              . '<option value="44">44</option>' . "\n"
1841                              . '<option value="45">45</option>' . "\n"
1842                              . '<option value="46">46</option>' . "\n"
1843                              . '<option value="47">47</option>' . "\n"
1844                              . '<option value="48">48</option>' . "\n"
1845                              . '<option value="49">49</option>' . "\n"
1846                              . '<option value="50">50</option>' . "\n"
1847                              . '<option value="51">51</option>' . "\n"
1848                              . '<option value="52"  selected="selected">52</option>' . "\n"
1849                              . '<option value="53">53</option>' . "\n"
1850                              . '<option value="54">54</option>' . "\n"
1851                              . '<option value="55">55</option>' . "\n"
1852                              . '<option value="56">56</option>' . "\n"
1853                              . '<option value="57">57</option>' . "\n"
1854                              . '<option value="58">58</option>' . "\n"
1855                              . '<option value="59">59</option>' . "\n"
1856                              . '</select>' . "\n",
1857                              $dh->select_second('52',
1858                                           array('include_blank' => true)));
1859  
1860          //  Test override of seconds argument
1861          //  Simulate 22 parsed from $_REQUEST
1862          $dh->attribute_name = 'right_this_second';
1863          $dh->request_seconds['right_this_second'] = 22;
1864          //  Test generation with 43 selected, default format
1865          $this->assertEquals('<select name="second">' . "\n"
1866                              . '<option value="00">00</option>' . "\n"
1867                              . '<option value="01">01</option>' . "\n"
1868                              . '<option value="02">02</option>' . "\n"
1869                              . '<option value="03">03</option>' . "\n"
1870                              . '<option value="04">04</option>' . "\n"
1871                              . '<option value="05">05</option>' . "\n"
1872                              . '<option value="06">06</option>' . "\n"
1873                              . '<option value="07">07</option>' . "\n"
1874                              . '<option value="08">08</option>' . "\n"
1875                              . '<option value="09">09</option>' . "\n"
1876                              . '<option value="10">10</option>' . "\n"
1877                              . '<option value="11">11</option>' . "\n"
1878                              . '<option value="12">12</option>' . "\n"
1879                              . '<option value="13">13</option>' . "\n"
1880                              . '<option value="14">14</option>' . "\n"
1881                              . '<option value="15">15</option>' . "\n"
1882                              . '<option value="16">16</option>' . "\n"
1883                              . '<option value="17">17</option>' . "\n"
1884                              . '<option value="18">18</option>' . "\n"
1885                              . '<option value="19">19</option>' . "\n"
1886                              . '<option value="20">20</option>' . "\n"
1887                              . '<option value="21">21</option>' . "\n"
1888                              . '<option value="22"  selected="selected">22</option>' . "\n"
1889                              . '<option value="23">23</option>' . "\n"
1890                              . '<option value="24">24</option>' . "\n"
1891                              . '<option value="25">25</option>' . "\n"
1892                              . '<option value="26">26</option>' . "\n"
1893                              . '<option value="27">27</option>' . "\n"
1894                              . '<option value="28">28</option>' . "\n"
1895                              . '<option value="29">29</option>' . "\n"
1896                              . '<option value="30">30</option>' . "\n"
1897                              . '<option value="31">31</option>' . "\n"
1898                              . '<option value="32">32</option>' . "\n"
1899                              . '<option value="33">33</option>' . "\n"
1900                              . '<option value="34">34</option>' . "\n"
1901                              . '<option value="35">35</option>' . "\n"
1902                              . '<option value="36">36</option>' . "\n"
1903                              . '<option value="37">37</option>' . "\n"
1904                              . '<option value="38">38</option>' . "\n"
1905                              . '<option value="39">39</option>' . "\n"
1906                              . '<option value="40">40</option>' . "\n"
1907                              . '<option value="41">41</option>' . "\n"
1908                              . '<option value="42">42</option>' . "\n"
1909                              . '<option value="43">43</option>' . "\n"
1910                              . '<option value="44">44</option>' . "\n"
1911                              . '<option value="45">45</option>' . "\n"
1912                              . '<option value="46">46</option>' . "\n"
1913                              . '<option value="47">47</option>' . "\n"
1914                              . '<option value="48">48</option>' . "\n"
1915                              . '<option value="49">49</option>' . "\n"
1916                              . '<option value="50">50</option>' . "\n"
1917                              . '<option value="51">51</option>' . "\n"
1918                              . '<option value="52">52</option>' . "\n"
1919                              . '<option value="53">53</option>' . "\n"
1920                              . '<option value="54">54</option>' . "\n"
1921                              . '<option value="55">55</option>' . "\n"
1922                              . '<option value="56">56</option>' . "\n"
1923                              . '<option value="57">57</option>' . "\n"
1924                              . '<option value="58">58</option>' . "\n"
1925                              . '<option value="59">59</option>' . "\n"
1926                              . '</select>' . "\n",
1927                              $dh->select_second('43'));
1928      }
1929  
1930      /**
1931       *  Test select_minute()
1932       *
1933       *  Test {@link DateHelper::select_minute()} method
1934       */
1935      public function testSelect_minute() {
1936          $dh = new DateHelper;
1937  
1938          //  Test generation with all arguments omitted
1939          $this->assertContains('selected="selected">'.date('i'),
1940                              $dh->select_minute());
1941  
1942          //  Test generation with 43 selected, default format
1943          $this->assertEquals('<select name="minute">' . "\n"
1944                              . '<option value="00">00</option>' . "\n"
1945                              . '<option value="01">01</option>' . "\n"
1946                              . '<option value="02">02</option>' . "\n"
1947                              . '<option value="03">03</option>' . "\n"
1948                              . '<option value="04">04</option>' . "\n"
1949                              . '<option value="05">05</option>' . "\n"
1950                              . '<option value="06">06</option>' . "\n"
1951                              . '<option value="07">07</option>' . "\n"
1952                              . '<option value="08">08</option>' . "\n"
1953                              . '<option value="09">09</option>' . "\n"
1954                              . '<option value="10">10</option>' . "\n"
1955                              . '<option value="11">11</option>' . "\n"
1956                              . '<option value="12">12</option>' . "\n"
1957                              . '<option value="13">13</option>' . "\n"
1958                              . '<option value="14">14</option>' . "\n"
1959                              . '<option value="15">15</option>' . "\n"
1960                              . '<option value="16">16</option>' . "\n"
1961                              . '<option value="17">17</option>' . "\n"
1962                              . '<option value="18">18</option>' . "\n"
1963                              . '<option value="19">19</option>' . "\n"
1964                              . '<option value="20">20</option>' . "\n"
1965                              . '<option value="21">21</option>' . "\n"
1966                              . '<option value="22">22</option>' . "\n"
1967                              . '<option value="23">23</option>' . "\n"
1968                              . '<option value="24">24</option>' . "\n"
1969                              . '<option value="25">25</option>' . "\n"
1970                              . '<option value="26">26</option>' . "\n"
1971                              . '<option value="27">27</option>' . "\n"
1972                              . '<option value="28">28</option>' . "\n"
1973                              . '<option value="29">29</option>' . "\n"
1974                              . '<option value="30">30</option>' . "\n"
1975                              . '<option value="31">31</option>' . "\n"
1976                              . '<option value="32">32</option>' . "\n"
1977                              . '<option value="33">33</option>' . "\n"
1978                              . '<option value="34">34</option>' . "\n"
1979                              . '<option value="35">35</option>' . "\n"
1980                              . '<option value="36">36</option>' . "\n"
1981                              . '<option value="37">37</option>' . "\n"
1982                              . '<option value="38">38</option>' . "\n"
1983                              . '<option value="39">39</option>' . "\n"
1984                              . '<option value="40">40</option>' . "\n"
1985                              . '<option value="41">41</option>' . "\n"
1986                              . '<option value="42">42</option>' . "\n"
1987                              . '<option value="43"  selected="selected">43</option>' . "\n"
1988                              . '<option value="44">44</option>' . "\n"
1989                              . '<option value="45">45</option>' . "\n"
1990                              . '<option value="46">46</option>' . "\n"
1991                              . '<option value="47">47</option>' . "\n"
1992                              . '<option value="48">48</option>' . "\n"
1993                              . '<option value="49">49</option>' . "\n"
1994                              . '<option value="50">50</option>' . "\n"
1995                              . '<option value="51">51</option>' . "\n"
1996                              . '<option value="52">52</option>' . "\n"
1997                              . '<option value="53">53</option>' . "\n"
1998                              . '<option value="54">54</option>' . "\n"
1999                              . '<option value="55">55</option>' . "\n"
2000                              . '<option value="56">56</option>' . "\n"
2001                              . '<option value="57">57</option>' . "\n"
2002                              . '<option value="58">58</option>' . "\n"
2003                              . '<option value="59">59</option>' . "\n"
2004                              . '</select>' . "\n",
2005                              $dh->select_minute('43'));
2006  
2007          //  Test generation with 17 selected, name change
2008          $this->assertEquals('<select name="last-minute">' . "\n"
2009                              . '<option value="00">00</option>' . "\n"
2010                              . '<option value="01">01</option>' . "\n"
2011                              . '<option value="02">02</option>' . "\n"
2012                              . '<option value="03">03</option>' . "\n"
2013                              . '<option value="04">04</option>' . "\n"
2014                              . '<option value="05">05</option>' . "\n"
2015                              . '<option value="06">06</option>' . "\n"
2016                              . '<option value="07">07</option>' . "\n"
2017                              . '<option value="08">08</option>' . "\n"
2018                              . '<option value="09">09</option>' . "\n"
2019                              . '<option value="10">10</option>' . "\n"
2020                              . '<option value="11">11</option>' . "\n"
2021                              . '<option value="12">12</option>' . "\n"
2022                              . '<option value="13">13</option>' . "\n"
2023                              . '<option value="14">14</option>' . "\n"
2024                              . '<option value="15">15</option>' . "\n"
2025                              . '<option value="16">16</option>' . "\n"
2026                              . '<option value="17"  selected="selected">17</option>' . "\n"
2027                              . '<option value="18">18</option>' . "\n"
2028                              . '<option value="19">19</option>' . "\n"
2029                              . '<option value="20">20</option>' . "\n"
2030                              . '<option value="21">21</option>' . "\n"
2031                              . '<option value="22">22</option>' . "\n"
2032                              . '<option value="23">23</option>' . "\n"
2033                              . '<option value="24">24</option>' . "\n"
2034                              . '<option value="25">25</option>' . "\n"
2035                              . '<option value="26">26</option>' . "\n"
2036                              . '<option value="27">27</option>' . "\n"
2037                              . '<option value="28">28</option>' . "\n"
2038                              . '<option value="29">29</option>' . "\n"
2039                              . '<option value="30">30</option>' . "\n"
2040                              . '<option value="31">31</option>' . "\n"
2041                              . '<option value="32">32</option>' . "\n"
2042                              . '<option value="33">33</option>' . "\n"
2043                              . '<option value="34">34</option>' . "\n"
2044                              . '<option value="35">35</option>' . "\n"
2045                              . '<option value="36">36</option>' . "\n"
2046                              . '<option value="37">37</option>' . "\n"
2047                              . '<option value="38">38</option>' . "\n"
2048                              . '<option value="39">39</option>' . "\n"
2049                              . '<option value="40">40</option>' . "\n"
2050                              . '<option value="41">41</option>' . "\n"
2051                              . '<option value="42">42</option>' . "\n"
2052                              . '<option value="43">43</option>' . "\n"
2053                              . '<option value="44">44</option>' . "\n"
2054                              . '<option value="45">45</option>' . "\n"
2055                              . '<option value="46">46</option>' . "\n"
2056                              . '<option value="47">47</option>' . "\n"
2057                              . '<option value="48">48</option>' . "\n"
2058                              . '<option value="49">49</option>' . "\n"
2059                              . '<option value="50">50</option>' . "\n"
2060                              . '<option value="51">51</option>' . "\n"
2061                              . '<option value="52">52</option>' . "\n"
2062                              . '<option value="53">53</option>' . "\n"
2063                              . '<option value="54">54</option>' . "\n"
2064                              . '<option value="55">55</option>' . "\n"
2065                              . '<option value="56">56</option>' . "\n"
2066                              . '<option value="57">57</option>' . "\n"
2067                              . '<option value="58">58</option>' . "\n"
2068                              . '<option value="59">59</option>' . "\n"
2069                              . '</select>' . "\n",
2070                              $dh->select_minute('17',
2071                                    array('field_name' => 'last-minute')));
2072  
2073          //  Test generation with 52 selected, include blank
2074          $this->assertEquals('<select name="minute">' . "\n"
2075                              . '<option value=""></option>' . "\n"
2076                              . '<option value="00">00</option>' . "\n"
2077                              . '<option value="01">01</option>' . "\n"
2078                              . '<option value="02">02</option>' . "\n"
2079                              . '<option value="03">03</option>' . "\n"
2080                              . '<option value="04">04</option>' . "\n"
2081                              . '<option value="05">05</option>' . "\n"
2082                              . '<option value="06">06</option>' . "\n"
2083                              . '<option value="07">07</option>' . "\n"
2084                              . '<option value="08">08</option>' . "\n"
2085                              . '<option value="09">09</option>' . "\n"
2086                              . '<option value="10">10</option>' . "\n"
2087                              . '<option value="11">11</option>' . "\n"
2088                              . '<option value="12">12</option>' . "\n"
2089                              . '<option value="13">13</option>' . "\n"
2090                              . '<option value="14">14</option>' . "\n"
2091                              . '<option value="15">15</option>' . "\n"
2092                              . '<option value="16">16</option>' . "\n"
2093                              . '<option value="17">17</option>' . "\n"
2094                              . '<option value="18">18</option>' . "\n"
2095                              . '<option value="19">19</option>' . "\n"
2096                              . '<option value="20">20</option>' . "\n"
2097                              . '<option value="21">21</option>' . "\n"
2098                              . '<option value="22">22</option>' . "\n"
2099                              . '<option value="23">23</option>' . "\n"
2100                              . '<option value="24">24</option>' . "\n"
2101                              . '<option value="25">25</option>' . "\n"
2102                              . '<option value="26">26</option>' . "\n"
2103                              . '<option value="27">27</option>' . "\n"
2104                              . '<option value="28">28</option>' . "\n"
2105                              . '<option value="29">29</option>' . "\n"
2106                              . '<option value="30">30</option>' . "\n"
2107                              . '<option value="31">31</option>' . "\n"
2108                              . '<option value="32">32</option>' . "\n"
2109                              . '<option value="33">33</option>' . "\n"
2110                              . '<option value="34">34</option>' . "\n"
2111                              . '<option value="35">35</option>' . "\n"
2112                              . '<option value="36">36</option>' . "\n"
2113                              . '<option value="37">37</option>' . "\n"
2114                              . '<option value="38">38</option>' . "\n"
2115                              . '<option value="39">39</option>' . "\n"
2116                              . '<option value="40">40</option>' . "\n"
2117                              . '<option value="41">41</option>' . "\n"
2118                              . '<option value="42">42</option>' . "\n"
2119                              . '<option value="43">43</option>' . "\n"
2120                              . '<option value="44">44</option>' . "\n"
2121                              . '<option value="45">45</option>' . "\n"
2122                              . '<option value="46">46</option>' . "\n"
2123                              . '<option value="47">47</option>' . "\n"
2124                              . '<option value="48">48</option>' . "\n"
2125                              . '<option value="49">49</option>' . "\n"
2126                              . '<option value="50">50</option>' . "\n"
2127                              . '<option value="51">51</option>' . "\n"
2128                              . '<option value="52"  selected="selected">52</option>' . "\n"
2129                              . '<option value="53">53</option>' . "\n"
2130                              . '<option value="54">54</option>' . "\n"
2131                              . '<option value="55">55</option>' . "\n"
2132                              . '<option value="56">56</option>' . "\n"
2133                              . '<option value="57">57</option>' . "\n"
2134                              . '<option value="58">58</option>' . "\n"
2135                              . '<option value="59">59</option>' . "\n"
2136                              . '</select>' . "\n",
2137                              $dh->select_minute('52',
2138                                           array('include_blank' => true)));
2139  
2140          //  Test override of minutes argument
2141          //  Simulate 22 parsed from $_REQUEST
2142          $dh->attribute_name = 'right_this_minute';
2143          $dh->request_minutes['right_this_minute'] = 22;
2144          //  Test generation with 43 selected, default format
2145          $this->assertEquals('<select name="minute">' . "\n"
2146                              . '<option value="00">00</option>' . "\n"
2147                              . '<option value="01">01</option>' . "\n"
2148                              . '<option value="02">02</option>' . "\n"
2149                              . '<option value="03">03</option>' . "\n"
2150                              . '<option value="04">04</option>' . "\n"
2151                              . '<option value="05">05</option>' . "\n"
2152                              . '<option value="06">06</option>' . "\n"
2153                              . '<option value="07">07</option>' . "\n"
2154                              . '<option value="08">08</option>' . "\n"
2155                              . '<option value="09">09</option>' . "\n"
2156                              . '<option value="10">10</option>' . "\n"
2157                              . '<option value="11">11</option>' . "\n"
2158                              . '<option value="12">12</option>' . "\n"
2159                              . '<option value="13">13</option>' . "\n"
2160                              . '<option value="14">14</option>' . "\n"
2161                              . '<option value="15">15</option>' . "\n"
2162                              . '<option value="16">16</option>' . "\n"
2163                              . '<option value="17">17</option>' . "\n"
2164                              . '<option value="18">18</option>' . "\n"
2165                              . '<option value="19">19</option>' . "\n"
2166                              . '<option value="20">20</option>' . "\n"
2167                              . '<option value="21">21</option>' . "\n"
2168                              . '<option value="22"  selected="selected">22</option>' . "\n"
2169                              . '<option value="23">23</option>' . "\n"
2170                              . '<option value="24">24</option>' . "\n"
2171                              . '<option value="25">25</option>' . "\n"
2172                              . '<option value="26">26</option>' . "\n"
2173                              . '<option value="27">27</option>' . "\n"
2174                              . '<option value="28">28</option>' . "\n"
2175                              . '<option value="29">29</option>' . "\n"
2176                              . '<option value="30">30</option>' . "\n"
2177                              . '<option value="31">31</option>' . "\n"
2178                              . '<option value="32">32</option>' . "\n"
2179                              . '<option value="33">33</option>' . "\n"
2180                              . '<option value="34">34</option>' . "\n"
2181                              . '<option value="35">35</option>' . "\n"
2182                              . '<option value="36">36</option>' . "\n"
2183                              . '<option value="37">37</option>' . "\n"
2184                              . '<option value="38">38</option>' . "\n"
2185                              . '<option value="39">39</option>' . "\n"
2186                              . '<option value="40">40</option>' . "\n"
2187                              . '<option value="41">41</option>' . "\n"
2188                              . '<option value="42">42</option>' . "\n"
2189                              . '<option value="43">43</option>' . "\n"
2190                              . '<option value="44">44</option>' . "\n"
2191                              . '<option value="45">45</option>' . "\n"
2192                              . '<option value="46">46</option>' . "\n"
2193                              . '<option value="47">47</option>' . "\n"
2194                              . '<option value="48">48</option>' . "\n"
2195                              . '<option value="49">49</option>' . "\n"
2196                              . '<option value="50">50</option>' . "\n"
2197                              . '<option value="51">51</option>' . "\n"
2198                              . '<option value="52">52</option>' . "\n"
2199                              . '<option value="53">53</option>' . "\n"
2200                              . '<option value="54">54</option>' . "\n"
2201                              . '<option value="55">55</option>' . "\n"
2202                              . '<option value="56">56</option>' . "\n"
2203                              . '<option value="57">57</option>' . "\n"
2204                              . '<option value="58">58</option>' . "\n"
2205                              . '<option value="59">59</option>' . "\n"
2206                              . '</select>' . "\n",
2207                              $dh->select_minute('43'));
2208      }
2209  
2210      /**
2211       *  Test select_hour()
2212       *
2213       *  Test {@link DateHelper::select_hour()} method
2214       */
2215      public function testSelect_hour() {
2216          $dh = new DateHelper;
2217  
2218          //  Test generation with all arguments omitted
2219          $this->assertContains('selected="selected">'.date('H'),
2220                              $dh->select_hour());
2221  
2222          //  Test generation with 17 selected, default format
2223          $this->assertEquals('<select name="hour">' . "\n"
2224                              . '<option value="00">00</option>' . "\n"
2225                              . '<option value="01">01</option>' . "\n"
2226                              . '<option value="02">02</option>' . "\n"
2227                              . '<option value="03">03</option>' . "\n"
2228                              . '<option value="04">04</option>' . "\n"
2229                              . '<option value="05">05</option>' . "\n"
2230                              . '<option value="06">06</option>' . "\n"
2231                              . '<option value="07">07</option>' . "\n"
2232                              . '<option value="08">08</option>' . "\n"
2233                              . '<option value="09">09</option>' . "\n"
2234                              . '<option value="10">10</option>' . "\n"
2235                              . '<option value="11">11</option>' . "\n"
2236                              . '<option value="12">12</option>' . "\n"
2237                              . '<option value="13">13</option>' . "\n"
2238                              . '<option value="14">14</option>' . "\n"
2239                              . '<option value="15">15</option>' . "\n"
2240                              . '<option value="16">16</option>' . "\n"
2241                              . '<option value="17"  selected="selected">17</option>' . "\n"
2242                              . '<option value="18">18</option>' . "\n"
2243                              . '<option value="19">19</option>' . "\n"
2244                              . '<option value="20">20</option>' . "\n"
2245                              . '<option value="21">21</option>' . "\n"
2246                              . '<option value="22">22</option>' . "\n"
2247                              . '<option value="23">23</option>' . "\n"
2248                              . '</select>' . "\n",
2249                              $dh->select_hour('17'));
2250  
2251          //  Test generation with 12 selected, name change
2252          $this->assertEquals('<select name="this-hour">' . "\n"
2253                              . '<option value="00">00</option>' . "\n"
2254                              . '<option value="01">01</option>' . "\n"
2255                              . '<option value="02">02</option>' . "\n"
2256                              . '<option value="03">03</option>' . "\n"
2257                              . '<option value="04">04</option>' . "\n"
2258                              . '<option value="05">05</option>' . "\n"
2259                              . '<option value="06">06</option>' . "\n"
2260                              . '<option value="07">07</option>' . "\n"
2261                              . '<option value="08">08</option>' . "\n"
2262                              . '<option value="09">09</option>' . "\n"
2263                              . '<option value="10">10</option>' . "\n"
2264                              . '<option value="11">11</option>' . "\n"
2265                              . '<option value="12"  selected="selected">12</option>' . "\n"
2266                              . '<option value="13">13</option>' . "\n"
2267                              . '<option value="14">14</option>' . "\n"
2268                              . '<option value="15">15</option>' . "\n"
2269                              . '<option value="16">16</option>' . "\n"
2270                              . '<option value="17">17</option>' . "\n"
2271                              . '<option value="18">18</option>' . "\n"
2272                              . '<option value="19">19</option>' . "\n"
2273                              . '<option value="20">20</option>' . "\n"
2274                              . '<option value="21">21</option>' . "\n"
2275                              . '<option value="22">22</option>' . "\n"
2276                              . '<option value="23">23</option>' . "\n"
2277                              . '</select>' . "\n",
2278                              $dh->select_hour('12',
2279                                          array('field_name' => 'this-hour')));
2280  
2281          //  Test generation with 09 selected, include blank
2282          $this->assertEquals('<select name="hour">' . "\n"
2283                              . '<option value=""></option>' . "\n"
2284                              . '<option value="00">00</option>' . "\n"
2285                              . '<option value="01">01</option>' . "\n"
2286                              . '<option value="02">02</option>' . "\n"
2287                              . '<option value="03">03</option>' . "\n"
2288                              . '<option value="04">04</option>' . "\n"
2289                              . '<option value="05">05</option>' . "\n"
2290                              . '<option value="06">06</option>' . "\n"
2291                              . '<option value="07">07</option>' . "\n"
2292                              . '<option value="08">08</option>' . "\n"
2293                              . '<option value="09"  selected="selected">09</option>' . "\n"
2294                              . '<option value="10">10</option>' . "\n"
2295                              . '<option value="11">11</option>' . "\n"
2296                              . '<option value="12">12</option>' . "\n"
2297                              . '<option value="13">13</option>' . "\n"
2298                              . '<option value="14">14</option>' . "\n"
2299                              . '<option value="15">15</option>' . "\n"
2300                              . '<option value="16">16</option>' . "\n"
2301                              . '<option value="17">17</option>' . "\n"
2302                              . '<option value="18">18</option>' . "\n"
2303                              . '<option value="19">19</option>' . "\n"
2304                              . '<option value="20">20</option>' . "\n"
2305                              . '<option value="21">21</option>' . "\n"
2306                              . '<option value="22">22</option>' . "\n"
2307                              . '<option value="23">23</option>' . "\n"
2308                              . '</select>' . "\n",
2309                              $dh->select_hour('09',
2310                                          array('include_blank' => true)));
2311  
2312  
2313          //  Test override of hours argument
2314          //  Simulate 22 parsed from $_REQUEST
2315          $dh->attribute_name = 'right_this_hour';
2316          $dh->request_hours['right_this_hour'] = 22;
2317          //  Test generation with 17 selected, default format
2318          $this->assertEquals('<select name="hour">' . "\n"
2319                              . '<option value="00">00</option>' . "\n"
2320                              . '<option value="01">01</option>' . "\n"
2321                              . '<option value="02">02</option>' . "\n"
2322                              . '<option value="03">03</option>' . "\n"
2323                              . '<option value="04">04</option>' . "\n"
2324                              . '<option value="05">05</option>' . "\n"
2325                              . '<option value="06">06</option>' . "\n"
2326                              . '<option value="07">07</option>' . "\n"
2327                              . '<option value="08">08</option>' . "\n"
2328                              . '<option value="09">09</option>' . "\n"
2329                              . '<option value="10">10</option>' . "\n"
2330                              . '<option value="11">11</option>' . "\n"
2331                              . '<option value="12">12</option>' . "\n"
2332                              . '<option value="13">13</option>' . "\n"
2333                              . '<option value="14">14</option>' . "\n"
2334                              . '<option value="15">15</option>' . "\n"
2335                              . '<option value="16">16</option>' . "\n"
2336                              . '<option value="17">17</option>' . "\n"
2337                              . '<option value="18">18</option>' . "\n"
2338                              . '<option value="19">19</option>' . "\n"
2339                              . '<option value="20">20</option>' . "\n"
2340                              . '<option value="21">21</option>' . "\n"
2341                              . '<option value="22"  selected="selected">22</option>' . "\n"
2342                              . '<option value="23">23</option>' . "\n"
2343                              . '</select>' . "\n",
2344                              $dh->select_hour('17'));
2345      }
2346  
2347      /**
2348       *  Test select_day() method
2349       *
2350       *  Test {@link DateHelper::select_day()}
2351       */
2352      public function testSelect_day_method() {
2353          $dh = new DateHelper();
2354  
2355          //  Test generation with all arguments omitted
2356          $this->assertContains('selected="selected">'.date('d'),
2357                              $dh->select_day());
2358  
2359          //  Test generation with twelfth selected, default format
2360          $this->assertEquals('<select name="day">' . "\n"
2361                              . '<option value="01">01</option>' . "\n"
2362                              . '<option value="02">02</option>' . "\n"
2363                              . '<option value="03">03</option>' . "\n"
2364                              . '<option value="04">04</option>' . "\n"
2365                              . '<option value="05">05</option>' . "\n"
2366                              . '<option value="06">06</option>' . "\n"
2367                              . '<option value="07">07</option>' . "\n"
2368                              . '<option value="08">08</option>' . "\n"
2369                              . '<option value="09">09</option>' . "\n"
2370                              . '<option value="10">10</option>' . "\n"
2371                              . '<option value="11">11</option>' . "\n"
2372                              . '<option value="12"  selected="selected">12</option>' . "\n"
2373                              . '<option value="13">13</option>' . "\n"
2374                              . '<option value="14">14</option>' . "\n"
2375                              . '<option value="15">15</option>' . "\n"
2376                              . '<option value="16">16</option>' . "\n"
2377                              . '<option value="17">17</option>' . "\n"
2378                              . '<option value="18">18</option>' . "\n"
2379                              . '<option value="19">19</option>' . "\n"
2380                              . '<option value="20">20</option>' . "\n"
2381                              . '<option value="21">21</option>' . "\n"
2382                              . '<option value="22">22</option>' . "\n"
2383                              . '<option value="23">23</option>' . "\n"
2384                              . '<option value="24">24</option>' . "\n"
2385                              . '<option value="25">25</option>' . "\n"
2386                              . '<option value="26">26</option>' . "\n"
2387                              . '<option value="27">27</option>' . "\n"
2388                              . '<option value="28">28</option>' . "\n"
2389                              . '<option value="29">29</option>' . "\n"
2390                              . '<option value="30">30</option>' . "\n"
2391                              . '<option value="31">31</option>' . "\n"
2392                              . '</select>' . "\n",
2393                              $dh->select_day('12'));
2394  
2395          //  Test generation with English selection, default format
2396          $this->assertEquals('<select name="day">' . "\n"
2397                              . '<option value="01">01</option>' . "\n"
2398                              . '<option value="02">02</option>' . "\n"
2399                              . '<option value="03">03</option>' . "\n"
2400                              . '<option value="04">04</option>' . "\n"
2401                              . '<option value="05">05</option>' . "\n"
2402                              . '<option value="06">06</option>' . "\n"
2403                              . '<option value="07">07</option>' . "\n"
2404                              . '<option value="08">08</option>' . "\n"
2405                              . '<option value="09">09</option>' . "\n"
2406                              . '<option value="10">10</option>' . "\n"
2407                              . '<option value="11">11</option>' . "\n"
2408                              . '<option value="12">12</option>' . "\n"
2409                              . '<option value="13">13</option>' . "\n"
2410                              . '<option value="14">14</option>' . "\n"
2411                              . '<option value="15">15</option>' . "\n"
2412                              . '<option value="16">16</option>' . "\n"
2413                              . '<option value="17">17</option>' . "\n"
2414                              . '<option value="18">18</option>' . "\n"
2415                              . '<option value="19">19</option>' . "\n"
2416                              . '<option value="20">20</option>' . "\n"
2417                              . '<option value="21">21</option>' . "\n"
2418                              . '<option value="22">22</option>' . "\n"
2419                              . '<option value="23">23</option>' . "\n"
2420                              . '<option value="24">24</option>' . "\n"
2421                              . '<option value="25"  selected="selected">25</option>' . "\n"
2422                              . '<option value="26">26</option>' . "\n"
2423                              . '<option value="27">27</option>' . "\n"
2424                              . '<option value="28">28</option>' . "\n"
2425                              . '<option value="29">29</option>' . "\n"
2426                              . '<option value="30">30</option>' . "\n"
2427                              . '<option value="31">31</option>' . "\n"
2428                              . '</select>' . "\n",
2429                              $dh->select_day('25 December 2002'));
2430  
2431          //  Test generation with twentieth selected, name change
2432          $this->assertEquals('<select name="new-day">' . "\n"
2433                              . '<option value="01">01</option>' . "\n"
2434                              . '<option value="02">02</option>' . "\n"
2435                              . '<option value="03">03</option>' . "\n"
2436                              . '<option value="04">04</option>' . "\n"
2437                              . '<option value="05">05</option>' . "\n"
2438                              . '<option value="06">06</option>' . "\n"
2439                              . '<option value="07">07</option>' . "\n"
2440                              . '<option value="08">08</option>' . "\n"
2441                              . '<option value="09">09</option>' . "\n"
2442                              . '<option value="10">10</option>' . "\n"
2443                              . '<option value="11">11</option>' . "\n"
2444                              . '<option value="12">12</option>' . "\n"
2445                              . '<option value="13">13</option>' . "\n"
2446                              . '<option value="14">14</option>' . "\n"
2447                              . '<option value="15">15</option>' . "\n"
2448                              . '<option value="16">16</option>' . "\n"
2449                              . '<option value="17">17</option>' . "\n"
2450                              . '<option value="18">18</option>' . "\n"
2451                              . '<option value="19">19</option>' . "\n"
2452                              . '<option value="20"  selected="selected">20</option>' . "\n"
2453                              . '<option value="21">21</option>' . "\n"
2454                              . '<option value="22">22</option>' . "\n"
2455                              . '<option value="23">23</option>' . "\n"
2456                              . '<option value="24">24</option>' . "\n"
2457                              . '<option value="25">25</option>' . "\n"
2458                              . '<option value="26">26</option>' . "\n"
2459                              . '<option value="27">27</option>' . "\n"
2460                              . '<option value="28">28</option>' . "\n"
2461                              . '<option value="29">29</option>' . "\n"
2462                              . '<option value="30">30</option>' . "\n"
2463                              . '<option value="31">31</option>' . "\n"
2464                              . '</select>' . "\n",
2465                              $dh->select_day('20',
2466                                              array('field_name'=>'new-day')));
2467  
2468          //  Test generation with thirtieth selected, include blank
2469          $this->assertEquals('<select name="day">' . "\n"
2470                              . '<option value=""></option>' . "\n"
2471                              . '<option value="01">01</option>' . "\n"
2472                              . '<option value="02">02</option>' . "\n"
2473                              . '<option value="03">03</option>' . "\n"
2474                              . '<option value="04">04</option>' . "\n"
2475                              . '<option value="05">05</option>' . "\n"
2476                              . '<option value="06">06</option>' . "\n"
2477                              . '<option value="07">07</option>' . "\n"
2478                              . '<option value="08">08</option>' . "\n"
2479                              . '<option value="09">09</option>' . "\n"
2480                              . '<option value="10">10</option>' . "\n"
2481                              . '<option value="11">11</option>' . "\n"
2482                              . '<option value="12">12</option>' . "\n"
2483                              . '<option value="13">13</option>' . "\n"
2484                              . '<option value="14">14</option>' . "\n"
2485                              . '<option value="15">15</option>' . "\n"
2486                              . '<option value="16">16</option>' . "\n"
2487                              . '<option value="17">17</option>' . "\n"
2488                              . '<option value="18">18</option>' . "\n"
2489                              . '<option value="19">19</option>' . "\n"
2490                              . '<option value="20">20</option>' . "\n"
2491                              . '<option value="21">21</option>' . "\n"
2492                              . '<option value="22">22</option>' . "\n"
2493                              . '<option value="23">23</option>' . "\n"
2494                              . '<option value="24">24</option>' . "\n"
2495                              . '<option value="25">25</option>' . "\n"
2496                              . '<option value="26">26</option>' . "\n"
2497                              . '<option value="27">27</option>' . "\n"
2498                              . '<option value="28">28</option>' . "\n"
2499                              . '<option value="29">29</option>' . "\n"
2500                              . '<option value="30"  selected="selected">30</option>' . "\n"
2501                              . '<option value="31">31</option>' . "\n"
2502                              . '</select>' . "\n",
2503                              $dh->select_day('30',
2504                                              array('include_blank'=>true)));
2505  
2506          //  Test override of day argument
2507          //  Simulate fifth parsed from $_REQUEST
2508          $dh->attribute_name = 'someday';
2509          $dh->request_days = array('someday' => '05');
2510          //  Test generation with twelfth selected, default format
2511          $this->assertEquals('<select name="day">' . "\n"
2512                              . '<option value="01">01</option>' . "\n"
2513                              . '<option value="02">02</option>' . "\n"
2514                              . '<option value="03">03</option>' . "\n"
2515                              . '<option value="04">04</option>' . "\n"
2516                              . '<option value="05"  selected="selected">05</option>' . "\n"
2517                              . '<option value="06">06</option>' . "\n"
2518                              . '<option value="07">07</option>' . "\n"
2519                              . '<option value="08">08</option>' . "\n"
2520                              . '<option value="09">09</option>' . "\n"
2521                              . '<option value="10">10</option>' . "\n"
2522                              . '<option value="11">11</option>' . "\n"
2523                              . '<option value="12">12</option>' . "\n"
2524                              . '<option value="13">13</option>' . "\n"
2525                              . '<option value="14">14</option>' . "\n"
2526                              . '<option value="15">15</option>' . "\n"
2527                              . '<option value="16">16</option>' . "\n"
2528                              . '<option value="17">17</option>' . "\n"
2529                              . '<option value="18">18</option>' . "\n"
2530                              . '<option value="19">19</option>' . "\n"
2531                              . '<option value="20">20</option>' . "\n"
2532                              . '<option value="21">21</option>' . "\n"
2533                              . '<option value="22">22</option>' . "\n"
2534                              . '<option value="23">23</option>' . "\n"
2535                              . '<option value="24">24</option>' . "\n"
2536                              . '<option value="25">25</option>' . "\n"
2537                              . '<option value="26">26</option>' . "\n"
2538                              . '<option value="27">27</option>' . "\n"
2539                              . '<option value="28">28</option>' . "\n"
2540                              . '<option value="29">29</option>' . "\n"
2541                              . '<option value="30">30</option>' . "\n"
2542                              . '<option value="31">31</option>' . "\n"
2543                              . '</select>' . "\n",
2544                              $dh->select_day('12'));
2545      }
2546  
2547      /**
2548       *  Test select_day() function
2549       *
2550       *  Test {@link select_day()} in procedural file {@link date_helper.php}
2551       */
2552      public function testSelect_day_function() {
2553  
2554          //  Test generation with twelfth selected, default format
2555          $this->assertEquals('<select name="day">' . "\n"
2556                              . '<option value="01">01</option>' . "\n"
2557                              . '<option value="02">02</option>' . "\n"
2558                              . '<option value="03">03</option>' . "\n"
2559                              . '<option value="04">04</option>' . "\n"
2560                              . '<option value="05">05</option>' . "\n"
2561                              . '<option value="06">06</option>' . "\n"
2562                              . '<option value="07">07</option>' . "\n"
2563                              . '<option value="08">08</option>' . "\n"
2564                              . '<option value="09">09</option>' . "\n"
2565                              . '<option value="10">10</option>' . "\n"
2566                              . '<option value="11">11</option>' . "\n"
2567                              . '<option value="12"  selected="selected">12</option>' . "\n"
2568                              . '<option value="13">13</option>' . "\n"
2569                              . '<option value="14">14</option>' . "\n"
2570                              . '<option value="15">15</option>' . "\n"
2571                              . '<option value="16">16</option>' . "\n"
2572                              . '<option value="17">17</option>' . "\n"
2573                              . '<option value="18">18</option>' . "\n"
2574                              . '<option value="19">19</option>' . "\n"
2575                              . '<option value="20">20</option>' . "\n"
2576                              . '<option value="21">21</option>' . "\n"
2577                              . '<option value="22">22</option>' . "\n"
2578                              . '<option value="23">23</option>' . "\n"
2579                              . '<option value="24">24</option>' . "\n"
2580                              . '<option value="25">25</option>' . "\n"
2581                              . '<option value="26">26</option>' . "\n"
2582                              . '<option value="27">27</option>' . "\n"
2583                              . '<option value="28">28</option>' . "\n"
2584                              . '<option value="29">29</option>' . "\n"
2585                              . '<option value="30">30</option>' . "\n"
2586                              . '<option value="31">31</option>' . "\n"
2587                              . '</select>' . "\n",
2588                              select_day('12'));
2589      }
2590  
2591      /**
2592       *  Test select_month() method
2593       *
2594       *  Test the {@link DateHelper::select_month()} method.<br />
2595       *  <b>NB:</b> doesn't test correctness of selection of current month
2596       */
2597      public function testSelect_month_method() {
2598          $dh = new DateHelper();
2599  
2600          //  Test generation with all arguments omitted
2601          $this->assertContains('selected="selected">'.date('F'),
2602                              $dh->select_month());
2603  
2604          //  Test generation with November selected, default output format
2605          $this->assertEquals('<select name="month">' . "\n"
2606                              . '<option value="01">January</option>' . "\n"
2607                              . '<option value="02">February</option>' . "\n"
2608                              . '<option value="03">March</option>' . "\n"
2609                              . '<option value="04">April</option>' . "\n"
2610                              . '<option value="05">May</option>' . "\n"
2611                              . '<option value="06">June</option>' . "\n"
2612                              . '<option value="07">July</option>' . "\n"
2613                              . '<option value="08">August</option>' . "\n"
2614                              . '<option value="09">September</option>' . "\n"
2615                              . '<option value="10">October</option>' . "\n"
2616                              . '<option value="11" selected="selected">November</option>' . "\n"
2617                              . '<option value="12">December</option>' . "\n"
2618                              . '</select>' . "\n",
2619                              $dh->select_month('11'));
2620  
2621          //  Test generation with English selection, default output format
2622          $this->assertEquals('<select name="month">' . "\n"
2623                              . '<option value="01">January</option>' . "\n"
2624                              . '<option value="02">February</option>' . "\n"
2625                              . '<option value="03">March</option>' . "\n"
2626                              . '<option value="04">April</option>' . "\n"
2627                              . '<option value="05">May</option>' . "\n"
2628                              . '<option value="06">June</option>' . "\n"
2629                              . '<option value="07" selected="selected">July</option>' . "\n"
2630                              . '<option value="08">August</option>' . "\n"
2631                              . '<option value="09">September</option>' . "\n"
2632                              . '<option value="10">October</option>' . "\n"
2633                              . '<option value="11">November</option>' . "\n"
2634                              . '<option value="12">December</option>' . "\n"
2635                              . '</select>' . "\n",
2636                              $dh->select_month('28 July 2004'));
2637  
2638          //  Test generation of month numbers as visible content
2639          $this->assertEquals('<select name="month">' . "\n"
2640                              . '<option value="01">1</option>' . "\n"
2641                              . '<option value="02">2</option>' . "\n"
2642                              . '<option value="03" selected="selected">3</option>' . "\n"
2643                              . '<option value="04">4</option>' . "\n"
2644                              . '<option value="05">5</option>' . "\n"
2645                              . '<option value="06">6</option>' . "\n"
2646                              . '<option value="07">7</option>' . "\n"
2647                              . '<option value="08">8</option>' . "\n"
2648                              . '<option value="09">9</option>' . "\n"
2649                              . '<option value="10">10</option>' . "\n"
2650                              . '<option value="11">11</option>' . "\n"
2651                              . '<option value="12">12</option>' . "\n"
2652                              . '</select>' . "\n",
2653                              $dh->select_month("03",
2654                                                array('use_month_numbers'=>1)));
2655  
2656          //  Test addition of month numbers to visible content
2657          $this->assertEquals('<select name="month">' . "\n"
2658                              . '<option value="01">1 - January</option>' . "\n"
2659                              . '<option value="02">2 - February</option>' . "\n"
2660                              . '<option value="03">3 - March</option>' . "\n"
2661                              . '<option value="04">4 - April</option>' . "\n"
2662                              . '<option value="05" selected="selected">5 - May</option>' . "\n"
2663                              . '<option value="06">6 - June</option>' . "\n"
2664                              . '<option value="07">7 - July</option>' . "\n"
2665                              . '<option value="08">8 - August</option>' . "\n"
2666                              . '<option value="09">9 - September</option>' . "\n"
2667                              . '<option value="10">10 - October</option>' . "\n"
2668                              . '<option value="11">11 - November</option>' . "\n"
2669                              . '<option value="12">12 - December</option>' . "\n"
2670                              . '</select>' . "\n",
2671                              $dh->select_month("05",
2672                                                array('add_month_numbers'=>1)));
2673  
2674          //  Test override of month argument
2675          //  Simulate month of May parsed from $_REQUEST
2676          $dh->attribute_name = 'sometime';
2677          $dh->request_months = array('sometime' => '05');
2678          //  Test generation with November overridden, default output format
2679          $this->assertEquals('<select name="month">' . "\n"
2680                              . '<option value="01">January</option>' . "\n"
2681                              . '<option value="02">February</option>' . "\n"
2682                              . '<option value="03">March</option>' . "\n"
2683                              . '<option value="04">April</option>' . "\n"
2684                              . '<option value="05" selected="selected">May</option>' . "\n"
2685                              . '<option value="06">June</option>' . "\n"
2686                              . '<option value="07">July</option>' . "\n"
2687                              . '<option value="08">August</option>' . "\n"
2688                              . '<option value="09">September</option>' . "\n"
2689                              . '<option value="10">October</option>' . "\n"
2690                              . '<option value="11">November</option>' . "\n"
2691                              . '<option value="12">December</option>' . "\n"
2692                              . '</select>' . "\n",
2693                              $dh->select_month('11'));
2694      }
2695  
2696      /**
2697       *  Test select_month() function
2698       *
2699       *  Test the {@link select_month()} function in procedural file
2700       *  {@link date_helper.php}
2701       */
2702      public function testSelect_month_function() {
2703  
2704          //  Test generation with November selected, default output format
2705          $this->assertEquals('<select name="month">' . "\n"
2706                              . '<option value="01">January</option>' . "\n"
2707                              . '<option value="02">February</option>' . "\n"
2708                              . '<option value="03">March</option>' . "\n"
2709                              . '<option value="04">April</option>' . "\n"
2710                              . '<option value="05">May</option>' . "\n"
2711                              . '<option value="06">June</option>' . "\n"
2712                              . '<option value="07">July</option>' . "\n"
2713                              . '<option value="08">August</option>' . "\n"
2714                              . '<option value="09">September</option>' . "\n"
2715                              . '<option value="10">October</option>' . "\n"
2716                              . '<option value="11" selected="selected">November</option>' . "\n"
2717                              . '<option value="12">December</option>' . "\n"
2718                              . '</select>' . "\n",
2719                              select_month('11'));
2720      }
2721  
2722      /**
2723       *  Test year_option()
2724       */
2725      public function testYear_option() {
2726          $dh = new DateHelper;
2727          $this->assertEquals('<option value="2001">2001</option>' . "\n",
2728                              $dh->year_option('2001','2002'));
2729          $this->assertEquals('<option value="2004"  selected="selected">'
2730                              . '2004</option>' . "\n",
2731                              $dh->year_option('2004','2004'));
2732      }
2733  
2734      /**
2735       *  Test select_year() method
2736       *
2737       *  Test {@link DateHelper::select_year()}
2738       */
2739      public function testSelect_year() {
2740          $dh = new DateHelper;
2741  
2742          //  Test generation with all arguments omitted
2743          $this->assertContains('selected="selected">'.date('Y'),
2744                              $dh->select_year());
2745  
2746          //  Specify year in digits, default all options
2747          $this->assertEquals('<select name="year">' . "\n"
2748           . '<option value="2001">2001</option>' . "\n"
2749           . '<option value="2002">2002</option>' . "\n"
2750           . '<option value="2003">2003</option>' . "\n"
2751           . '<option value="2004">2004</option>' . "\n"
2752           . '<option value="2005">2005</option>' . "\n"
2753           . '<option value="2006"  selected="selected">2006</option>' . "\n"
2754           . '<option value="2007">2007</option>' . "\n"
2755           . '<option value="2008">2008</option>' . "\n"
2756           . '<option value="2009">2009</option>' . "\n"
2757           . '<option value="2010">2010</option>' . "\n"
2758           . '<option value="2011">2011</option>' . "\n"
2759           . '</select>' . "\n",
2760                              $dh->select_year('2006'));
2761  
2762          //  Specify year in English, default all options
2763          $this->assertEquals('<select name="year">' . "\n"
2764           . '<option value="1992">1992</option>' . "\n"
2765           . '<option value="1993">1993</option>' . "\n"
2766           . '<option value="1994">1994</option>' . "\n"
2767           . '<option value="1995">1995</option>' . "\n"
2768           . '<option value="1996">1996</option>' . "\n"
2769           . '<option value="1997"  selected="selected">1997</option>' . "\n"
2770           . '<option value="1998">1998</option>' . "\n"
2771           . '<option value="1999">1999</option>' . "\n"
2772           . '<option value="2000">2000</option>' . "\n"
2773           . '<option value="2001">2001</option>' . "\n"
2774           . '<option value="2002">2002</option>' . "\n"
2775           . '</select>' . "\n",
2776                              $dh->select_year('September 12, 1997'));
2777  
2778          //  Specify year in digits, option 'start_year' => '2003'
2779          $this->assertEquals('<select name="year">' . "\n"
2780           . '<option value="2003">2003</option>' . "\n"
2781           . '<option value="2004">2004</option>' . "\n"
2782           . '<option value="2005">2005</option>' . "\n"
2783           . '<option value="2006"  selected="selected">2006</option>' . "\n"
2784           . '<option value="2007">2007</option>' . "\n"
2785           . '<option value="2008">2008</option>' . "\n"
2786           . '<option value="2009">2009</option>' . "\n"
2787           . '<option value="2010">2010</option>' . "\n"
2788           . '<option value="2011">2011</option>' . "\n"
2789           . '</select>' . "\n",
2790                              $dh->select_year('2006',
2791                                               array('start_year' => 2003)));
2792  
2793          //  Specify year in digits, option 'end_year' => '2009'
2794          $this->assertEquals('<select name="year">' . "\n"
2795           . '<option value="2001">2001</option>' . "\n"
2796           . '<option value="2002">2002</option>' . "\n"
2797           . '<option value="2003">2003</option>' . "\n"
2798           . '<option value="2004">2004</option>' . "\n"
2799           . '<option value="2005">2005</option>' . "\n"
2800           . '<option value="2006"  selected="selected">2006</option>' . "\n"
2801           . '<option value="2007">2007</option>' . "\n"
2802           . '<option value="2008">2008</option>' . "\n"
2803           . '<option value="2009">2009</option>' . "\n"
2804           . '</select>' . "\n",
2805                              $dh->select_year('2006',
2806                                               array('end_year'=>'2009')));
2807  
2808          //  Specify year in digits, option 'field_name' => 'tax_year'
2809          $this->assertEquals('<select name="tax_year">' . "\n"
2810           . '<option value="2001">2001</option>' . "\n"
2811           . '<option value="2002">2002</option>' . "\n"
2812           . '<option value="2003">2003</option>' . "\n"
2813           . '<option value="2004">2004</option>' . "\n"
2814           . '<option value="2005">2005</option>' . "\n"
2815           . '<option value="2006"  selected="selected">2006</option>' . "\n"
2816           . '<option value="2007">2007</option>' . "\n"
2817           . '<option value="2008">2008</option>' . "\n"
2818           . '<option value="2009">2009</option>' . "\n"
2819           . '<option value="2010">2010</option>' . "\n"
2820           . '<option value="2011">2011</option>' . "\n"
2821           . '</select>' . "\n",
2822                              $dh->select_year('2006',
2823                                               array('field_name'=>'tax_year')));
2824  
2825          //  Specify year in English, default all options
2826          $this->assertEquals('<select name="year">' . "\n"
2827           . '<option value="2001">2001</option>' . "\n"
2828           . '<option value="2002">2002</option>' . "\n"
2829           . '<option value="2003">2003</option>' . "\n"
2830           . '<option value="2004">2004</option>' . "\n"
2831           . '<option value="2005">2005</option>' . "\n"
2832           . '<option value="2006"  selected="selected">2006</option>' . "\n"
2833           . '<option value="2007">2007</option>' . "\n"
2834           . '<option value="2008">2008</option>' . "\n"
2835           . '<option value="2009">2009</option>' . "\n"
2836           . '<option value="2010">2010</option>' . "\n"
2837           . '<option value="2011">2011</option>' . "\n"
2838           . '</select>' . "\n",
2839                              $dh->select_year('November 9, 2006'));
2840  
2841          //  Specify year in digits, reverse start and end years
2842          $this->assertEquals('<select name="year">' . "\n"
2843           . '<option value="2009">2009</option>' . "\n"
2844           . '<option value="2008">2008</option>' . "\n"
2845           . '<option value="2007">2007</option>' . "\n"
2846           . '<option value="2006"  selected="selected">2006</option>' . "\n"
2847           . '<option value="2005">2005</option>' . "\n"
2848           . '<option value="2004">2004</option>' . "\n"
2849           . '<option value="2003">2003</option>' . "\n"
2850           . '</select>' . "\n",
2851                              $dh->select_year('2006',
2852                                               array('start_year'=>'2009',
2853                                                     'end_year'=>'2003')));
2854  
2855          //  Specify year in digits and override with $request_years
2856          $dh->attribute_name = 'sometime';
2857          $dh->request_years = array('sometime' => '2002');
2858          $this->assertEquals('<select name="year">' . "\n"
2859           . '<option value="1997">1997</option>' . "\n"
2860           . '<option value="1998">1998</option>' . "\n"
2861           . '<option value="1999">1999</option>' . "\n"
2862           . '<option value="2000">2000</option>' . "\n"
2863           . '<option value="2001">2001</option>' . "\n"
2864           . '<option value="2002"  selected="selected">2002</option>' . "\n"
2865           . '<option value="2003">2003</option>' . "\n"
2866           . '<option value="2004">2004</option>' . "\n"
2867           . '<option value="2005">2005</option>' . "\n"
2868           . '<option value="2006">2006</option>' . "\n"
2869           . '<option value="2007">2007</option>' . "\n"
2870           . '</select>' . "\n",
2871                              $dh->select_year('2006'));
2872      }
2873  
2874      /**
2875       *  Test year_select() method
2876       *
2877       *  Test {@link DateHelper::year_select()} method
2878       */
2879      public function testYear_select_method() {
2880          $dh = new DateHelper('foo','bar');
2881          $dh->controller_object = new ActionController;
2882          $ar = new ActiveRecord;
2883          $dh->controller_object->foo = $ar;
2884  
2885          //  With no value in $_REQUEST, data should be
2886          //  retrieved from the the ActiveRecord
2887          $ar->expect_query("bar","1999");
2888          $this->assertEquals('<select name="foo[bar(1i)]">' . "\n"
2889           . '<option value="1994">1994</option>' . "\n"
2890           . '<option value="1995">1995</option>' . "\n"
2891           . '<option value="1996">1996</option>' . "\n"
2892           . '<option value="1997">1997</option>' . "\n"
2893           . '<option value="1998">1998</option>' . "\n"
2894           . '<option value="1999"  selected="selected">1999</option>' . "\n"
2895           . '<option value="2000">2000</option>' . "\n"
2896           . '<option value="2001">2001</option>' . "\n"
2897           . '<option value="2002">2002</option>' . "\n"
2898           . '<option value="2003">2003</option>' . "\n"
2899           . '<option value="2004">2004</option>' . "\n"
2900           . '</select>' . "\n",
2901           $dh->year_select());
2902  
2903          //  Get year from $_REQUEST, default all options
2904          $_REQUEST['foo']['bar(1i)'] = '2004';
2905          $this->assertEquals('<select name="foo[bar(1i)]">' . "\n"
2906           . '<option value="1999">1999</option>' . "\n"
2907           . '<option value="2000">2000</option>' . "\n"
2908           . '<option value="2001">2001</option>' . "\n"
2909           . '<option value="2002">2002</option>' . "\n"
2910           . '<option value="2003">2003</option>' . "\n"
2911           . '<option value="2004"  selected="selected">2004</option>' . "\n"
2912           . '<option value="2005">2005</option>' . "\n"
2913           . '<option value="2006">2006</option>' . "\n"
2914           . '<option value="2007">2007</option>' . "\n"
2915           . '<option value="2008">2008</option>' . "\n"
2916           . '<option value="2009">2009</option>' . "\n"
2917           . '</select>' . "\n",
2918           $dh->year_select());
2919      }
2920  
2921      /**
2922       *  Test year_select() function
2923       *
2924       *  Test {@link year_select()} function in procedural file
2925       *  {@link date_helper.php}
2926       */
2927      public function testYear_select_function() {
2928          $_REQUEST['foo']['bar(1i)'] = '2004';
2929  
2930          //  Specify year in digits, default all options
2931          $this->assertEquals('<select name="foo[bar(1i)]">' . "\n"
2932           . '<option value="1999">1999</option>' . "\n"
2933           . '<option value="2000">2000</option>' . "\n"
2934           . '<option value="2001">2001</option>' . "\n"
2935           . '<option value="2002">2002</option>' . "\n"
2936           . '<option value="2003">2003</option>' . "\n"
2937           . '<option value="2004"  selected="selected">2004</option>' . "\n"
2938           . '<option value="2005">2005</option>' . "\n"
2939           . '<option value="2006">2006</option>' . "\n"
2940           . '<option value="2007">2007</option>' . "\n"
2941           . '<option value="2008">2008</option>' . "\n"
2942           . '<option value="2009">2009</option>' . "\n"
2943           . '</select>' . "\n",
2944                              year_select('foo','bar'));
2945      }
2946  
2947      /**
2948       *  Test to_date_select_tag() method
2949       *
2950       *  Test {@link DateHelper::to_date_select_tag()} method
2951       */
2952      public function testTo_date_select_tag() {
2953          $dh = new DateHelper('Person', 'birthdate');
2954          $dh->controller_object = new ActionController;
2955          $ar = new ActiveRecord;
2956          $dh->controller_object->Person = $ar;
2957  
2958          //  With no value in $_REQUEST, data should be
2959          //  retrieved from the the ActiveRecord
2960          $ar->expect_query("birthdate","1999-02-17");
2961  
2962          //  Test with default format
2963          $this->assertEquals('<select name="Person[birthdate(1i)]">' . "\n"
2964             . '<option value="1994">1994</option>' . "\n"
2965             . '<option value="1995">1995</option>' . "\n"
2966             . '<option value="1996">1996</option>' . "\n"
2967             . '<option value="1997">1997</option>' . "\n"
2968             . '<option value="1998">1998</option>' . "\n"
2969             . '<option value="1999"  selected="selected">1999</option>' . "\n"
2970             . '<option value="2000">2000</option>' . "\n"
2971             . '<option value="2001">2001</option>' . "\n"
2972             . '<option value="2002">2002</option>' . "\n"
2973             . '<option value="2003">2003</option>' . "\n"
2974             . '<option value="2004">2004</option>' . "\n"
2975             . '</select>' . "\n"
2976             . ' <select name="Person[birthdate(2i)]">' . "\n"
2977             . '<option value="01">January</option>' . "\n"
2978             . '<option value="02" selected="selected">February</option>' . "\n"
2979             . '<option value="03">March</option>' . "\n"
2980             . '<option value="04">April</option>' . "\n"
2981             . '<option value="05">May</option>' . "\n"
2982             . '<option value="06">June</option>' . "\n"
2983             . '<option value="07">July</option>' . "\n"
2984             . '<option value="08">August</option>' . "\n"
2985             . '<option value="09">September</option>' . "\n"
2986             . '<option value="10">October</option>' . "\n"
2987             . '<option value="11">November</option>' . "\n"
2988             . '<option value="12">December</option>' . "\n"
2989             . '</select>' . "\n"
2990             . ' <select name="Person[birthdate(3i)]">' . "\n"
2991             . '<option value="01">01</option>' . "\n"
2992             . '<option value="02">02</option>' . "\n"
2993             . '<option value="03">03</option>' . "\n"
2994             . '<option value="04">04</option>' . "\n"
2995             . '<option value="05">05</option>' . "\n"
2996             . '<option value="06">06</option>' . "\n"
2997             . '<option value="07">07</option>' . "\n"
2998             . '<option value="08">08</option>' . "\n"
2999             . '<option value="09">09</option>' . "\n"
3000             . '<option value="10">10</option>' . "\n"
3001             . '<option value="11">11</option>' . "\n"
3002             . '<option value="12">12</option>' . "\n"
3003             . '<option value="13">13</option>' . "\n"
3004             . '<option value="14">14</option>' . "\n"
3005             . '<option value="15">15</option>' . "\n"
3006             . '<option value="16">16</option>' . "\n"
3007             . '<option value="17"  selected="selected">17</option>' . "\n"
3008             . '<option value="18">18</option>' . "\n"
3009             . '<option value="19">19</option>' . "\n"
3010             . '<option value="20">20</option>' . "\n"
3011             . '<option value="21">21</option>' . "\n"
3012             . '<option value="22">22</option>' . "\n"
3013             . '<option value="23">23</option>' . "\n"
3014             . '<option value="24">24</option>' . "\n"
3015             . '<option value="25">25</option>' . "\n"
3016             . '<option value="26">26</option>' . "\n"
3017             . '<option value="27">27</option>' . "\n"
3018             . '<option value="28">28</option>' . "\n"
3019             . '<option value="29">29</option>' . "\n"
3020             . '<option value="30">30</option>' . "\n"
3021             . '<option value="31">31</option>' . "\n"
3022             . '</select>' . "\n",
3023                              $dh->to_date_select_tag());
3024  
3025  
3026          $_REQUEST['Person']['birthdate(1i)'] = '1955';
3027          $_REQUEST['Person']['birthdate(2i)'] = '08';
3028          $_REQUEST['Person']['birthdate(3i)'] = '13';
3029  
3030          //  Test with default format
3031          $this->assertEquals('<select name="Person[birthdate(1i)]">' . "\n"
3032             . '<option value="1950">1950</option>' . "\n"
3033             . '<option value="1951">1951</option>' . "\n"
3034             . '<option value="1952">1952</option>' . "\n"
3035             . '<option value="1953">1953</option>' . "\n"
3036             . '<option value="1954">1954</option>' . "\n"
3037             . '<option value="1955"  selected="selected">1955</option>' . "\n"
3038             . '<option value="1956">1956</option>' . "\n"
3039             . '<option value="1957">1957</option>' . "\n"
3040             . '<option value="1958">1958</option>' . "\n"
3041             . '<option value="1959">1959</option>' . "\n"
3042             . '<option value="1960">1960</option>' . "\n"
3043             . '</select>' . "\n"
3044             . ' <select name="Person[birthdate(2i)]">' . "\n"
3045             . '<option value="01">January</option>' . "\n"
3046             . '<option value="02">February</option>' . "\n"
3047             . '<option value="03">March</option>' . "\n"
3048             . '<option value="04">April</option>' . "\n"
3049             . '<option value="05">May</option>' . "\n"
3050             . '<option value="06">June</option>' . "\n"
3051             . '<option value="07">July</option>' . "\n"
3052             . '<option value="08" selected="selected">August</option>' . "\n"
3053             . '<option value="09">September</option>' . "\n"
3054             . '<option value="10">October</option>' . "\n"
3055             . '<option value="11">November</option>' . "\n"
3056             . '<option value="12">December</option>' . "\n"
3057             . '</select>' . "\n"
3058             . ' <select name="Person[birthdate(3i)]">' . "\n"
3059             . '<option value="01">01</option>' . "\n"
3060             . '<option value="02">02</option>' . "\n"
3061             . '<option value="03">03</option>' . "\n"
3062             . '<option value="04">04</option>' . "\n"
3063             . '<option value="05">05</option>' . "\n"
3064             . '<option value="06">06</option>' . "\n"
3065             . '<option value="07">07</option>' . "\n"
3066             . '<option value="08">08</option>' . "\n"
3067             . '<option value="09">09</option>' . "\n"
3068             . '<option value="10">10</option>' . "\n"
3069             . '<option value="11">11</option>' . "\n"
3070             . '<option value="12">12</option>' . "\n"
3071             . '<option value="13"  selected="selected">13</option>' . "\n"
3072             . '<option value="14">14</option>' . "\n"
3073             . '<option value="15">15</option>' . "\n"
3074             . '<option value="16">16</option>' . "\n"
3075             . '<option value="17">17</option>' . "\n"
3076             . '<option value="18">18</option>' . "\n"
3077             . '<option value="19">19</option>' . "\n"
3078             . '<option value="20">20</option>' . "\n"
3079             . '<option value="21">21</option>' . "\n"
3080             . '<option value="22">22</option>' . "\n"
3081             . '<option value="23">23</option>' . "\n"
3082             . '<option value="24">24</option>' . "\n"
3083             . '<option value="25">25</option>' . "\n"
3084             . '<option value="26">26</option>' . "\n"
3085             . '<option value="27">27</option>' . "\n"
3086             . '<option value="28">28</option>' . "\n"
3087             . '<option value="29">29</option>' . "\n"
3088             . '<option value="30">30</option>' . "\n"
3089             . '<option value="31">31</option>' . "\n"
3090             . '</select>' . "\n",
3091                              $dh->to_date_select_tag());
3092  
3093          //  Test 'month_before_year' option
3094          $this->assertEquals('<select name="Person[birthdate(2i)]">' . "\n"
3095             . '<option value="01">January</option>' . "\n"
3096             . '<option value="02">February</option>' . "\n"
3097             . '<option value="03">March</option>' . "\n"
3098             . '<option value="04">April</option>' . "\n"
3099             . '<option value="05">May</option>' . "\n"
3100             . '<option value="06">June</option>' . "\n"
3101             . '<option value="07">July</option>' . "\n"
3102             . '<option value="08" selected="selected">August</option>' . "\n"
3103             . '<option value="09">September</option>' . "\n"
3104             . '<option value="10">October</option>' . "\n"
3105             . '<option value="11">November</option>' . "\n"
3106             . '<option value="12">December</option>' . "\n"
3107             . '</select>' . "\n"
3108             . ' <select name="Person[birthdate(1i)]">' . "\n"
3109             . '<option value="1950">1950</option>' . "\n"
3110             . '<option value="1951">1951</option>' . "\n"
3111             . '<option value="1952">1952</option>' . "\n"
3112             . '<option value="1953">1953</option>' . "\n"
3113             . '<option value="1954">1954</option>' . "\n"
3114             . '<option value="1955"  selected="selected">1955</option>' . "\n"
3115             . '<option value="1956">1956</option>' . "\n"
3116             . '<option value="1957">1957</option>' . "\n"
3117             . '<option value="1958">1958</option>' . "\n"
3118             . '<option value="1959">1959</option>' . "\n"
3119             . '<option value="1960">1960</option>' . "\n"
3120             . '</select>' . "\n"
3121             . ' <select name="Person[birthdate(3i)]">' . "\n"
3122             . '<option value="01">01</option>' . "\n"
3123             . '<option value="02">02</option>' . "\n"
3124             . '<option value="03">03</option>' . "\n"
3125             . '<option value="04">04</option>' . "\n"
3126             . '<option value="05">05</option>' . "\n"
3127             . '<option value="06">06</option>' . "\n"
3128             . '<option value="07">07</option>' . "\n"
3129             . '<option value="08">08</option>' . "\n"
3130             . '<option value="09">09</option>' . "\n"
3131             . '<option value="10">10</option>' . "\n"
3132             . '<option value="11">11</option>' . "\n"
3133             . '<option value="12">12</option>' . "\n"
3134             . '<option value="13"  selected="selected">13</option>' . "\n"
3135             . '<option value="14">14</option>' . "\n"
3136             . '<option value="15">15</option>' . "\n"
3137             . '<option value="16">16</option>' . "\n"
3138             . '<option value="17">17</option>' . "\n"
3139             . '<option value="18">18</option>' . "\n"
3140             . '<option value="19">19</option>' . "\n"
3141             . '<option value="20">20</option>' . "\n"
3142             . '<option value="21">21</option>' . "\n"
3143             . '<option value="22">22</option>' . "\n"
3144             . '<option value="23">23</option>' . "\n"
3145             . '<option value="24">24</option>' . "\n"
3146             . '<option value="25">25</option>' . "\n"
3147             . '<option value="26">26</option>' . "\n"
3148             . '<option value="27">27</option>' . "\n"
3149             . '<option value="28">28</option>' . "\n"
3150             . '<option value="29">29</option>' . "\n"
3151             . '<option value="30">30</option>' . "\n"
3152             . '<option value="31">31</option>' . "\n"
3153             . '</select>' . "\n",
3154                              $dh->to_date_select_tag(
3155                                    array('month_before_year' => true)));
3156  
3157          //  Test with 'discard_year' option
3158          $this->assertEquals('<select name="Person[birthdate(2i)]">' . "\n"
3159             . '<option value="01">January</option>' . "\n"
3160             . '<option value="02">February</option>' . "\n"
3161             . '<option value="03">March</option>' . "\n"
3162             . '<option value="04">April</option>' . "\n"
3163             . '<option value="05">May</option>' . "\n"
3164             . '<option value="06">June</option>' . "\n"
3165             . '<option value="07">July</option>' . "\n"
3166             . '<option value="08" selected="selected">August</option>' . "\n"
3167             . '<option value="09">September</option>' . "\n"
3168             . '<option value="10">October</option>' . "\n"
3169             . '<option value="11">November</option>' . "\n"
3170             . '<option value="12">December</option>' . "\n"
3171             . '</select>' . "\n"
3172             . ' <select name="Person[birthdate(3i)]">' . "\n"
3173             . '<option value="01">01</option>' . "\n"
3174             . '<option value="02">02</option>' . "\n"
3175             . '<option value="03">03</option>' . "\n"
3176             . '<option value="04">04</option>' . "\n"
3177             . '<option value="05">05</option>' . "\n"
3178             . '<option value="06">06</option>' . "\n"
3179             . '<option value="07">07</option>' . "\n"
3180             . '<option value="08">08</option>' . "\n"
3181             . '<option value="09">09</option>' . "\n"
3182             . '<option value="10">10</option>' . "\n"
3183             . '<option value="11">11</option>' . "\n"
3184             . '<option value="12">12</option>' . "\n"
3185             . '<option value="13"  selected="selected">13</option>' . "\n"
3186             . '<option value="14">14</option>' . "\n"
3187             . '<option value="15">15</option>' . "\n"
3188             . '<option value="16">16</option>' . "\n"
3189             . '<option value="17">17</option>' . "\n"
3190             . '<option value="18">18</option>' . "\n"
3191             . '<option value="19">19</option>' . "\n"
3192             . '<option value="20">20</option>' . "\n"
3193             . '<option value="21">21</option>' . "\n"
3194             . '<option value="22">22</option>' . "\n"
3195             . '<option value="23">23</option>' . "\n"
3196             . '<option value="24">24</option>' . "\n"
3197             . '<option value="25">25</option>' . "\n"
3198             . '<option value="26">26</option>' . "\n"
3199             . '<option value="27">27</option>' . "\n"
3200             . '<option value="28">28</option>' . "\n"
3201             . '<option value="29">29</option>' . "\n"
3202             . '<option value="30">30</option>' . "\n"
3203             . '<option value="31">31</option>' . "\n"
3204             . '</select>' . "\n",
3205             $dh->to_date_select_tag(array('discard_year' => true)));
3206  
3207          //  Test 'month_before_year' and 'discard_day' options
3208          $this->assertEquals('<select name="Person[birthdate(2i)]">' . "\n"
3209             . '<option value="01">January</option>' . "\n"
3210             . '<option value="02">February</option>' . "\n"
3211             . '<option value="03">March</option>' . "\n"
3212             . '<option value="04">April</option>' . "\n"
3213             . '<option value="05">May</option>' . "\n"
3214             . '<option value="06">June</option>' . "\n"
3215             . '<option value="07">July</option>' . "\n"
3216             . '<option value="08" selected="selected">August</option>' . "\n"
3217             . '<option value="09">September</option>' . "\n"
3218             . '<option value="10">October</option>' . "\n"
3219             . '<option value="11">November</option>' . "\n"
3220             . '<option value="12">December</option>' . "\n"
3221             . '</select>' . "\n"
3222             . ' <select name="Person[birthdate(1i)]">' . "\n"
3223             . '<option value="1950">1950</option>' . "\n"
3224             . '<option value="1951">1951</option>' . "\n"
3225             . '<option value="1952">1952</option>' . "\n"
3226             . '<option value="1953">1953</option>' . "\n"
3227             . '<option value="1954">1954</option>' . "\n"
3228             . '<option value="1955"  selected="selected">1955</option>' . "\n"
3229             . '<option value="1956">1956</option>' . "\n"
3230             . '<option value="1957">1957</option>' . "\n"
3231             . '<option value="1958">1958</option>' . "\n"
3232             . '<option value="1959">1959</option>' . "\n"
3233             . '<option value="1960">1960</option>' . "\n"
3234             . '</select>' . "\n",
3235             $dh->to_date_select_tag(array('month_before_year' => true,
3236                                            'discard_day' => true)));
3237      }
3238  
3239      /**
3240       *  Test to_datetime_select_tag() method
3241       *
3242       *  Test {@link DateHelper::to_datetime_select_tag()} method
3243       */
3244      public function testTo_datetime_select_tag() {
3245          $dh = new DateHelper('Person','birth');
3246          $dh->controller_object = new ActionController;
3247          $ar = new ActiveRecord;
3248          $dh->controller_object->Person = $ar;
3249  
3250          //  Data from the the ActiveRecord, default format
3251          $ar->expect_query("birth","2001-07-05 11:30:45");
3252          $this->assertEquals('<select name="Person[birth(1i)]">' . "\n"
3253             . '<option value="1996">1996</option>' . "\n"
3254             . '<option value="1997">1997</option>' . "\n"
3255             . '<option value="1998">1998</option>' . "\n"
3256             . '<option value="1999">1999</option>' . "\n"
3257             . '<option value="2000">2000</option>' . "\n"
3258             . '<option value="2001"  selected="selected">2001</option>' . "\n"
3259             . '<option value="2002">2002</option>' . "\n"
3260             . '<option value="2003">2003</option>' . "\n"
3261             . '<option value="2004">2004</option>' . "\n"
3262             . '<option value="2005">2005</option>' . "\n"
3263             . '<option value="2006">2006</option>' . "\n"
3264             . '</select>' . "\n"
3265             . '<select name="Person[birth(2i)]">' . "\n"
3266             . '<option value="01">January</option>' . "\n"
3267             . '<option value="02">February</option>' . "\n"
3268             . '<option value="03">March</option>' . "\n"
3269             . '<option value="04">April</option>' . "\n"
3270             . '<option value="05">May</option>' . "\n"
3271             . '<option value="06">June</option>' . "\n"
3272             . '<option value="07" selected="selected">July</option>' . "\n"
3273             . '<option value="08">August</option>' . "\n"
3274             . '<option value="09">September</option>' . "\n"
3275             . '<option value="10">October</option>' . "\n"
3276             . '<option value="11">November</option>' . "\n"
3277             . '<option value="12">December</option>' . "\n"
3278             . '</select>' . "\n"
3279             . '<select name="Person[birth(3i)]">' . "\n"
3280             . '<option value="01">01</option>' . "\n"
3281             . '<option value="02">02</option>' . "\n"
3282             . '<option value="03">03</option>' . "\n"
3283             . '<option value="04">04</option>' . "\n"
3284             . '<option value="05"  selected="selected">05</option>' . "\n"
3285             . '<option value="06">06</option>' . "\n"
3286             . '<option value="07">07</option>' . "\n"
3287             . '<option value="08">08</option>' . "\n"
3288             . '<option value="09">09</option>' . "\n"
3289             . '<option value="10">10</option>' . "\n"
3290             . '<option value="11">11</option>' . "\n"
3291             . '<option value="12">12</option>' . "\n"
3292             . '<option value="13">13</option>' . "\n"
3293             . '<option value="14">14</option>' . "\n"
3294             . '<option value="15">15</option>' . "\n"
3295             . '<option value="16">16</option>' . "\n"
3296             . '<option value="17">17</option>' . "\n"
3297             . '<option value="18">18</option>' . "\n"
3298             . '<option value="19">19</option>' . "\n"
3299             . '<option value="20">20</option>' . "\n"
3300             . '<option value="21">21</option>' . "\n"
3301             . '<option value="22">22</option>' . "\n"
3302             . '<option value="23">23</option>' . "\n"
3303             . '<option value="24">24</option>' . "\n"
3304             . '<option value="25">25</option>' . "\n"
3305             . '<option value="26">26</option>' . "\n"
3306             . '<option value="27">27</option>' . "\n"
3307             . '<option value="28">28</option>' . "\n"
3308             . '<option value="29">29</option>' . "\n"
3309             . '<option value="30">30</option>' . "\n"
3310             . '<option value="31">31</option>' . "\n"
3311             . '</select>' . "\n"
3312             . ' &mdash; <select name="Person[birth(4i)]">' . "\n"
3313             . '<option value="00">00</option>' . "\n"
3314             . '<option value="01">01</option>' . "\n"
3315             . '<option value="02">02</option>' . "\n"
3316             . '<option value="03">03</option>' . "\n"
3317             . '<option value="04">04</option>' . "\n"
3318             . '<option value="05">05</option>' . "\n"
3319             . '<option value="06">06</option>' . "\n"
3320             . '<option value="07">07</option>' . "\n"
3321             . '<option value="08">08</option>' . "\n"
3322             . '<option value="09">09</option>' . "\n"
3323             . '<option value="10">10</option>' . "\n"
3324             . '<option value="11"  selected="selected">11</option>' . "\n"
3325             . '<option value="12">12</option>' . "\n"
3326             . '<option value="13">13</option>' . "\n"
3327             . '<option value="14">14</option>' . "\n"
3328             . '<option value="15">15</option>' . "\n"
3329             . '<option value="16">16</option>' . "\n"
3330             . '<option value="17">17</option>' . "\n"
3331             . '<option value="18">18</option>' . "\n"
3332             . '<option value="19">19</option>' . "\n"
3333             . '<option value="20">20</option>' . "\n"
3334             . '<option value="21">21</option>' . "\n"
3335             . '<option value="22">22</option>' . "\n"
3336             . '<option value="23">23</option>' . "\n"
3337             . '</select>' . "\n"
3338             . ' : <select name="Person[birth(5i)]">' . "\n"
3339             . '<option value="00">00</option>' . "\n"
3340             . '<option value="01">01</option>' . "\n"
3341             . '<option value="02">02</option>' . "\n"
3342             . '<option value="03">03</option>' . "\n"
3343             . '<option value="04">04</option>' . "\n"
3344             . '<option value="05">05</option>' . "\n"
3345             . '<option value="06">06</option>' . "\n"
3346             . '<option value="07">07</option>' . "\n"
3347             . '<option value="08">08</option>' . "\n"
3348             . '<option value="09">09</option>' . "\n"
3349             . '<option value="10">10</option>' . "\n"
3350             . '<option value="11">11</option>' . "\n"
3351             . '<option value="12">12</option>' . "\n"
3352             . '<option value="13">13</option>' . "\n"
3353             . '<option value="14">14</option>' . "\n"
3354             . '<option value="15">15</option>' . "\n"
3355             . '<option value="16">16</option>' . "\n"
3356             . '<option value="17">17</option>' . "\n"
3357             . '<option value="18">18</option>' . "\n"
3358             . '<option value="19">19</option>' . "\n"
3359             . '<option value="20">20</option>' . "\n"
3360             . '<option value="21">21</option>' . "\n"
3361             . '<option value="22">22</option>' . "\n"
3362             . '<option value="23">23</option>' . "\n"
3363             . '<option value="24">24</option>' . "\n"
3364             . '<option value="25">25</option>' . "\n"
3365             . '<option value="26">26</option>' . "\n"
3366             . '<option value="27">27</option>' . "\n"
3367             . '<option value="28">28</option>' . "\n"
3368             . '<option value="29">29</option>' . "\n"
3369             . '<option value="30"  selected="selected">30</option>' . "\n"
3370             . '<option value="31">31</option>' . "\n"
3371             . '<option value="32">32</option>' . "\n"
3372             . '<option value="33">33</option>' . "\n"
3373             . '<option value="34">34</option>' . "\n"
3374             . '<option value="35">35</option>' . "\n"
3375             . '<option value="36">36</option>' . "\n"
3376             . '<option value="37">37</option>' . "\n"
3377             . '<option value="38">38</option>' . "\n"
3378             . '<option value="39">39</option>' . "\n"
3379             . '<option value="40">40</option>' . "\n"
3380             . '<option value="41">41</option>' . "\n"
3381             . '<option value="42">42</option>' . "\n"
3382             . '<option value="43">43</option>' . "\n"
3383             . '<option value="44">44</option>' . "\n"
3384             . '<option value="45">45</option>' . "\n"
3385             . '<option value="46">46</option>' . "\n"
3386             . '<option value="47">47</option>' . "\n"
3387             . '<option value="48">48</option>' . "\n"
3388             . '<option value="49">49</option>' . "\n"
3389             . '<option value="50">50</option>' . "\n"
3390             . '<option value="51">51</option>' . "\n"
3391             . '<option value="52">52</option>' . "\n"
3392             . '<option value="53">53</option>' . "\n"
3393             . '<option value="54">54</option>' . "\n"
3394             . '<option value="55">55</option>' . "\n"
3395             . '<option value="56">56</option>' . "\n"
3396             . '<option value="57">57</option>' . "\n"
3397             . '<option value="58">58</option>' . "\n"
3398             . '<option value="59">59</option>' . "\n"
3399             . '</select>' . "\n",
3400             $dh->to_datetime_select_tag());
3401  
3402          //  Data from $_REQUEST should override ActiveRecord
3403          //  Use default format
3404          $_REQUEST['Person']['birth(1i)'] = '2000';
3405          $_REQUEST['Person']['birth(2i)'] = '09';
3406          $_REQUEST['Person']['birth(3i)'] = '17';
3407          $_REQUEST['Person']['birth(4i)'] = '09';
3408          $_REQUEST['Person']['birth(5i)'] = '42';
3409          $_REQUEST['Person']['birth(6i)'] = '53';
3410          $this->assertEquals('<select name="Person[birth(1i)]">' . "\n"
3411             . '<option value="1995">1995</option>' . "\n"
3412             . '<option value="1996">1996</option>' . "\n"
3413             . '<option value="1997">1997</option>' . "\n"
3414             . '<option value="1998">1998</option>' . "\n"
3415             . '<option value="1999">1999</option>' . "\n"
3416             . '<option value="2000"  selected="selected">2000</option>' . "\n"
3417             . '<option value="2001">2001</option>' . "\n"
3418             . '<option value="2002">2002</option>' . "\n"
3419             . '<option value="2003">2003</option>' . "\n"
3420             . '<option value="2004">2004</option>' . "\n"
3421             . '<option value="2005">2005</option>' . "\n"
3422             . '</select>' . "\n"
3423             . '<select name="Person[birth(2i)]">' . "\n"
3424             . '<option value="01">January</option>' . "\n"
3425             . '<option value="02">February</option>' . "\n"
3426             . '<option value="03">March</option>' . "\n"
3427             . '<option value="04">April</option>' . "\n"
3428             . '<option value="05">May</option>' . "\n"
3429             . '<option value="06">June</option>' . "\n"
3430             . '<option value="07">July</option>' . "\n"
3431             . '<option value="08">August</option>' . "\n"
3432             . '<option value="09" selected="selected">September</option>' . "\n"
3433             . '<option value="10">October</option>' . "\n"
3434             . '<option value="11">November</option>' . "\n"
3435             . '<option value="12">December</option>' . "\n"
3436             . '</select>' . "\n"
3437             . '<select name="Person[birth(3i)]">' . "\n"
3438             . '<option value="01">01</option>' . "\n"
3439             . '<option value="02">02</option>' . "\n"
3440             . '<option value="03">03</option>' . "\n"
3441             . '<option value="04">04</option>' . "\n"
3442             . '<option value="05">05</option>' . "\n"
3443             . '<option value="06">06</option>' . "\n"
3444             . '<option value="07">07</option>' . "\n"
3445             . '<option value="08">08</option>' . "\n"
3446             . '<option value="09">09</option>' . "\n"
3447             . '<option value="10">10</option>' . "\n"
3448             . '<option value="11">11</option>' . "\n"
3449             . '<option value="12">12</option>' . "\n"
3450             . '<option value="13">13</option>' . "\n"
3451             . '<option value="14">14</option>' . "\n"
3452             . '<option value="15">15</option>' . "\n"
3453             . '<option value="16">16</option>' . "\n"
3454             . '<option value="17"  selected="selected">17</option>' . "\n"
3455             . '<option value="18">18</option>' . "\n"
3456             . '<option value="19">19</option>' . "\n"
3457             . '<option value="20">20</option>' . "\n"
3458             . '<option value="21">21</option>' . "\n"
3459             . '<option value="22">22</option>' . "\n"
3460             . '<option value="23">23</option>' . "\n"
3461             . '<option value="24">24</option>' . "\n"
3462             . '<option value="25">25</option>' . "\n"
3463             . '<option value="26">26</option>' . "\n"
3464             . '<option value="27">27</option>' . "\n"
3465             . '<option value="28">28</option>' . "\n"
3466             . '<option value="29">29</option>' . "\n"
3467             . '<option value="30">30</option>' . "\n"
3468             . '<option value="31">31</option>' . "\n"
3469             . '</select>' . "\n"
3470             . ' &mdash; <select name="Person[birth(4i)]">' . "\n"
3471             . '<option value="00">00</option>' . "\n"
3472             . '<option value="01">01</option>' . "\n"
3473             . '<option value="02">02</option>' . "\n"
3474             . '<option value="03">03</option>' . "\n"
3475             . '<option value="04">04</option>' . "\n"
3476             . '<option value="05">05</option>' . "\n"
3477             . '<option value="06">06</option>' . "\n"
3478             . '<option value="07">07</option>' . "\n"
3479             . '<option value="08">08</option>' . "\n"
3480             . '<option value="09"  selected="selected">09</option>' . "\n"
3481             . '<option value="10">10</option>' . "\n"
3482             . '<option value="11">11</option>' . "\n"
3483             . '<option value="12">12</option>' . "\n"
3484             . '<option value="13">13</option>' . "\n"
3485             . '<option value="14">14</option>' . "\n"
3486             . '<option value="15">15</option>' . "\n"
3487             . '<option value="16">16</option>' . "\n"
3488             . '<option value="17">17</option>' . "\n"
3489             . '<option value="18">18</option>' . "\n"
3490             . '<option value="19">19</option>' . "\n"
3491             . '<option value="20">20</option>' . "\n"
3492             . '<option value="21">21</option>' . "\n"
3493             . '<option value="22">22</option>' . "\n"
3494             . '<option value="23">23</option>' . "\n"
3495             . '</select>' . "\n"
3496             . ' : <select name="Person[birth(5i)]">' . "\n"
3497             . '<option value="00">00</option>' . "\n"
3498             . '<option value="01">01</option>' . "\n"
3499             . '<option value="02">02</option>' . "\n"
3500             . '<option value="03">03</option>' . "\n"
3501             . '<option value="04">04</option>' . "\n"
3502             . '<option value="05">05</option>' . "\n"
3503             . '<option value="06">06</option>' . "\n"
3504             . '<option value="07">07</option>' . "\n"
3505             . '<option value="08">08</option>' . "\n"
3506             . '<option value="09">09</option>' . "\n"
3507             . '<option value="10">10</option>' . "\n"
3508             . '<option value="11">11</option>' . "\n"
3509             . '<option value="12">12</option>' . "\n"
3510             . '<option value="13">13</option>' . "\n"
3511             . '<option value="14">14</option>' . "\n"
3512             . '<option value="15">15</option>' . "\n"
3513             . '<option value="16">16</option>' . "\n"
3514             . '<option value="17">17</option>' . "\n"
3515             . '<option value="18">18</option>' . "\n"
3516             . '<option value="19">19</option>' . "\n"
3517             . '<option value="20">20</option>' . "\n"
3518             . '<option value="21">21</option>' . "\n"
3519             . '<option value="22">22</option>' . "\n"
3520             . '<option value="23">23</option>' . "\n"
3521             . '<option value="24">24</option>' . "\n"
3522             . '<option value="25">25</option>' . "\n"
3523             . '<option value="26">26</option>' . "\n"
3524             . '<option value="27">27</option>' . "\n"
3525             . '<option value="28">28</option>' . "\n"
3526             . '<option value="29">29</option>' . "\n"
3527             . '<option value="30">30</option>' . "\n"
3528             . '<option value="31">31</option>' . "\n"
3529             . '<option value="32">32</option>' . "\n"
3530             . '<option value="33">33</option>' . "\n"
3531             . '<option value="34">34</option>' . "\n"
3532             . '<option value="35">35</option>' . "\n"
3533             . '<option value="36">36</option>' . "\n"
3534             . '<option value="37">37</option>' . "\n"
3535             . '<option value="38">38</option>' . "\n"
3536             . '<option value="39">39</option>' . "\n"
3537             . '<option value="40">40</option>' . "\n"
3538             . '<option value="41">41</option>' . "\n"
3539             . '<option value="42"  selected="selected">42</option>' . "\n"
3540             . '<option value="43">43</option>' . "\n"
3541             . '<option value="44">44</option>' . "\n"
3542             . '<option value="45">45</option>' . "\n"
3543             . '<option value="46">46</option>' . "\n"
3544             . '<option value="47">47</option>' . "\n"
3545             . '<option value="48">48</option>' . "\n"
3546             . '<option value="49">49</option>' . "\n"
3547             . '<option value="50">50</option>' . "\n"
3548             . '<option value="51">51</option>' . "\n"
3549             . '<option value="52">52</option>' . "\n"
3550             . '<option value="53">53</option>' . "\n"
3551             . '<option value="54">54</option>' . "\n"
3552             . '<option value="55">55</option>' . "\n"
3553             . '<option value="56">56</option>' . "\n"
3554             . '<option value="57">57</option>' . "\n"
3555             . '<option value="58">58</option>' . "\n"
3556             . '<option value="59">59</option>' . "\n"
3557             . '</select>' . "\n",
3558             $dh->to_datetime_select_tag());
3559  
3560          //  As above but enable seconds
3561          $this->assertEquals('<select name="Person[birth(1i)]">' . "\n"
3562             . '<option value="1995">1995</option>' . "\n"
3563             . '<option value="1996">1996</option>' . "\n"
3564             . '<option value="1997">1997</option>' . "\n"
3565             . '<option value="1998">1998</option>' . "\n"
3566             . '<option value="1999">1999</option>' . "\n"
3567             . '<option value="2000"  selected="selected">2000</option>' . "\n"
3568             . '<option value="2001">2001</option>' . "\n"
3569             . '<option value="2002">2002</option>' . "\n"
3570             . '<option value="2003">2003</option>' . "\n"
3571             . '<option value="2004">2004</option>' . "\n"
3572             . '<option value="2005">2005</option>' . "\n"
3573             . '</select>' . "\n"
3574             . '<select name="Person[birth(2i)]">' . "\n"
3575             . '<option value="01">January</option>' . "\n"
3576             . '<option value="02">February</option>' . "\n"
3577             . '<option value="03">March</option>' . "\n"
3578             . '<option value="04">April</option>' . "\n"
3579             . '<option value="05">May</option>' . "\n"
3580             . '<option value="06">June</option>' . "\n"
3581             . '<option value="07">July</option>' . "\n"
3582             . '<option value="08">August</option>' . "\n"
3583             . '<option value="09" selected="selected">September</option>' . "\n"
3584             . '<option value="10">October</option>' . "\n"
3585             . '<option value="11">November</option>' . "\n"
3586             . '<option value="12">December</option>' . "\n"
3587             . '</select>' . "\n"
3588             . '<select name="Person[birth(3i)]">' . "\n"
3589             . '<option value="01">01</option>' . "\n"
3590             . '<option value="02">02</option>' . "\n"
3591             . '<option value="03">03</option>' . "\n"
3592             . '<option value="04">04</option>' . "\n"
3593             . '<option value="05">05</option>' . "\n"
3594             . '<option value="06">06</option>' . "\n"
3595             . '<option value="07">07</option>' . "\n"
3596             . '<option value="08">08</option>' . "\n"
3597             . '<option value="09">09</option>' . "\n"
3598             . '<option value="10">10</option>' . "\n"
3599             . '<option value="11">11</option>' . "\n"
3600             . '<option value="12">12</option>' . "\n"
3601             . '<option value="13">13</option>' . "\n"
3602             . '<option value="14">14</option>' . "\n"
3603             . '<option value="15">15</option>' . "\n"
3604             . '<option value="16">16</option>' . "\n"
3605             . '<option value="17"  selected="selected">17</option>' . "\n"
3606             . '<option value="18">18</option>' . "\n"
3607             . '<option value="19">19</option>' . "\n"
3608             . '<option value="20">20</option>' . "\n"
3609             . '<option value="21">21</option>' . "\n"
3610             . '<option value="22">22</option>' . "\n"
3611             . '<option value="23">23</option>' . "\n"
3612             . '<option value="24">24</option>' . "\n"
3613             . '<option value="25">25</option>' . "\n"
3614             . '<option value="26">26</option>' . "\n"
3615             . '<option value="27">27</option>' . "\n"
3616             . '<option value="28">28</option>' . "\n"
3617             . '<option value="29">29</option>' . "\n"
3618             . '<option value="30">30</option>' . "\n"
3619             . '<option value="31">31</option>' . "\n"
3620             . '</select>' . "\n"
3621             . ' &mdash; <select name="Person[birth(4i)]">' . "\n"
3622             . '<option value="00">00</option>' . "\n"
3623             . '<option value="01">01</option>' . "\n"
3624             . '<option value="02">02</option>' . "\n"
3625             . '<option value="03">03</option>' . "\n"
3626             . '<option value="04">04</option>' . "\n"
3627             . '<option value="05">05</option>' . "\n"
3628             . '<option value="06">06</option>' . "\n"
3629             . '<option value="07">07</option>' . "\n"
3630             . '<option value="08">08</option>' . "\n"
3631             . '<option value="09"  selected="selected">09</option>' . "\n"
3632             . '<option value="10">10</option>' . "\n"
3633             . '<option value="11">11</option>' . "\n"
3634             . '<option value="12">12</option>' . "\n"
3635             . '<option value="13">13</option>' . "\n"
3636             . '<option value="14">14</option>' . "\n"
3637             . '<option value="15">15</option>' . "\n"
3638             . '<option value="16">16</option>' . "\n"
3639             . '<option value="17">17</option>' . "\n"
3640             . '<option value="18">18</option>' . "\n"
3641             . '<option value="19">19</option>' . "\n"
3642             . '<option value="20">20</option>' . "\n"
3643             . '<option value="21">21</option>' . "\n"
3644             . '<option value="22">22</option>' . "\n"
3645             . '<option value="23">23</option>' . "\n"
3646             . '</select>' . "\n"
3647             . ' : <select name="Person[birth(5i)]">' . "\n"
3648             . '<option value="00">00</option>' . "\n"
3649             . '<option value="01">01</option>' . "\n"
3650             . '<option value="02">02</option>' . "\n"
3651             . '<option value="03">03</option>' . "\n"
3652             . '<option value="04">04</option>' . "\n"
3653             . '<option value="05">05</option>' . "\n"
3654             . '<option value="06">06</option>' . "\n"
3655             . '<option value="07">07</option>' . "\n"
3656             . '<option value="08">08</option>' . "\n"
3657             . '<option value="09">09</option>' . "\n"
3658             . '<option value="10">10</option>' . "\n"
3659             . '<option value="11">11</option>' . "\n"
3660             . '<option value="12">12</option>' . "\n"
3661             . '<option value="13">13</option>' . "\n"
3662             . '<option value="14">14</option>' . "\n"
3663             . '<option value="15">15</option>' . "\n"
3664             . '<option value="16">16</option>' . "\n"
3665             . '<option value="17">17</option>' . "\n"
3666             . '<option value="18">18</option>' . "\n"
3667             . '<option value="19">19</option>' . "\n"
3668             . '<option value="20">20</option>' . "\n"
3669             . '<option value="21">21</option>' . "\n"
3670             . '<option value="22">22</option>' . "\n"
3671             . '<option value="23">23</option>' . "\n"
3672             . '<option value="24">24</option>' . "\n"
3673             . '<option value="25">25</option>' . "\n"
3674             . '<option value="26">26</option>' . "\n"
3675             . '<option value="27">27</option>' . "\n"
3676             . '<option value="28">28</option>' . "\n"
3677             . '<option value="29">29</option>' . "\n"
3678             . '<option value="30">30</option>' . "\n"
3679             . '<option value="31">31</option>' . "\n"
3680             . '<option value="32">32</option>' . "\n"
3681             . '<option value="33">33</option>' . "\n"
3682             . '<option value="34">34</option>' . "\n"
3683             . '<option value="35">35</option>' . "\n"
3684             . '<option value="36">36</option>' . "\n"
3685             . '<option value="37">37</option>' . "\n"
3686             . '<option value="38">38</option>' . "\n"
3687             . '<option value="39">39</option>' . "\n"
3688             . '<option value="40">40</option>' . "\n"
3689             . '<option value="41">41</option>' . "\n"
3690             . '<option value="42"  selected="selected">42</option>' . "\n"
3691             . '<option value="43">43</option>' . "\n"
3692             . '<option value="44">44</option>' . "\n"
3693             . '<option value="45">45</option>' . "\n"
3694             . '<option value="46">46</option>' . "\n"
3695             . '<option value="47">47</option>' . "\n"
3696             . '<option value="48">48</option>' . "\n"
3697             . '<option value="49">49</option>' . "\n"
3698             . '<option value="50">50</option>' . "\n"
3699             . '<option value="51">51</option>' . "\n"
3700             . '<option value="52">52</option>' . "\n"
3701             . '<option value="53">53</option>' . "\n"
3702             . '<option value="54">54</option>' . "\n"
3703             . '<option value="55">55</option>' . "\n"
3704             . '<option value="56">56</option>' . "\n"
3705             . '<option value="57">57</option>' . "\n"
3706             . '<option value="58">58</option>' . "\n"
3707             . '<option value="59">59</option>' . "\n"
3708             . '</select>' . "\n"
3709             . ' : <select name="Person[birth(6i)]">' . "\n"
3710             . '<option value="00">00</option>' . "\n"
3711             . '<option value="01">01</option>' . "\n"
3712             . '<option value="02">02</option>' . "\n"
3713             . '<option value="03">03</option>' . "\n"
3714             . '<option value="04">04</option>' . "\n"
3715             . '<option value="05">05</option>' . "\n"
3716             . '<option value="06">06</option>' . "\n"
3717             . '<option value="07">07</option>' . "\n"
3718             . '<option value="08">08</option>' . "\n"
3719             . '<option value="09">09</option>' . "\n"
3720             . '<option value="10">10</option>' . "\n"
3721             . '<option value="11">11</option>' . "\n"
3722             . '<option value="12">12</option>' . "\n"
3723             . '<option value="13">13</option>' . "\n"
3724             . '<option value="14">14</option>' . "\n"
3725             . '<option value="15">15</option>' . "\n"
3726             . '<option value="16">16</option>' . "\n"
3727             . '<option value="17">17</option>' . "\n"
3728             . '<option value="18">18</option>' . "\n"
3729             . '<option value="19">19</option>' . "\n"
3730             . '<option value="20">20</option>' . "\n"
3731             . '<option value="21">21</option>' . "\n"
3732             . '<option value="22">22</option>' . "\n"
3733             . '<option value="23">23</option>' . "\n"
3734             . '<option value="24">24</option>' . "\n"
3735             . '<option value="25">25</option>' . "\n"
3736             . '<option value="26">26</option>' . "\n"
3737             . '<option value="27">27</option>' . "\n"
3738             . '<option value="28">28</option>' . "\n"
3739             . '<option value="29">29</option>' . "\n"
3740             . '<option value="30">30</option>' . "\n"
3741             . '<option value="31">31</option>' . "\n"
3742             . '<option value="32">32</option>' . "\n"
3743             . '<option value="33">33</option>' . "\n"
3744             . '<option value="34">34</option>' . "\n"
3745             . '<option value="35">35</option>' . "\n"
3746             . '<option value="36">36</option>' . "\n"
3747             . '<option value="37">37</option>' . "\n"
3748             . '<option value="38">38</option>' . "\n"
3749             . '<option value="39">39</option>' . "\n"
3750             . '<option value="40">40</option>' . "\n"
3751             . '<option value="41">41</option>' . "\n"
3752             . '<option value="42">42</option>' . "\n"
3753             . '<option value="43">43</option>' . "\n"
3754             . '<option value="44">44</option>' . "\n"
3755             . '<option value="45">45</option>' . "\n"
3756             . '<option value="46">46</option>' . "\n"
3757             . '<option value="47">47</option>' . "\n"
3758             . '<option value="48">48</option>' . "\n"
3759             . '<option value="49">49</option>' . "\n"
3760             . '<option value="50">50</option>' . "\n"
3761             . '<option value="51">51</option>' . "\n"
3762             . '<option value="52">52</option>' . "\n"
3763             . '<option value="53"  selected="selected">53</option>' . "\n"
3764             . '<option value="54">54</option>' . "\n"
3765             . '<option value="55">55</option>' . "\n"
3766             . '<option value="56">56</option>' . "\n"
3767             . '<option value="57">57</option>' . "\n"
3768             . '<option value="58">58</option>' . "\n"
3769             . '<option value="59">59</option>' . "\n"
3770             . '</select>' . "\n",
3771             $dh->to_datetime_select_tag(array('discard_second' => false)));
3772      }
3773  
3774      /**
3775       *  Test to_expiration_date_select_tag() method
3776       *
3777       *  Test the {@link DateHelper::to_expiration_date_select_tag()} method
3778       */
3779      public function testTo_expiration_date_select_tag_method() {
3780          $dh = new DateHelper('License', 'expiration_date');
3781          $_REQUEST['License']['expiration_date(1i)'] = date('Y');
3782          $_REQUEST['License']['expiration_date(2i)'] = '08';
3783  
3784          //  Test expiration date of August this year
3785          $this->assertContains('<option value="'.date('Y').
3786                                '"  selected="selected"',
3787                                $dh->to_expiration_date_select_tag());
3788          $this->assertContains('<option value="'.(date('Y')+7).'"',
3789                                $dh->to_expiration_date_select_tag());
3790          $this->assertContains('<option value="08" selected="selected">'
3791                                . '8</option>',
3792                                $dh->to_expiration_date_select_tag());
3793      }
3794  
3795      /**
3796       *  Test expiration_date_select() function
3797       *
3798       *  Test the {@link expiration_date_select()} function in procedural
3799       *  file {@link date_helper.php}
3800       */
3801      public function testExpiration_date_select_function() {
3802  
3803          //  Test expiration date of August this year
3804          $_REQUEST['License']['expiration_date(1i)'] = date('Y');
3805          $_REQUEST['License']['expiration_date(2i)'] = '08';
3806          $this->assertContains('<option value="'.date('Y').
3807                                '"  selected="selected"',
3808                         expiration_date_select('License','expiration_date'));
3809          $this->assertContains('<option value="'.(date('Y')+7).'"',
3810                         expiration_date_select('License','expiration_date'));
3811          $this->assertContains('<option value="08" selected="selected">'
3812                                . '8</option>',
3813                         expiration_date_select('License','expiration_date'));
3814      }
3815  
3816  }
3817  
3818  // Call DateHelperTest::main() if this source file is executed directly.
3819  if (PHPUnit2_MAIN_METHOD == "DateHelperTest::main") {
3820      DateHelperTest::main();
3821  }
3822  
3823  // -- set Emacs parameters --
3824  // Local variables:
3825  // tab-width: 4
3826  // c-basic-offset: 4
3827  // c-hanging-comment-ender-p: nil
3828  // indent-tabs-mode: nil
3829  // End:
3830  ?>


Généré le : Sun Feb 25 20:04:38 2007 par Balluche grâce à PHPXref 0.7