Annotation of embedaddon/php/ext/date/tests/examine_diff.inc, revision 1.1

1.1     ! misho       1: <?php
        !             2: 
        !             3: /**
        !             4:  * Helper for the DateTime diff/days/math tests
        !             5:  *
        !             6:  * @author Daniel Convissor <danielc@analysisandsolutions.com>
        !             7:  */
        !             8: 
        !             9: /**#@+
        !            10:  * Which test segments should be displayed?
        !            11:  */
        !            12: define('PHPT_DATETIME_SHOW_DIFF', 1);
        !            13: define('PHPT_DATETIME_SHOW_DAYS', 2);
        !            14: define('PHPT_DATETIME_SHOW_ADD', 3);
        !            15: define('PHPT_DATETIME_SHOW_SUB', 4);
        !            16: /**#@-*/
        !            17: 
        !            18: /**
        !            19:  * Provides a consistent interface for executing date diff/add/sub tests
        !            20:  *
        !            21:  * @param string|DateTime $end_date  the end date in YYYY-MM-DD format
        !            22:  *                        (can include time HH:MM:SS) or a DateTime object
        !            23:  * @param string|DateTime $start_date  the start date in YYYY-MM-DD format
        !            24:  *                        (can include time HH:MM:SS) or a DateTime object
        !            25:  * @param string $expect_spec  the expected result of the tests, in the
        !            26:  *               special interval specification used for this test suite.
        !            27:  *               This spec includes a "+" or "-" after the "P" in order to
        !            28:  *               indicate which direction to go.
        !            29:  * @param int $expect_days  the number of days to compare with the
        !            30:  *            interval's "days" property
        !            31:  * @param bool $absolute  should the result always be a positive number?
        !            32:  *
        !            33:  * @return void
        !            34:  */
        !            35: function examine_diff($end_date, $start_date, $expect_spec, $expect_days, $absolute = false) {
        !            36:        if (is_string($start_date)) {
        !            37:                $start = new DateTime($start_date);
        !            38:        } else {
        !            39:                $start = $start_date;
        !            40:        }
        !            41:        $start_date = $start->format('Y-m-d H:i:s T');
        !            42: 
        !            43:        if (is_string($end_date)) {
        !            44:                $end = new DateTime($end_date);
        !            45:        } else {
        !            46:                $end = $end_date;
        !            47:        }
        !            48:        $end_date = $end->format('Y-m-d H:i:s T');
        !            49: 
        !            50:        $expect_interval = new DateInterval('P' . substr($expect_spec, 2));
        !            51:        if (substr($expect_spec, 1, 1) == '-') {
        !            52:                $expect_interval->invert = true;
        !            53:        }
        !            54: 
        !            55:        if (PHPT_DATETIME_SHOW == PHPT_DATETIME_SHOW_DIFF) {
        !            56:                $result_interval = $start->diff($end, $absolute);
        !            57:                $result_spec = $result_interval->format('P%R%yY%mM%dDT%hH%iM%sS');
        !            58:                echo "DIFF: $end_date - $start_date = **$result_spec**\n";
        !            59:                // echo "DIFF: $end_date - $start_date = **$expect_spec**\n";
        !            60:        }
        !            61:        if (PHPT_DATETIME_SHOW == PHPT_DATETIME_SHOW_DAYS) {
        !            62:                $result_interval = $start->diff($end, $absolute);
        !            63:                $result_days = $result_interval->format('%a');
        !            64:                echo "DAYS: **$result_days**\n";
        !            65:                // echo "DAYS: **$expect_days**\n";
        !            66:        }
        !            67:        if (PHPT_DATETIME_SHOW == PHPT_DATETIME_SHOW_ADD) {
        !            68:                $start->add($expect_interval);
        !            69:                $result_end_date = $start->format('Y-m-d H:i:s T');
        !            70:                echo "ADD: $start_date + $expect_spec = **$result_end_date**\n";
        !            71:                // echo "ADD: $start_date + $expect_spec = **$end_date**\n";
        !            72:        }
        !            73:        if (PHPT_DATETIME_SHOW == PHPT_DATETIME_SHOW_SUB) {
        !            74:                $end->sub($expect_interval);
        !            75:                $result_start_date = $end->format('Y-m-d H:i:s T');
        !            76:                echo "SUB: $end_date - $expect_spec = **$result_start_date**\n";
        !            77:                // echo "SUB: $end_date - $expect_spec = **$start_date**\n";
        !            78:        }
        !            79: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>