WordPress.org

Make WordPress Core

Ticket #27272: 27272_test.diff

File 27272_test.diff, 1.7 KB (added by gitlost, 5 years ago)

Unit tests for patch, large numerics.

  • tests/phpunit/tests/post/query.php

     
    12541254
    12551255        /**
    12561256         * @group meta
     1257         * @ticket 27272
     1258         */
     1259        public function test_meta_query_cast_value_numeric_big() {
     1260                $posts = $this->factory->post->create_many( 1 );
     1261
     1262                // Will trigger (depending on system) MySQL string to float type conversion on quoted numbers.
     1263                $big_int = 0x20000000000001; // 0x20 0000 0000 0001 (53 bit integer + 1, 9007199254740993).
     1264                update_post_meta( $posts[0], 'foo', $big_int - 1 );
     1265
     1266                $q = new WP_Query( array(
     1267                        'update_post_meta_cache' => false,
     1268                        'update_term_meta_cache' => false,
     1269                        'fields' => 'ids',
     1270                        'meta_query' => array(
     1271                                array(
     1272                                        'key' => 'foo',
     1273                                        'value' => $big_int,
     1274                                        'compare' => '<',
     1275                                        'type' => 'NUMERIC',
     1276                                ),
     1277                        ),
     1278                ) );
     1279               
     1280                $this->assertEquals( array( $posts[0] ), $q->posts );
     1281        }
     1282
     1283        /**
     1284         * @group meta
     1285         * @ticket 27272
     1286         */
     1287        public function test_meta_query_cast_value_numeric_max() {
     1288                $posts = $this->factory->post->create_many( 1 );
     1289
     1290                $max_int = PHP_INT_MAX;
     1291                update_post_meta( $posts[0], 'foo', $max_int - 1 );
     1292
     1293                $q = new WP_Query( array(
     1294                        'update_post_meta_cache' => false,
     1295                        'update_term_meta_cache' => false,
     1296                        'fields' => 'ids',
     1297                        'meta_query' => array(
     1298                                array(
     1299                                        'key' => 'foo',
     1300                                        'value' => $max_int,
     1301                                        'compare' => '<',
     1302                                        'type' => 'NUMERIC',
     1303                                ),
     1304                        ),
     1305                ) );
     1306               
     1307                $this->assertEquals( array( $posts[0] ), $q->posts );
     1308        }
     1309
     1310        /**
     1311         * @group meta
    12571312         * @ticket 29604
    12581313         */
    12591314        public function test_meta_query_with_orderby_meta_value_relation_or() {