Changeset 909 in tests for trunk/tests/functions/listFilter.php
- Timestamp:
- 07/19/2012 01:52:37 AM (13 years ago)
- Location:
- trunk/tests/functions
- Files:
-
- 1 added
- 1 copied
-
. (added)
-
listFilter.php (copied) (copied from trunk/tests/test_includes_functions.php) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/functions/listFilter.php
r903 r909 1 1 <?php 2 3 /**4 * @group functions.php5 */6 class TestFunctions extends WP_UnitTestCase {7 function test_wp_parse_args_object() {8 $x = new MockClass;9 $x->_baba = 5;10 $x->yZ = "baba";11 $x->a = array(5, 111, 'x');12 $this->assertEquals(array('_baba' => 5, 'yZ' => 'baba', 'a' => array(5, 111, 'x')), wp_parse_args($x));13 $y = new MockClass;14 $this->assertEquals(array(), wp_parse_args($y));15 }16 function test_wp_parse_args_array() {17 // arrays18 $a = array();19 $this->assertEquals(array(), wp_parse_args($a));20 $b = array('_baba' => 5, 'yZ' => 'baba', 'a' => array(5, 111, 'x'));21 $this->assertEquals(array('_baba' => 5, 'yZ' => 'baba', 'a' => array(5, 111, 'x')), wp_parse_args($b));22 }23 function test_wp_parse_args_defaults() {24 $x = new MockClass;25 $x->_baba = 5;26 $x->yZ = "baba";27 $x->a = array(5, 111, 'x');28 $d = array('pu' => 'bu');29 $this->assertEquals(array('pu' => 'bu', '_baba' => 5, 'yZ' => 'baba', 'a' => array(5, 111, 'x')), wp_parse_args($x, $d));30 $e = array('_baba' => 6);31 $this->assertEquals(array('_baba' => 5, 'yZ' => 'baba', 'a' => array(5, 111, 'x')), wp_parse_args($x, $e));32 }33 function test_wp_parse_args_other() {34 $b = true;35 wp_parse_str($b, $s);36 $this->assertEquals($s, wp_parse_args($b));37 $q = 'x=5&_baba=dudu&';38 wp_parse_str($q, $ss);39 $this->assertEquals($ss, wp_parse_args($q));40 }41 function test_size_format() {42 $kb = 1024;43 $mb = $kb*1024;44 $gb = $mb*1024;45 $tb = $gb*1024;46 // test if boundaries are correct47 $this->assertEquals('1 GB', size_format($gb, 0));48 $this->assertEquals('1 MB', size_format($mb, 0));49 $this->assertEquals('1 kB', size_format($kb, 0));50 // now some values around51 // add some bytes to make sure the result isn't 1.499999952 $this->assertEquals('1.5 TB', size_format($tb + $tb/2 + $mb, 1));53 $this->assertEquals('1,023.999 GB', size_format($tb-$mb-$kb, 3));54 // edge55 $this->assertFalse(size_format(-1));56 $this->assertFalse(size_format(0));57 $this->assertFalse(size_format('baba'));58 $this->assertFalse(size_format(array()));59 }60 61 function test_path_is_absolute() {62 if ( !is_callable('path_is_absolute') )63 $this->markTestSkipped();64 65 $absolute_paths = array(66 '/',67 '/foo/',68 '/foo',69 '/FOO/bar',70 '/foo/bar/',71 '/foo/../bar/',72 '\\WINDOWS',73 'C:\\',74 'C:\\WINDOWS',75 '\\\\sambashare\\foo',76 );77 foreach ($absolute_paths as $path)78 $this->assertTrue( path_is_absolute($path), "path_is_absolute('$path') should return true" );79 }80 81 function test_path_is_not_absolute() {82 if ( !is_callable('path_is_absolute') )83 $this->markTestSkipped();84 85 $relative_paths = array(86 '',87 '.',88 '..',89 '../foo',90 '../',91 '../foo.bar',92 'foo/bar',93 'foo',94 'FOO',95 '..\\WINDOWS',96 );97 foreach ($relative_paths as $path)98 $this->assertFalse( path_is_absolute($path), "path_is_absolute('$path') should return false" );99 }100 101 102 function test_wp_unique_filename() {103 /* this test requires:104 - that you have dir + file 'data/images/test-image.png',105 - and that this dir is writeable106 - there is an image 'test-image.png' that will be used to test unique filenames107 108 NB: there is a hardcoded dependency that the testing file is '.png'; however,109 this limitation is arbitary, so change it if you like.110 */111 $testdir = DIR_TESTDATA . '/images/';112 $testimg = 'test-image.png';113 $this->assertTrue( file_exists($testdir) );114 $this->assertTrue( is_writable($testdir) );115 $this->assertTrue( file_exists($testdir . $testimg) );116 117 $cases = array(118 // null case119 'null' . $testimg,120 121 // edge cases: '.png', 'abc.', 'abc', 'abc0', 'abc1', 'abc0.png', 'abc1.png' (num @ end)122 '.png',123 'abc',124 'abc.',125 'abc0',126 'abc1',127 'abc0.png',128 'abc1.png',129 130 // replacing # with _131 str_replace('-', '#', $testimg), // test#image.png132 str_replace('-', '##', $testimg), // test##image.png133 str_replace(array('-', 'e'), '#', $testimg), // t#st#imag#.png134 str_replace(array('-', 'e'), '##', $testimg), // t##st##imag##.png135 136 // replacing \ or ' with nothing137 str_replace('-', '\\', $testimg), // test\image.png138 str_replace('-', '\\\\', $testimg), // test\\image.png139 str_replace(array('-', 'e'), '\\', $testimg), // t\st\imag\.png140 str_replace(array('-', 'e'), '\\\\', $testimg), // t\\st\\imag\\.png141 str_replace('-', "'", $testimg), // test'image.png142 str_replace('-', "'", $testimg), // test''image.png143 str_replace(array('-', 'e'), "'", $testimg), // t'st'imag'.png144 str_replace(array('-', 'e'), "''", $testimg), // t''st''imag''.png145 str_replace('-', "\'", $testimg), // test\'image.png146 str_replace('-', "\'\'", $testimg), // test\'\'image.png147 str_replace(array('-', 'e'), "\'", $testimg), // t\'st\'imag\'.png148 str_replace(array('-', 'e'), "\'\'", $testimg), // t\'\'st\'\'imag\'\'.png149 150 'test' . str_replace('e', 'é', $testimg), // testtést-imagé.png151 152 '12%af34567890~!@#$..%^&*()|_+qwerty fgh`jkl zx<>?:"{}[]="\'/?.png', // kitchen sink153 $testdir.'test-image-with-path.png',154 );155 156 // what we expect the replacements will do157 $expected = array(158 'null' . $testimg,159 160 'png',161 'abc',162 'abc',163 'abc0',164 'abc1',165 'abc0.png',166 'abc1.png',167 168 'testimage.png',169 'testimage.png',170 'tstimag.png',171 'tstimag.png',172 173 'testimage.png',174 'testimage.png',175 'tstimag.png',176 'tstimag.png',177 'testimage.png',178 'testimage.png',179 'tstimag.png',180 'tstimag.png',181 'testimage.png',182 'testimage.png',183 'tstimag.png',184 'tstimag.png',185 186 'testtést-imagé.png',187 188 '12%af34567890@..%^_+qwerty-fghjkl-zx.png',189 str_replace( array( '\\', '/', ':' ), '', $testdir ).'test-image-with-path.png',190 );191 192 foreach ($cases as $key => $case) {193 // make sure expected file doesn't exist already194 // happens when tests fail and the unlinking doesn't happen195 if( $expected[$key] !== $testimg && file_exists($testdir . $expected[$key]) )196 unlink($testdir . $expected[$key]);197 198 // -- TEST 1: the replacement is as expected199 $this->assertEquals( $expected[$key], wp_unique_filename($testdir, $case, NULL), $case );200 // -- end TEST 1201 202 // -- TEST 2: the renaming will produce a unique name203 // create the expected file204 copy($testdir . $testimg, $testdir . $expected[$key]);205 // test that wp_unique_filename actually returns a unique filename206 $this->assertFileNotExists( $testdir . wp_unique_filename($testdir, $case, NULL) );207 // -- end TEST 2208 209 // cleanup210 if( $expected[$key] !== $testimg && file_exists($testdir . $expected[$key]) )211 unlink($testdir . $expected[$key]);212 }213 }214 215 /**216 * @ticket 9930217 */218 function test_is_serialized() {219 $cases = array(220 serialize(null),221 serialize(true),222 serialize(false),223 serialize(-25),224 serialize(25),225 serialize(1.1),226 serialize(2.1E+200),227 serialize('this string will be serialized'),228 serialize("a\nb"),229 serialize(array()),230 serialize(array(1,1,2,3,5,8,13)),231 serialize( (object)array('test' => true, '3', 4) )232 );233 foreach ( $cases as $case )234 $this->assertTrue( is_serialized($case), "Serialized data: $case" );235 236 $not_serialized = array(237 'a string',238 'garbage:a:0:garbage;',239 'b:4;',240 's:4:test;'241 );242 foreach ( $not_serialized as $case )243 $this->assertFalse( is_serialized($case), "Test data: $case" );244 }245 246 }247 2 248 3 /** … … 251 6 * @group functions.php 252 7 */ 253 class Test ListFilter extends WP_UnitTestCase {8 class Tests_Functions_ListFilter extends WP_UnitTestCase { 254 9 var $object_list = array(); 255 10 var $array_list = array(); … … 356 111 } 357 112 } 358 359 /**360 * @group http361 */362 class TestHTTPFunctions extends WP_UnitTestCase {363 function test_head_request() {364 // this url give a direct 200 response365 $url = 'http://asdftestblog1.files.wordpress.com/2007/09/2007-06-30-dsc_4700-1.jpg';366 $response = wp_remote_head( $url );367 $headers = wp_remote_retrieve_headers( $response );368 369 $this->assertTrue( is_array( $headers ) );370 $this->assertEquals( 'image/jpeg', $headers['content-type'] );371 $this->assertEquals( '40148', $headers['content-length'] );372 $this->assertEquals( '200', wp_remote_retrieve_response_code( $response ) );373 }374 375 function test_head_redirect() {376 // this url will 301 redirect377 $url = 'http://asdftestblog1.wordpress.com/files/2007/09/2007-06-30-dsc_4700-1.jpg';378 $response = wp_remote_head( $url );379 $this->assertEquals( '301', wp_remote_retrieve_response_code( $response ) );380 }381 382 function test_head_404() {383 $url = 'http://asdftestblog1.files.wordpress.com/2007/09/awefasdfawef.jpg';384 $response = wp_remote_head( $url );385 386 $this->assertTrue( is_array($response) );387 $this->assertEquals( '404', wp_remote_retrieve_response_code( $response ) );388 }389 390 function test_get_request() {391 $url = 'http://asdftestblog1.files.wordpress.com/2007/09/2007-06-30-dsc_4700-1.jpg';392 $file = tempnam('/tmp', 'testfile');393 394 $headers = wp_get_http($url, $file);395 396 // should return the same headers as a head request397 $this->assertTrue( is_array($headers) );398 $this->assertEquals( 'image/jpeg', $headers['content-type'] );399 $this->assertEquals( '40148', $headers['content-length'] );400 $this->assertEquals( '200', $headers['response'] );401 402 // make sure the file is ok403 $this->assertEquals( 40148, filesize($file) );404 $this->assertEquals( 'b0371a0fc575fcf77f62cd298571f53b', md5_file($file) );405 }406 407 function test_get_redirect() {408 // this will redirect to asdftestblog1.files.wordpress.com409 $url = 'http://asdftestblog1.wordpress.com/files/2007/09/2007-06-30-dsc_4700-1.jpg';410 $file = tempnam('/tmp', 'testfile');411 412 $headers = wp_get_http($url, $file);413 414 // should return the same headers as a head request415 $this->assertTrue( is_array($headers) );416 $this->assertEquals( 'image/jpeg', $headers['content-type'] );417 $this->assertEquals( '40148', $headers['content-length'] );418 $this->assertEquals( '200', $headers['response'] );419 420 // make sure the file is ok421 $this->assertEquals( 40148, filesize($file) );422 $this->assertEquals( 'b0371a0fc575fcf77f62cd298571f53b', md5_file($file) );423 }424 425 function test_get_redirect_limit_exceeded() {426 // this will redirect to asdftestblog1.files.wordpress.com427 $url = 'http://asdftestblog1.wordpress.com/files/2007/09/2007-06-30-dsc_4700-1.jpg';428 $file = tempnam('/tmp', 'testfile');429 // pretend we've already redirected 5 times430 $headers = wp_get_http( $url, $file, 6 );431 $this->assertFalse( $headers );432 }433 }434 435 /**436 * @group themes437 * @group plugins438 */439 class Test_WP_File_Headers extends WP_UnitTestCase {440 function test_get_file_data() {441 $theme_headers = array(442 'Name' => 'Theme Name',443 'ThemeURI' => 'Theme URI',444 'Description' => 'Description',445 'Version' => 'Version',446 'Author' => 'Author',447 'AuthorURI' => 'Author URI',448 );449 450 $actual = get_file_data( DIR_TESTDATA . '/themedir1/default/style.css', $theme_headers );451 452 $expected = array(453 'Name' => 'WordPress Default',454 'ThemeURI' => 'http://wordpress.org/',455 'Description' => 'The default WordPress theme based on the famous <a href="http://binarybonsai.com/kubrick/">Kubrick</a>.',456 'Version' => '1.6',457 'Author' => 'Michael Heilemann',458 'AuthorURI' => 'http://binarybonsai.com/',459 );460 461 foreach ( $actual as $header => $value )462 $this->assertEquals( $expected[ $header ], $value, $header );463 }464 465 function test_get_file_data_cr_line_endings() {466 $headers = array( 'SomeHeader' => 'Some Header', 'Description' => 'Description', 'Author' => 'Author' );467 $actual = get_file_data( DIR_TESTDATA . '/formatting/cr-line-endings-file-header.php', $headers );468 $expected = array(469 'SomeHeader' => 'Some header value!',470 'Description' => 'This file is using CR line endings for a testcase.',471 'Author' => 'A Very Old Mac',472 );473 474 foreach ( $actual as $header => $value )475 $this->assertEquals( $expected[ $header ], $value, $header );476 }477 }
Note: See TracChangeset
for help on using the changeset viewer.