Make WordPress Core

Changeset 51666


Ignore:
Timestamp:
08/26/2021 04:20:57 PM (5 years ago)
Author:
SergeyBiryukov
Message:

Tests: Move wp_list_filter() tests to their own file.

This matches the name of the function being tested.

Follow-up to [38928], [51663-51665].

See #53363, #53987.

Location:
trunk/tests/phpunit/tests/functions
Files:
1 edited
1 copied

Legend:

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

    r51664 r51666  
    22
    33/**
     4 * Test wp_list_filter().
     5 *
    46 * @group functions.php
     7 * @covers ::wp_list_filter
    58 */
    6 class Tests_Functions_wpListUtil extends WP_UnitTestCase {
    7 
    8         public function data_test_wp_list_filter() {
    9                 return array(
    10                         'string instead of array'  => array(
    11                                 'foo',
    12                                 array(),
    13                                 'AND',
    14                                 array(),
    15                         ),
    16                         'object instead of array'  => array(
    17                                 (object) array( 'foo' ),
    18                                 array(),
    19                                 'AND',
    20                                 array(),
    21                         ),
    22                         'empty args'               => array(
    23                                 array( 'foo', 'bar' ),
    24                                 array(),
    25                                 'AND',
    26                                 array( 'foo', 'bar' ),
    27                         ),
    28                         'invalid operator'         => array(
    29                                 array(
    30                                         (object) array( 'foo' => 'bar' ),
    31                                         (object) array( 'foo' => 'baz' ),
    32                                 ),
    33                                 array( 'foo' => 'bar' ),
    34                                 'XOR',
    35                                 array(),
    36                         ),
    37                         'single argument to match' => array(
    38                                 array(
    39                                         (object) array(
    40                                                 'foo' => 'bar',
    41                                                 'bar' => 'baz',
    42                                                 'abc' => 'xyz',
    43                                                 'key' => 'foo',
    44                                         ),
    45                                         (object) array(
    46                                                 'foo'   => 'foo',
    47                                                 '123'   => '456',
    48                                                 'lorem' => 'ipsum',
    49                                                 'key'   => 'bar',
    50                                         ),
    51                                         (object) array(
    52                                                 'foo' => 'baz',
    53                                                 'key' => 'value',
    54                                         ),
    55                                         (object) array(
    56                                                 'foo' => 'bar',
    57                                                 'key' => 'value',
    58                                         ),
    59                                 ),
    60                                 array( 'foo' => 'bar' ),
    61                                 'AND',
    62                                 array(
    63                                         0 => (object) array(
    64                                                 'foo' => 'bar',
    65                                                 'bar' => 'baz',
    66                                                 'abc' => 'xyz',
    67                                                 'key' => 'foo',
    68                                         ),
    69                                         3 => (object) array(
    70                                                 'foo' => 'bar',
    71                                                 'key' => 'value',
    72                                         ),
    73                                 ),
    74                         ),
    75                         'all must match'           => array(
    76                                 array(
    77                                         (object) array(
    78                                                 'foo' => 'bar',
    79                                                 'bar' => 'baz',
    80                                                 'abc' => 'xyz',
    81                                                 'key' => 'foo',
    82                                         ),
    83                                         (object) array(
    84                                                 'foo'   => 'foo',
    85                                                 '123'   => '456',
    86                                                 'lorem' => 'ipsum',
    87                                                 'key'   => 'bar',
    88                                         ),
    89                                         (object) array(
    90                                                 'foo' => 'baz',
    91                                                 'key' => 'value',
    92                                                 'bar' => 'baz',
    93                                         ),
    94                                         (object) array(
    95                                                 'foo' => 'bar',
    96                                                 'key' => 'value',
    97                                         ),
    98                                 ),
    99                                 array(
    100                                         'foo' => 'bar',
    101                                         'bar' => 'baz',
    102                                 ),
    103                                 'AND',
    104                                 array(
    105                                         0 => (object) array(
    106                                                 'foo' => 'bar',
    107                                                 'bar' => 'baz',
    108                                                 'abc' => 'xyz',
    109                                                 'key' => 'foo',
    110                                         ),
    111                                 ),
    112                         ),
    113                         'any must match'           => array(
    114                                 array(
    115                                         (object) array(
    116                                                 'foo' => 'bar',
    117                                                 'bar' => 'baz',
    118                                                 'abc' => 'xyz',
    119                                                 'key' => 'foo',
    120                                         ),
    121                                         (object) array(
    122                                                 'foo'   => 'foo',
    123                                                 '123'   => '456',
    124                                                 'lorem' => 'ipsum',
    125                                                 'key'   => 'bar',
    126                                         ),
    127                                         (object) array(
    128                                                 'foo' => 'baz',
    129                                                 'key' => 'value',
    130                                                 'bar' => 'baz',
    131                                         ),
    132                                         (object) array(
    133                                                 'foo' => 'bar',
    134                                                 'key' => 'value',
    135                                         ),
    136                                 ),
    137                                 array(
    138                                         'key' => 'value',
    139                                         'bar' => 'baz',
    140                                 ),
    141                                 'OR',
    142                                 array(
    143                                         0 => (object) array(
    144                                                 'foo' => 'bar',
    145                                                 'bar' => 'baz',
    146                                                 'abc' => 'xyz',
    147                                                 'key' => 'foo',
    148                                         ),
    149                                         2 => (object) array(
    150                                                 'foo' => 'baz',
    151                                                 'key' => 'value',
    152                                                 'bar' => 'baz',
    153                                         ),
    154                                         3 => (object) array(
    155                                                 'foo' => 'bar',
    156                                                 'key' => 'value',
    157                                         ),
    158                                 ),
    159                         ),
    160                         'none must match'          => array(
    161                                 array(
    162                                         (object) array(
    163                                                 'foo' => 'bar',
    164                                                 'bar' => 'baz',
    165                                                 'abc' => 'xyz',
    166                                                 'key' => 'foo',
    167                                         ),
    168                                         (object) array(
    169                                                 'foo'   => 'foo',
    170                                                 '123'   => '456',
    171                                                 'lorem' => 'ipsum',
    172                                                 'key'   => 'bar',
    173                                         ),
    174                                         (object) array(
    175                                                 'foo' => 'baz',
    176                                                 'key' => 'value',
    177                                         ),
    178                                         (object) array(
    179                                                 'foo' => 'bar',
    180                                                 'key' => 'value',
    181                                         ),
    182                                 ),
    183                                 array(
    184                                         'key' => 'value',
    185                                         'bar' => 'baz',
    186                                 ),
    187                                 'NOT',
    188                                 array(
    189                                         1 => (object) array(
    190                                                 'foo'   => 'foo',
    191                                                 '123'   => '456',
    192                                                 'lorem' => 'ipsum',
    193                                                 'key'   => 'bar',
    194                                         ),
    195                                 ),
    196                         ),
    197                 );
    198         }
     9class Tests_Functions_wpListFilter extends WP_UnitTestCase {
    19910
    20011        /**
    20112         * @dataProvider data_test_wp_list_filter
    202          *
    203          * @covers ::wp_list_filter
    20413         *
    20514         * @param array  $list     An array of objects to filter.
     
    21322        }
    21423
    215         public function data_test_wp_list_sort() {
     24        public function data_test_wp_list_filter() {
    21625                return array(
    217                         'single orderby ascending'        => array(
    218                                 array(
    219                                         array(
    220                                                 'foo' => 'bar',
    221                                                 'bar' => 'baz',
    222                                                 'key' => 'foo',
    223                                         ),
    224                                         array(
    225                                                 'foo'   => 'foo',
    226                                                 'lorem' => 'ipsum',
    227                                                 'key'   => 'bar',
    228                                         ),
    229                                         array(
    230                                                 'foo' => 'baz',
    231                                                 'key' => 'value',
    232                                         ),
    233                                 ),
     26                        'string instead of array'  => array(
    23427                                'foo',
    235                                 'ASC',
    236                                 array(
    237                                         array(
    238                                                 'foo' => 'bar',
    239                                                 'bar' => 'baz',
    240                                                 'key' => 'foo',
    241                                         ),
    242                                         array(
    243                                                 'foo' => 'baz',
    244                                                 'key' => 'value',
    245                                         ),
    246                                         array(
    247                                                 'foo'   => 'foo',
    248                                                 'lorem' => 'ipsum',
    249                                                 'key'   => 'bar',
    250                                         ),
    251                                 ),
    252                         ),
    253                         'single orderby descending'       => array(
    254                                 array(
    255                                         array(
    256                                                 'foo' => 'bar',
    257                                                 'bar' => 'baz',
    258                                                 'key' => 'foo',
    259                                         ),
    260                                         array(
    261                                                 'foo'   => 'foo',
    262                                                 'lorem' => 'ipsum',
    263                                                 'key'   => 'bar',
    264                                         ),
    265                                         array(
    266                                                 'foo' => 'baz',
    267                                                 'key' => 'value',
    268                                         ),
    269                                 ),
    270                                 'foo',
    271                                 'DESC',
    272                                 array(
    273                                         array(
    274                                                 'foo'   => 'foo',
    275                                                 'lorem' => 'ipsum',
    276                                                 'key'   => 'bar',
    277                                         ),
    278                                         array(
    279                                                 'foo' => 'baz',
    280                                                 'key' => 'value',
    281                                         ),
    282                                         array(
    283                                                 'foo' => 'bar',
    284                                                 'bar' => 'baz',
    285                                                 'key' => 'foo',
    286                                         ),
    287                                 ),
    288                         ),
    289                         'single orderby array ascending'  => array(
    290                                 array(
    291                                         array(
    292                                                 'foo' => 'bar',
    293                                                 'bar' => 'baz',
    294                                                 'key' => 'foo',
    295                                         ),
    296                                         array(
    297                                                 'foo'   => 'foo',
    298                                                 'lorem' => 'ipsum',
    299                                                 'key'   => 'bar',
    300                                         ),
    301                                         array(
    302                                                 'foo' => 'baz',
    303                                                 'key' => 'value',
    304                                         ),
    305                                 ),
    306                                 array( 'foo' => 'ASC' ),
    307                                 'IGNORED',
    308                                 array(
    309                                         array(
    310                                                 'foo' => 'bar',
    311                                                 'bar' => 'baz',
    312                                                 'key' => 'foo',
    313                                         ),
    314                                         array(
    315                                                 'foo' => 'baz',
    316                                                 'key' => 'value',
    317                                         ),
    318                                         array(
    319                                                 'foo'   => 'foo',
    320                                                 'lorem' => 'ipsum',
    321                                                 'key'   => 'bar',
    322                                         ),
    323                                 ),
    324                         ),
    325                         'single orderby array descending' => array(
    326                                 array(
    327                                         array(
    328                                                 'foo' => 'bar',
    329                                                 'bar' => 'baz',
    330                                                 'key' => 'foo',
    331                                         ),
    332                                         array(
    333                                                 'foo'   => 'foo',
    334                                                 'lorem' => 'ipsum',
    335                                                 'key'   => 'bar',
    336                                         ),
    337                                         array(
    338                                                 'foo' => 'baz',
    339                                                 'key' => 'value',
    340                                         ),
    341                                 ),
    342                                 array( 'foo' => 'DESC' ),
    343                                 'IGNORED',
    344                                 array(
    345                                         array(
    346                                                 'foo'   => 'foo',
    347                                                 'lorem' => 'ipsum',
    348                                                 'key'   => 'bar',
    349                                         ),
    350                                         array(
    351                                                 'foo' => 'baz',
    352                                                 'key' => 'value',
    353                                         ),
    354                                         array(
    355                                                 'foo' => 'bar',
    356                                                 'bar' => 'baz',
    357                                                 'key' => 'foo',
    358                                         ),
    359                                 ),
    360                         ),
    361                         'multiple orderby ascending'      => array(
    362                                 array(
    363                                         array(
    364                                                 'foo' => 'bar',
    365                                                 'bar' => 'baz',
    366                                                 'key' => 'foo',
    367                                         ),
    368                                         array(
    369                                                 'foo'   => 'foo',
    370                                                 'lorem' => 'ipsum',
    371                                                 'key'   => 'bar',
    372                                         ),
    373                                         array(
    374                                                 'foo' => 'foo',
    375                                                 'key' => 'key',
    376                                         ),
    377                                         array(
    378                                                 'foo' => 'baz',
    379                                                 'key' => 'key',
    380                                         ),
    381                                         array(
    382                                                 'foo' => 'bar',
    383                                                 'key' => 'value',
    384                                         ),
    385                                 ),
    386                                 array(
    387                                         'key' => 'ASC',
    388                                         'foo' => 'ASC',
    389                                 ),
    390                                 'IGNORED',
    391                                 array(
    392                                         array(
    393                                                 'foo'   => 'foo',
    394                                                 'lorem' => 'ipsum',
    395                                                 'key'   => 'bar',
    396                                         ),
    397                                         array(
    398                                                 'foo' => 'bar',
    399                                                 'bar' => 'baz',
    400                                                 'key' => 'foo',
    401                                         ),
    402                                         array(
    403                                                 'foo' => 'baz',
    404                                                 'key' => 'key',
    405                                         ),
    406                                         array(
    407                                                 'foo' => 'foo',
    408                                                 'key' => 'key',
    409                                         ),
    410                                         array(
    411                                                 'foo' => 'bar',
    412                                                 'key' => 'value',
    413                                         ),
    414                                 ),
    415                         ),
    416                         'multiple orderby descending'     => array(
    417                                 array(
    418                                         array(
    419                                                 'foo' => 'bar',
    420                                                 'bar' => 'baz',
    421                                                 'key' => 'foo',
    422                                         ),
    423                                         array(
    424                                                 'foo'   => 'foo',
    425                                                 'lorem' => 'ipsum',
    426                                                 'key'   => 'bar',
    427                                         ),
    428                                         array(
    429                                                 'foo' => 'foo',
    430                                                 'key' => 'key',
    431                                         ),
    432                                         array(
    433                                                 'foo' => 'baz',
    434                                                 'key' => 'key',
    435                                         ),
    436                                         array(
    437                                                 'foo' => 'bar',
    438                                                 'key' => 'value',
    439                                         ),
    440                                 ),
    441                                 array(
    442                                         'key' => 'DESC',
    443                                         'foo' => 'DESC',
    444                                 ),
    445                                 'IGNORED',
    446                                 array(
    447                                         array(
    448                                                 'foo' => 'bar',
    449                                                 'key' => 'value',
    450                                         ),
    451                                         array(
    452                                                 'foo' => 'foo',
    453                                                 'key' => 'key',
    454                                         ),
    455                                         array(
    456                                                 'foo' => 'baz',
    457                                                 'key' => 'key',
    458                                         ),
    459                                         array(
    460                                                 'foo' => 'bar',
    461                                                 'bar' => 'baz',
    462                                                 'key' => 'foo',
    463                                         ),
    464                                         array(
    465                                                 'foo'   => 'foo',
    466                                                 'lorem' => 'ipsum',
    467                                                 'key'   => 'bar',
    468                                         ),
    469                                 ),
    470                         ),
    471                         'multiple orderby mixed'          => array(
    472                                 array(
    473                                         array(
    474                                                 'foo' => 'bar',
    475                                                 'bar' => 'baz',
    476                                                 'key' => 'foo',
    477                                         ),
    478                                         array(
    479                                                 'foo'   => 'foo',
    480                                                 'lorem' => 'ipsum',
    481                                                 'key'   => 'bar',
    482                                         ),
    483                                         array(
    484                                                 'foo' => 'foo',
    485                                                 'key' => 'key',
    486                                         ),
    487                                         array(
    488                                                 'foo' => 'baz',
    489                                                 'key' => 'key',
    490                                         ),
    491                                         array(
    492                                                 'foo' => 'bar',
    493                                                 'key' => 'value',
    494                                         ),
    495                                 ),
    496                                 array(
    497                                         'key' => 'DESC',
    498                                         'foo' => 'ASC',
    499                                 ),
    500                                 'IGNORED',
    501                                 array(
    502                                         array(
    503                                                 'foo' => 'bar',
    504                                                 'key' => 'value',
    505                                         ),
    506                                         array(
    507                                                 'foo' => 'baz',
    508                                                 'key' => 'key',
    509                                         ),
    510                                         array(
    511                                                 'foo' => 'foo',
    512                                                 'key' => 'key',
    513                                         ),
    514                                         array(
    515                                                 'foo' => 'bar',
    516                                                 'bar' => 'baz',
    517                                                 'key' => 'foo',
    518                                         ),
    519                                         array(
    520                                                 'foo'   => 'foo',
     28                                array(),
     29                                'AND',
     30                                array(),
     31                        ),
     32                        'object instead of array'  => array(
     33                                (object) array( 'foo' ),
     34                                array(),
     35                                'AND',
     36                                array(),
     37                        ),
     38                        'empty args'               => array(
     39                                array( 'foo', 'bar' ),
     40                                array(),
     41                                'AND',
     42                                array( 'foo', 'bar' ),
     43                        ),
     44                        'invalid operator'         => array(
     45                                array(
     46                                        (object) array( 'foo' => 'bar' ),
     47                                        (object) array( 'foo' => 'baz' ),
     48                                ),
     49                                array( 'foo' => 'bar' ),
     50                                'XOR',
     51                                array(),
     52                        ),
     53                        'single argument to match' => array(
     54                                array(
     55                                        (object) array(
     56                                                'foo' => 'bar',
     57                                                'bar' => 'baz',
     58                                                'abc' => 'xyz',
     59                                                'key' => 'foo',
     60                                        ),
     61                                        (object) array(
     62                                                'foo'   => 'foo',
     63                                                '123'   => '456',
     64                                                'lorem' => 'ipsum',
     65                                                'key'   => 'bar',
     66                                        ),
     67                                        (object) array(
     68                                                'foo' => 'baz',
     69                                                'key' => 'value',
     70                                        ),
     71                                        (object) array(
     72                                                'foo' => 'bar',
     73                                                'key' => 'value',
     74                                        ),
     75                                ),
     76                                array( 'foo' => 'bar' ),
     77                                'AND',
     78                                array(
     79                                        0 => (object) array(
     80                                                'foo' => 'bar',
     81                                                'bar' => 'baz',
     82                                                'abc' => 'xyz',
     83                                                'key' => 'foo',
     84                                        ),
     85                                        3 => (object) array(
     86                                                'foo' => 'bar',
     87                                                'key' => 'value',
     88                                        ),
     89                                ),
     90                        ),
     91                        'all must match'           => array(
     92                                array(
     93                                        (object) array(
     94                                                'foo' => 'bar',
     95                                                'bar' => 'baz',
     96                                                'abc' => 'xyz',
     97                                                'key' => 'foo',
     98                                        ),
     99                                        (object) array(
     100                                                'foo'   => 'foo',
     101                                                '123'   => '456',
     102                                                'lorem' => 'ipsum',
     103                                                'key'   => 'bar',
     104                                        ),
     105                                        (object) array(
     106                                                'foo' => 'baz',
     107                                                'key' => 'value',
     108                                                'bar' => 'baz',
     109                                        ),
     110                                        (object) array(
     111                                                'foo' => 'bar',
     112                                                'key' => 'value',
     113                                        ),
     114                                ),
     115                                array(
     116                                        'foo' => 'bar',
     117                                        'bar' => 'baz',
     118                                ),
     119                                'AND',
     120                                array(
     121                                        0 => (object) array(
     122                                                'foo' => 'bar',
     123                                                'bar' => 'baz',
     124                                                'abc' => 'xyz',
     125                                                'key' => 'foo',
     126                                        ),
     127                                ),
     128                        ),
     129                        'any must match'           => array(
     130                                array(
     131                                        (object) array(
     132                                                'foo' => 'bar',
     133                                                'bar' => 'baz',
     134                                                'abc' => 'xyz',
     135                                                'key' => 'foo',
     136                                        ),
     137                                        (object) array(
     138                                                'foo'   => 'foo',
     139                                                '123'   => '456',
     140                                                'lorem' => 'ipsum',
     141                                                'key'   => 'bar',
     142                                        ),
     143                                        (object) array(
     144                                                'foo' => 'baz',
     145                                                'key' => 'value',
     146                                                'bar' => 'baz',
     147                                        ),
     148                                        (object) array(
     149                                                'foo' => 'bar',
     150                                                'key' => 'value',
     151                                        ),
     152                                ),
     153                                array(
     154                                        'key' => 'value',
     155                                        'bar' => 'baz',
     156                                ),
     157                                'OR',
     158                                array(
     159                                        0 => (object) array(
     160                                                'foo' => 'bar',
     161                                                'bar' => 'baz',
     162                                                'abc' => 'xyz',
     163                                                'key' => 'foo',
     164                                        ),
     165                                        2 => (object) array(
     166                                                'foo' => 'baz',
     167                                                'key' => 'value',
     168                                                'bar' => 'baz',
     169                                        ),
     170                                        3 => (object) array(
     171                                                'foo' => 'bar',
     172                                                'key' => 'value',
     173                                        ),
     174                                ),
     175                        ),
     176                        'none must match'          => array(
     177                                array(
     178                                        (object) array(
     179                                                'foo' => 'bar',
     180                                                'bar' => 'baz',
     181                                                'abc' => 'xyz',
     182                                                'key' => 'foo',
     183                                        ),
     184                                        (object) array(
     185                                                'foo'   => 'foo',
     186                                                '123'   => '456',
     187                                                'lorem' => 'ipsum',
     188                                                'key'   => 'bar',
     189                                        ),
     190                                        (object) array(
     191                                                'foo' => 'baz',
     192                                                'key' => 'value',
     193                                        ),
     194                                        (object) array(
     195                                                'foo' => 'bar',
     196                                                'key' => 'value',
     197                                        ),
     198                                ),
     199                                array(
     200                                        'key' => 'value',
     201                                        'bar' => 'baz',
     202                                ),
     203                                'NOT',
     204                                array(
     205                                        1 => (object) array(
     206                                                'foo'   => 'foo',
     207                                                '123'   => '456',
    521208                                                'lorem' => 'ipsum',
    522209                                                'key'   => 'bar',
     
    526213                );
    527214        }
    528 
    529         /**
    530          * @dataProvider data_test_wp_list_sort
    531          *
    532          * @covers ::wp_list_sort
    533          *
    534          * @param string|array $orderby Either the field name to order by or an array
    535          *                              of multiple orderby fields as $orderby => $order.
    536          * @param string       $order   Either 'ASC' or 'DESC'.
    537          */
    538         public function test_wp_list_sort( $list, $orderby, $order, $expected ) {
    539                 $this->assertSame( $expected, wp_list_sort( $list, $orderby, $order ) );
    540         }
    541 
    542         public function data_test_wp_list_sort_preserve_keys() {
    543                 return array(
    544                         'single orderby ascending'        => array(
    545                                 array(
    546                                         'foobar' => array(
    547                                                 'foo' => 'bar',
    548                                                 'bar' => 'baz',
    549                                                 'key' => 'foo',
    550                                         ),
    551                                         'foofoo' => array(
    552                                                 'foo'   => 'foo',
    553                                                 'lorem' => 'ipsum',
    554                                                 'key'   => 'bar',
    555                                         ),
    556                                         'foobaz' => array(
    557                                                 'foo' => 'baz',
    558                                                 'key' => 'value',
    559                                         ),
    560                                 ),
    561                                 'foo',
    562                                 'ASC',
    563                                 array(
    564                                         'foobar' => array(
    565                                                 'foo' => 'bar',
    566                                                 'bar' => 'baz',
    567                                                 'key' => 'foo',
    568                                         ),
    569                                         'foobaz' => array(
    570                                                 'foo' => 'baz',
    571                                                 'key' => 'value',
    572                                         ),
    573                                         'foofoo' => array(
    574                                                 'foo'   => 'foo',
    575                                                 'lorem' => 'ipsum',
    576                                                 'key'   => 'bar',
    577                                         ),
    578                                 ),
    579                         ),
    580                         'single orderby descending'       => array(
    581                                 array(
    582                                         'foobar' => array(
    583                                                 'foo' => 'bar',
    584                                                 'bar' => 'baz',
    585                                                 'key' => 'foo',
    586                                         ),
    587                                         'foofoo' => array(
    588                                                 'foo'   => 'foo',
    589                                                 'lorem' => 'ipsum',
    590                                                 'key'   => 'bar',
    591                                         ),
    592                                         'foobaz' => array(
    593                                                 'foo' => 'baz',
    594                                                 'key' => 'value',
    595                                         ),
    596                                 ),
    597                                 'foo',
    598                                 'DESC',
    599                                 array(
    600                                         'foofoo' => array(
    601                                                 'foo'   => 'foo',
    602                                                 'lorem' => 'ipsum',
    603                                                 'key'   => 'bar',
    604                                         ),
    605                                         'foobaz' => array(
    606                                                 'foo' => 'baz',
    607                                                 'key' => 'value',
    608                                         ),
    609                                         'foobar' => array(
    610                                                 'foo' => 'bar',
    611                                                 'bar' => 'baz',
    612                                                 'key' => 'foo',
    613                                         ),
    614                                 ),
    615                         ),
    616                         'single orderby array ascending'  => array(
    617                                 array(
    618                                         'foobar' => array(
    619                                                 'foo' => 'bar',
    620                                                 'bar' => 'baz',
    621                                                 'key' => 'foo',
    622                                         ),
    623                                         'foofoo' => array(
    624                                                 'foo'   => 'foo',
    625                                                 'lorem' => 'ipsum',
    626                                                 'key'   => 'bar',
    627                                         ),
    628                                         'foobaz' => array(
    629                                                 'foo' => 'baz',
    630                                                 'key' => 'value',
    631                                         ),
    632                                 ),
    633                                 array( 'foo' => 'ASC' ),
    634                                 'IGNORED',
    635                                 array(
    636                                         'foobar' => array(
    637                                                 'foo' => 'bar',
    638                                                 'bar' => 'baz',
    639                                                 'key' => 'foo',
    640                                         ),
    641                                         'foobaz' => array(
    642                                                 'foo' => 'baz',
    643                                                 'key' => 'value',
    644                                         ),
    645                                         'foofoo' => array(
    646                                                 'foo'   => 'foo',
    647                                                 'lorem' => 'ipsum',
    648                                                 'key'   => 'bar',
    649                                         ),
    650                                 ),
    651                         ),
    652                         'single orderby array descending' => array(
    653                                 array(
    654                                         'foobar' => array(
    655                                                 'foo' => 'bar',
    656                                                 'bar' => 'baz',
    657                                                 'key' => 'foo',
    658                                         ),
    659                                         'foofoo' => array(
    660                                                 'foo'   => 'foo',
    661                                                 'lorem' => 'ipsum',
    662                                                 'key'   => 'bar',
    663                                         ),
    664                                         'foobaz' => array(
    665                                                 'foo' => 'baz',
    666                                                 'key' => 'value',
    667                                         ),
    668                                 ),
    669                                 array( 'foo' => 'DESC' ),
    670                                 'IGNORED',
    671                                 array(
    672                                         'foofoo' => array(
    673                                                 'foo'   => 'foo',
    674                                                 'lorem' => 'ipsum',
    675                                                 'key'   => 'bar',
    676                                         ),
    677                                         'foobaz' => array(
    678                                                 'foo' => 'baz',
    679                                                 'key' => 'value',
    680                                         ),
    681                                         'foobar' => array(
    682                                                 'foo' => 'bar',
    683                                                 'bar' => 'baz',
    684                                                 'key' => 'foo',
    685                                         ),
    686                                 ),
    687                         ),
    688                         'multiple orderby ascending'      => array(
    689                                 array(
    690                                         'foobarfoo'   => array(
    691                                                 'foo' => 'bar',
    692                                                 'bar' => 'baz',
    693                                                 'key' => 'foo',
    694                                         ),
    695                                         'foofoobar'   => array(
    696                                                 'foo'   => 'foo',
    697                                                 'lorem' => 'ipsum',
    698                                                 'key'   => 'bar',
    699                                         ),
    700                                         'foofookey'   => array(
    701                                                 'foo' => 'foo',
    702                                                 'key' => 'key',
    703                                         ),
    704                                         'foobazkey'   => array(
    705                                                 'foo' => 'baz',
    706                                                 'key' => 'key',
    707                                         ),
    708                                         'foobarvalue' => array(
    709                                                 'foo' => 'bar',
    710                                                 'key' => 'value',
    711                                         ),
    712                                 ),
    713                                 array(
    714                                         'key' => 'ASC',
    715                                         'foo' => 'ASC',
    716                                 ),
    717                                 'IGNORED',
    718                                 array(
    719                                         'foofoobar'   => array(
    720                                                 'foo'   => 'foo',
    721                                                 'lorem' => 'ipsum',
    722                                                 'key'   => 'bar',
    723                                         ),
    724                                         'foobarfoo'   => array(
    725                                                 'foo' => 'bar',
    726                                                 'bar' => 'baz',
    727                                                 'key' => 'foo',
    728                                         ),
    729                                         'foobazkey'   => array(
    730                                                 'foo' => 'baz',
    731                                                 'key' => 'key',
    732                                         ),
    733                                         'foofookey'   => array(
    734                                                 'foo' => 'foo',
    735                                                 'key' => 'key',
    736                                         ),
    737                                         'foobarvalue' => array(
    738                                                 'foo' => 'bar',
    739                                                 'key' => 'value',
    740                                         ),
    741                                 ),
    742                         ),
    743                         'multiple orderby descending'     => array(
    744                                 array(
    745                                         'foobarfoo'   => array(
    746                                                 'foo' => 'bar',
    747                                                 'bar' => 'baz',
    748                                                 'key' => 'foo',
    749                                         ),
    750                                         'foofoobar'   => array(
    751                                                 'foo'   => 'foo',
    752                                                 'lorem' => 'ipsum',
    753                                                 'key'   => 'bar',
    754                                         ),
    755                                         'foofookey'   => array(
    756                                                 'foo' => 'foo',
    757                                                 'key' => 'key',
    758                                         ),
    759                                         'foobazkey'   => array(
    760                                                 'foo' => 'baz',
    761                                                 'key' => 'key',
    762                                         ),
    763                                         'foobarvalue' => array(
    764                                                 'foo' => 'bar',
    765                                                 'key' => 'value',
    766                                         ),
    767                                 ),
    768                                 array(
    769                                         'key' => 'DESC',
    770                                         'foo' => 'DESC',
    771                                 ),
    772                                 'IGNORED',
    773                                 array(
    774                                         'foobarvalue' => array(
    775                                                 'foo' => 'bar',
    776                                                 'key' => 'value',
    777                                         ),
    778                                         'foofookey'   => array(
    779                                                 'foo' => 'foo',
    780                                                 'key' => 'key',
    781                                         ),
    782                                         'foobazkey'   => array(
    783                                                 'foo' => 'baz',
    784                                                 'key' => 'key',
    785                                         ),
    786                                         'foobarfoo'   => array(
    787                                                 'foo' => 'bar',
    788                                                 'bar' => 'baz',
    789                                                 'key' => 'foo',
    790                                         ),
    791                                         'foofoobar'   => array(
    792                                                 'foo'   => 'foo',
    793                                                 'lorem' => 'ipsum',
    794                                                 'key'   => 'bar',
    795                                         ),
    796                                 ),
    797                         ),
    798                         'multiple orderby mixed'          => array(
    799                                 array(
    800                                         'foobarfoo'   => array(
    801                                                 'foo' => 'bar',
    802                                                 'bar' => 'baz',
    803                                                 'key' => 'foo',
    804                                         ),
    805                                         'foofoobar'   => array(
    806                                                 'foo'   => 'foo',
    807                                                 'lorem' => 'ipsum',
    808                                                 'key'   => 'bar',
    809                                         ),
    810                                         'foofookey'   => array(
    811                                                 'foo' => 'foo',
    812                                                 'key' => 'key',
    813                                         ),
    814                                         'foobazkey'   => array(
    815                                                 'foo' => 'baz',
    816                                                 'key' => 'key',
    817                                         ),
    818                                         'foobarvalue' => array(
    819                                                 'foo' => 'bar',
    820                                                 'key' => 'value',
    821                                         ),
    822                                 ),
    823                                 array(
    824                                         'key' => 'DESC',
    825                                         'foo' => 'ASC',
    826                                 ),
    827                                 'IGNORED',
    828                                 array(
    829                                         'foobarvalue' => array(
    830                                                 'foo' => 'bar',
    831                                                 'key' => 'value',
    832                                         ),
    833                                         'foobazkey'   => array(
    834                                                 'foo' => 'baz',
    835                                                 'key' => 'key',
    836                                         ),
    837                                         'foofookey'   => array(
    838                                                 'foo' => 'foo',
    839                                                 'key' => 'key',
    840                                         ),
    841                                         'foobarfoo'   => array(
    842                                                 'foo' => 'bar',
    843                                                 'bar' => 'baz',
    844                                                 'key' => 'foo',
    845                                         ),
    846                                         'foofoobar'   => array(
    847                                                 'foo'   => 'foo',
    848                                                 'lorem' => 'ipsum',
    849                                                 'key'   => 'bar',
    850                                         ),
    851                                 ),
    852                         ),
    853                 );
    854         }
    855 
    856         /**
    857          * @dataProvider data_test_wp_list_sort_preserve_keys
    858          *
    859          * @covers ::wp_list_sort
    860          *
    861          * @param string|array $orderby Either the field name to order by or an array
    862          *                              of multiple orderby fields as $orderby => $order.
    863          * @param string       $order   Either 'ASC' or 'DESC'.
    864          */
    865         public function test_wp_list_sort_preserve_keys( $list, $orderby, $order, $expected ) {
    866                 $this->assertSame( $expected, wp_list_sort( $list, $orderby, $order, true ) );
    867         }
    868 
    869         /**
    870          * @covers WP_List_Util::get_input
    871          */
    872         public function test_wp_list_util_get_input() {
    873                 $input = array( 'foo', 'bar' );
    874                 $util  = new WP_List_Util( $input );
    875 
    876                 $this->assertSameSets( $input, $util->get_input() );
    877         }
    878 
    879         /**
    880          * @covers WP_List_Util::get_output
    881          */
    882         public function test_wp_list_util_get_output_immediately() {
    883                 $input = array( 'foo', 'bar' );
    884                 $util  = new WP_List_Util( $input );
    885 
    886                 $this->assertSameSets( $input, $util->get_output() );
    887         }
    888 
    889         /**
    890          * @covers WP_List_Util::get_output
    891          */
    892         public function test_wp_list_util_get_output() {
    893                 $expected = array(
    894                         (object) array(
    895                                 'foo' => 'bar',
    896                                 'bar' => 'baz',
    897                         ),
    898                 );
    899 
    900                 $util   = new WP_List_Util(
    901                         array(
    902                                 (object) array(
    903                                         'foo' => 'bar',
    904                                         'bar' => 'baz',
    905                                 ),
    906                                 (object) array( 'bar' => 'baz' ),
    907                         )
    908                 );
    909                 $actual = $util->filter( array( 'foo' => 'bar' ) );
    910 
    911                 $this->assertEqualSets( $expected, $actual );
    912                 $this->assertEqualSets( $expected, $util->get_output() );
    913         }
    914215}
  • trunk/tests/phpunit/tests/functions/wpListUtil.php

    r51664 r51666  
    55 */
    66class Tests_Functions_wpListUtil extends WP_UnitTestCase {
    7 
    8         public function data_test_wp_list_filter() {
    9                 return array(
    10                         'string instead of array'  => array(
    11                                 'foo',
    12                                 array(),
    13                                 'AND',
    14                                 array(),
    15                         ),
    16                         'object instead of array'  => array(
    17                                 (object) array( 'foo' ),
    18                                 array(),
    19                                 'AND',
    20                                 array(),
    21                         ),
    22                         'empty args'               => array(
    23                                 array( 'foo', 'bar' ),
    24                                 array(),
    25                                 'AND',
    26                                 array( 'foo', 'bar' ),
    27                         ),
    28                         'invalid operator'         => array(
    29                                 array(
    30                                         (object) array( 'foo' => 'bar' ),
    31                                         (object) array( 'foo' => 'baz' ),
    32                                 ),
    33                                 array( 'foo' => 'bar' ),
    34                                 'XOR',
    35                                 array(),
    36                         ),
    37                         'single argument to match' => array(
    38                                 array(
    39                                         (object) array(
    40                                                 'foo' => 'bar',
    41                                                 'bar' => 'baz',
    42                                                 'abc' => 'xyz',
    43                                                 'key' => 'foo',
    44                                         ),
    45                                         (object) array(
    46                                                 'foo'   => 'foo',
    47                                                 '123'   => '456',
    48                                                 'lorem' => 'ipsum',
    49                                                 'key'   => 'bar',
    50                                         ),
    51                                         (object) array(
    52                                                 'foo' => 'baz',
    53                                                 'key' => 'value',
    54                                         ),
    55                                         (object) array(
    56                                                 'foo' => 'bar',
    57                                                 'key' => 'value',
    58                                         ),
    59                                 ),
    60                                 array( 'foo' => 'bar' ),
    61                                 'AND',
    62                                 array(
    63                                         0 => (object) array(
    64                                                 'foo' => 'bar',
    65                                                 'bar' => 'baz',
    66                                                 'abc' => 'xyz',
    67                                                 'key' => 'foo',
    68                                         ),
    69                                         3 => (object) array(
    70                                                 'foo' => 'bar',
    71                                                 'key' => 'value',
    72                                         ),
    73                                 ),
    74                         ),
    75                         'all must match'           => array(
    76                                 array(
    77                                         (object) array(
    78                                                 'foo' => 'bar',
    79                                                 'bar' => 'baz',
    80                                                 'abc' => 'xyz',
    81                                                 'key' => 'foo',
    82                                         ),
    83                                         (object) array(
    84                                                 'foo'   => 'foo',
    85                                                 '123'   => '456',
    86                                                 'lorem' => 'ipsum',
    87                                                 'key'   => 'bar',
    88                                         ),
    89                                         (object) array(
    90                                                 'foo' => 'baz',
    91                                                 'key' => 'value',
    92                                                 'bar' => 'baz',
    93                                         ),
    94                                         (object) array(
    95                                                 'foo' => 'bar',
    96                                                 'key' => 'value',
    97                                         ),
    98                                 ),
    99                                 array(
    100                                         'foo' => 'bar',
    101                                         'bar' => 'baz',
    102                                 ),
    103                                 'AND',
    104                                 array(
    105                                         0 => (object) array(
    106                                                 'foo' => 'bar',
    107                                                 'bar' => 'baz',
    108                                                 'abc' => 'xyz',
    109                                                 'key' => 'foo',
    110                                         ),
    111                                 ),
    112                         ),
    113                         'any must match'           => array(
    114                                 array(
    115                                         (object) array(
    116                                                 'foo' => 'bar',
    117                                                 'bar' => 'baz',
    118                                                 'abc' => 'xyz',
    119                                                 'key' => 'foo',
    120                                         ),
    121                                         (object) array(
    122                                                 'foo'   => 'foo',
    123                                                 '123'   => '456',
    124                                                 'lorem' => 'ipsum',
    125                                                 'key'   => 'bar',
    126                                         ),
    127                                         (object) array(
    128                                                 'foo' => 'baz',
    129                                                 'key' => 'value',
    130                                                 'bar' => 'baz',
    131                                         ),
    132                                         (object) array(
    133                                                 'foo' => 'bar',
    134                                                 'key' => 'value',
    135                                         ),
    136                                 ),
    137                                 array(
    138                                         'key' => 'value',
    139                                         'bar' => 'baz',
    140                                 ),
    141                                 'OR',
    142                                 array(
    143                                         0 => (object) array(
    144                                                 'foo' => 'bar',
    145                                                 'bar' => 'baz',
    146                                                 'abc' => 'xyz',
    147                                                 'key' => 'foo',
    148                                         ),
    149                                         2 => (object) array(
    150                                                 'foo' => 'baz',
    151                                                 'key' => 'value',
    152                                                 'bar' => 'baz',
    153                                         ),
    154                                         3 => (object) array(
    155                                                 'foo' => 'bar',
    156                                                 'key' => 'value',
    157                                         ),
    158                                 ),
    159                         ),
    160                         'none must match'          => array(
    161                                 array(
    162                                         (object) array(
    163                                                 'foo' => 'bar',
    164                                                 'bar' => 'baz',
    165                                                 'abc' => 'xyz',
    166                                                 'key' => 'foo',
    167                                         ),
    168                                         (object) array(
    169                                                 'foo'   => 'foo',
    170                                                 '123'   => '456',
    171                                                 'lorem' => 'ipsum',
    172                                                 'key'   => 'bar',
    173                                         ),
    174                                         (object) array(
    175                                                 'foo' => 'baz',
    176                                                 'key' => 'value',
    177                                         ),
    178                                         (object) array(
    179                                                 'foo' => 'bar',
    180                                                 'key' => 'value',
    181                                         ),
    182                                 ),
    183                                 array(
    184                                         'key' => 'value',
    185                                         'bar' => 'baz',
    186                                 ),
    187                                 'NOT',
    188                                 array(
    189                                         1 => (object) array(
    190                                                 'foo'   => 'foo',
    191                                                 '123'   => '456',
    192                                                 'lorem' => 'ipsum',
    193                                                 'key'   => 'bar',
    194                                         ),
    195                                 ),
    196                         ),
    197                 );
    198         }
    199 
    200         /**
    201          * @dataProvider data_test_wp_list_filter
    202          *
    203          * @covers ::wp_list_filter
    204          *
    205          * @param array  $list     An array of objects to filter.
    206          * @param array  $args     An array of key => value arguments to match
    207          *                         against each object.
    208          * @param string $operator The logical operation to perform.
    209          * @param array  $expected Expected result.
    210          */
    211         public function test_wp_list_filter( $list, $args, $operator, $expected ) {
    212                 $this->assertEqualSetsWithIndex( $expected, wp_list_filter( $list, $args, $operator ) );
    213         }
    2147
    2158        public function data_test_wp_list_sort() {
Note: See TracChangeset for help on using the changeset viewer.