PHPonTraxTest
[ class tree: PHPonTraxTest ] [ index: PHPonTraxTest ] [ all elements ]

Source for file DateHelperTest.php

Documentation is available at DateHelperTest.php

  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.                         &n