Make WordPress Core


Ignore:
Timestamp:
01/08/2019 07:55:31 PM (6 years ago)
Author:
adamsilverstein
Message:

Media: improve the human_readable_duration function and tests.

Improve the human_readable_duration added in #39667:

  • Remove upper limit.
  • More resilient handling: remove negative prefix, trim.
  • Correct @since to 5.1.0.
  • Adds more test cases and improve inline docs.

Props birgire.
Fixes #39667.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/functions.php

    r44478 r44481  
    15801580
    15811581    /**
    1582      * Test the human_readable_duration function.
     1582     * Test human_readable_duration().
    15831583     *
    15841584     * @ticket 39667
    1585      * @dataProvider _datahuman_readable_duration()
     1585     * @dataProvider data_test_human_readable_duration
    15861586     *
    1587      * @param $input
    1588      * @param $expected
    1589      */
    1590     public function test_duration_format( $input, $expected ) {
     1587     * @param string $input    Duration.
     1588     * @param string $expected Expected human readable duration.
     1589     */
     1590    public function test_human_readable_duration( $input, $expected ) {
    15911591        $this->assertSame( $expected, human_readable_duration( $input ) );
    15921592    }
    15931593
    1594     public function _datahuman_readable_duration() {
     1594    /**
     1595     * Dataprovider for test_duration_format().
     1596     *
     1597     * @return array {
     1598     *     @type array {
     1599     *         @type string $input  Duration.
     1600     *         @type string $expect Expected human readable duration.
     1601     *     }
     1602     * }
     1603     */
     1604    public function data_test_human_readable_duration() {
    15951605        return array(
     1606            // Valid ii:ss cases.
     1607            array( '0:0', '0 minutes, 0 seconds' ),
     1608            array( '00:00', '0 minutes, 0 seconds' ),
     1609            array( '0:5', '0 minutes, 5 seconds' ),
     1610            array( '0:05', '0 minutes, 5 seconds' ),
     1611            array( '01:01', '1 minute, 1 second' ),
     1612            array( '30:00', '30 minutes, 0 seconds' ),
     1613            array( ' 30:00 ', '30 minutes, 0 seconds' ),
     1614            // Valid HH:ii:ss cases.
     1615            array( '0:0:0', '0 hours, 0 minutes, 0 seconds' ),
     1616            array( '00:00:00', '0 hours, 0 minutes, 0 seconds' ),
     1617            array( '00:30:34', '0 hours, 30 minutes, 34 seconds' ),
     1618            array( '01:01:01', '1 hour, 1 minute, 1 second' ),
     1619            array( '1:02:00', '1 hour, 2 minutes, 0 seconds' ),
     1620            array( '10:30:34', '10 hours, 30 minutes, 34 seconds' ),
     1621            array( '1234567890:59:59', '1234567890 hours, 59 minutes, 59 seconds' ),
     1622            // Valid ii:ss cases with negative sign.
     1623            array( '-00:00', '0 minutes, 0 seconds' ),
     1624            array( '-3:00', '3 minutes, 0 seconds' ),
     1625            array( '-03:00', '3 minutes, 0 seconds' ),
     1626            array( '-30:00', '30 minutes, 0 seconds' ),
     1627            // Valid HH:ii:ss cases with negative sign.
     1628            array( '-00:00:00', '0 hours, 0 minutes, 0 seconds' ),
     1629            array( '-1:02:00', '1 hour, 2 minutes, 0 seconds' ),
     1630            // Invalid cases.
     1631            array( null, false ),
     1632            array( '', false ),
     1633            array( ':', false ),
     1634            array( '::', false ),
    15961635            array( array(), false ),
    1597             array( '30:00', '30 minutes, 0 seconds' ),
    15981636            array( 'Batman Begins !', false ),
    15991637            array( '', false ),
     
    16031641            array( 1, false ),
    16041642            array( '00', false ),
    1605             array( '00:00', '0 minutes, 0 seconds' ),
    1606             array( '00:00:00', '0 hours, 0 minutes, 0 seconds' ),
    1607             array( '10:30:34', '10 hours, 30 minutes, 34 seconds' ),
    1608             array( '00:30:34', '0 hours, 30 minutes, 34 seconds' ),
    1609             array( 'MM:30:00', false ),
    1610             array( '30:MM', false ),
    1611             array( 'MM:00', false ),
    1612             array( 'MM:MM', false ),
    1613             array( '01:01', '1 minute, 1 second' ),
    1614             array( '01:01:01', '1 hour, 1 minute, 1 second' ),
    1615             array( '0:05', '5 seconds' ),
    1616             array( '1:02:00', '1 hour, 2 minutes, 0 seconds' ),
     1643            array( '30:-10', false ),
     1644            array( ':30:00', false ), // Missing HH.
     1645            array( 'MM:30:00', false ), // Invalid HH.
     1646            array( '30:MM:00', false ), // Invalid ii.
     1647            array( '30:30:MM', false ), // Invalid ss.
     1648            array( '30:MM', false ), // Invalid ss.
     1649            array( 'MM:00', false ), // Invalid ii.
     1650            array( 'MM:MM', false ), // Invalid ii and ss.
     1651            array( '10 :30', false ), // Containing a space.
     1652            array( '59:61', false ), // Out of bound.
     1653            array( '61:59', false ), // Out of bound.
     1654            array( '3:59:61', false ), // Out of bound.
     1655            array( '03:61:59', false ), // Out of bound.
    16171656        );
    16181657    }
Note: See TracChangeset for help on using the changeset viewer.