encoding_test.php.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 213 行

SVN-BASE
213
字号
<?php// $Id: encoding_test.php 1571 2007-09-07 17:14:32Z pp11 $require_once(dirname(__FILE__) . '/../autorun.php');require_once(dirname(__FILE__) . '/../url.php');require_once(dirname(__FILE__) . '/../socket.php');Mock::generate('SimpleSocket');class TestOfEncodedParts extends UnitTestCase {        function testFormEncodedAsKeyEqualsValue() {        $pair = new SimpleEncodedPair('a', 'A');        $this->assertEqual($pair->asRequest(), 'a=A');    }        function testMimeEncodedAsHeadersAndContent() {        $pair = new SimpleEncodedPair('a', 'A');        $this->assertEqual(                $pair->asMime(),                "Content-Disposition: form-data; name=\"a\"\r\n\r\nA");    }        function testAttachmentEncodedAsHeadersWithDispositionAndContent() {        $part = new SimpleAttachment('a', 'A', 'aaa.txt');        $this->assertEqual(                $part->asMime(),                "Content-Disposition: form-data; name=\"a\"; filename=\"aaa.txt\"\r\n" .                        "Content-Type: text/plain\r\n\r\nA");    }}class TestOfEncoding extends UnitTestCase {    var $_content_so_far;        function write($content) {        $this->_content_so_far .= $content;    }        function clear() {        $this->_content_so_far = '';    }        function assertWritten($encoding, $content, $message = '%s') {        $this->clear();        $encoding->writeTo($this);        $this->assertIdentical($this->_content_so_far, $content, $message);    }        function testGetEmpty() {        $encoding = &new SimpleGetEncoding();        $this->assertIdentical($encoding->getValue('a'), false);        $this->assertIdentical($encoding->asUrlRequest(), '');    }        function testPostEmpty() {        $encoding = &new SimplePostEncoding();        $this->assertIdentical($encoding->getValue('a'), false);        $this->assertWritten($encoding, '');    }        function testPrefilled() {        $encoding = &new SimplePostEncoding(array('a' => 'aaa'));        $this->assertIdentical($encoding->getValue('a'), 'aaa');        $this->assertWritten($encoding, 'a=aaa');    }        function testPrefilledWithTwoLevels() {        $query = array('a' => array('aa' => 'aaa'));        $encoding = &new SimplePostEncoding($query);        $this->assertTrue($encoding->hasMoreThanOneLevel($query));        $this->assertEqual($encoding->rewriteArrayWithMultipleLevels($query), array('a[aa]' => 'aaa'));        $this->assertIdentical($encoding->getValue('a[aa]'), 'aaa');        $this->assertWritten($encoding, 'a%5Baa%5D=aaa');    }        function testPrefilledWithThreeLevels() {        $query = array('a' => array('aa' => array('aaa' => 'aaaa')));        $encoding = &new SimplePostEncoding($query);        $this->assertTrue($encoding->hasMoreThanOneLevel($query));        $this->assertEqual($encoding->rewriteArrayWithMultipleLevels($query), array('a[aa][aaa]' => 'aaaa'));        $this->assertIdentical($encoding->getValue('a[aa][aaa]'), 'aaaa');        $this->assertWritten($encoding, 'a%5Baa%5D%5Baaa%5D=aaaa');    }        function testPrefilledWithObject() {        $encoding = &new SimplePostEncoding(new SimpleEncoding(array('a' => 'aaa')));        $this->assertIdentical($encoding->getValue('a'), 'aaa');        $this->assertWritten($encoding, 'a=aaa');    }        function testMultiplePrefilled() {        $query = array('a' => array('a1', 'a2'));        $encoding = &new SimplePostEncoding($query);        $this->assertTrue($encoding->hasMoreThanOneLevel($query));        $this->assertEqual($encoding->rewriteArrayWithMultipleLevels($query), array('a[0]' => 'a1', 'a[1]' => 'a2'));        $this->assertIdentical($encoding->getValue('a[0]'), 'a1');        $this->assertIdentical($encoding->getValue('a[1]'), 'a2');        $this->assertWritten($encoding, 'a%5B0%5D=a1&a%5B1%5D=a2');    }        function testSingleParameter() {        $encoding = &new SimplePostEncoding();        $encoding->add('a', 'Hello');        $this->assertEqual($encoding->getValue('a'), 'Hello');        $this->assertWritten($encoding, 'a=Hello');    }        function testFalseParameter() {        $encoding = &new SimplePostEncoding();        $encoding->add('a', false);        $this->assertEqual($encoding->getValue('a'), false);        $this->assertWritten($encoding, '');    }        function testUrlEncoding() {        $encoding = &new SimplePostEncoding();        $encoding->add('a', 'Hello there!');        $this->assertWritten($encoding, 'a=Hello+there%21');    }        function testUrlEncodingOfKey() {        $encoding = &new SimplePostEncoding();        $encoding->add('a!', 'Hello');        $this->assertWritten($encoding, 'a%21=Hello');    }        function testMultipleParameter() {        $encoding = &new SimplePostEncoding();        $encoding->add('a', 'Hello');        $encoding->add('b', 'Goodbye');        $this->assertWritten($encoding, 'a=Hello&b=Goodbye');    }        function testEmptyParameters() {        $encoding = &new SimplePostEncoding();        $encoding->add('a', '');        $encoding->add('b', '');        $this->assertWritten($encoding, 'a=&b=');    }        function testRepeatedParameter() {        $encoding = &new SimplePostEncoding();        $encoding->add('a', 'Hello');        $encoding->add('a', 'Goodbye');        $this->assertIdentical($encoding->getValue('a'), array('Hello', 'Goodbye'));        $this->assertWritten($encoding, 'a=Hello&a=Goodbye');    }        function testAddingLists() {        $encoding = &new SimplePostEncoding();        $encoding->add('a', array('Hello', 'Goodbye'));        $this->assertIdentical($encoding->getValue('a'), array('Hello', 'Goodbye'));        $this->assertWritten($encoding, 'a=Hello&a=Goodbye');    }        function testMergeInHash() {        $encoding = &new SimpleGetEncoding(array('a' => 'A1', 'b' => 'B'));        $encoding->merge(array('a' => 'A2'));        $this->assertIdentical($encoding->getValue('a'), array('A1', 'A2'));        $this->assertIdentical($encoding->getValue('b'), 'B');    }        function testMergeInObject() {        $encoding = &new SimpleGetEncoding(array('a' => 'A1', 'b' => 'B'));        $encoding->merge(new SimpleEncoding(array('a' => 'A2')));        $this->assertIdentical($encoding->getValue('a'), array('A1', 'A2'));        $this->assertIdentical($encoding->getValue('b'), 'B');    }        function testPrefilledMultipart() {        $encoding = &new SimpleMultipartEncoding(array('a' => 'aaa'), 'boundary');        $this->assertIdentical($encoding->getValue('a'), 'aaa');        $this->assertwritten($encoding,                "--boundary\r\n" .                "Content-Disposition: form-data; name=\"a\"\r\n" .                "\r\n" .                "aaa\r\n" .                "--boundary--\r\n");    }        function testAttachment() {        $encoding = &new SimpleMultipartEncoding(array(), 'boundary');        $encoding->attach('a', 'aaa', 'aaa.txt');        $this->assertIdentical($encoding->getValue('a'), 'aaa.txt');        $this->assertwritten($encoding,                "--boundary\r\n" .                "Content-Disposition: form-data; name=\"a\"; filename=\"aaa.txt\"\r\n" .                "Content-Type: text/plain\r\n" .                "\r\n" .                "aaa\r\n" .                "--boundary--\r\n");    }}class TestOfFormHeaders extends UnitTestCase {        function testEmptyEncodingWritesZeroContentLength() {        $socket = &new MockSimpleSocket();        $socket->expectArgumentsAt(0, 'write', array("Content-Length: 0\r\n"));        $socket->expectArgumentsAt(1, 'write', array("Content-Type: application/x-www-form-urlencoded\r\n"));        $encoding = &new SimplePostEncoding();        $encoding->writeHeadersTo($socket);    }        function testEmptyMultipartEncodingWritesEndBoundaryContentLength() {        $socket = &new MockSimpleSocket();        $socket->expectArgumentsAt(0, 'write', array("Content-Length: 14\r\n"));        $socket->expectArgumentsAt(1, 'write', array("Content-Type: multipart/form-data, boundary=boundary\r\n"));        $encoding = &new SimpleMultipartEncoding(array(), 'boundary');        $encoding->writeHeadersTo($socket);    }}?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?