diff options
| author | Horus3 | 2014-02-24 16:42:14 +0100 |
|---|---|---|
| committer | Horus3 | 2014-02-24 16:42:14 +0100 |
| commit | 06f945f27840b53e57795dadbc38e76f7e11ab1c (patch) | |
| tree | 689d5c7f4ffa15460c7e90f47c6a7dd59ce4e8bd /zend/tests/Zend/Gdata/MediaMimeStreamTest.php | |
| download | random-06f945f27840b53e57795dadbc38e76f7e11ab1c.tar.gz | |
init
Diffstat (limited to 'zend/tests/Zend/Gdata/MediaMimeStreamTest.php')
| -rw-r--r-- | zend/tests/Zend/Gdata/MediaMimeStreamTest.php | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/zend/tests/Zend/Gdata/MediaMimeStreamTest.php b/zend/tests/Zend/Gdata/MediaMimeStreamTest.php new file mode 100644 index 0000000..f0b2660 --- /dev/null +++ b/zend/tests/Zend/Gdata/MediaMimeStreamTest.php @@ -0,0 +1,186 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Gdata + * @subpackage UnitTests + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id $ + */ + +require_once 'Zend/Gdata/MediaMimeStream.php'; + +/** + * @category Zend + * @package Zend_Gdata + * @subpackage UnitTests + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @group Zend_Gdata + */ +class Zend_Gdata_MediaMimeStreamTest extends PHPUnit_Framework_TestCase +{ + + public function setUp() + { + $this->locationOfFakeBinary = + 'Zend/Gdata/_files/MediaMimeStreamSample1.txt'; + $this->smallXMLString = '<xml><entry><title>foo</title></entry>'; + $this->testMediaType = 'video/mpeg'; + $this->mediaMimeStream = new Zend_Gdata_MediaMimeStream( + $this->smallXMLString, $this->locationOfFakeBinary, + $this->testMediaType); + $this->exceptedLenOfMimeMessage = 283; + } + + public function testExceptionOnUnreadableFile() + { + $exceptionThrown = false; + try { + $mediaMimeStream = new Zend_Gdata_MediaMimeStream( + $this->smallXMLString, '/non/existant/path/to/nowhere'); + } catch (Zend_Gdata_App_IOException $e) { + $exceptionThrown = true; + } + $this->assertTrue($exceptionThrown, 'Was expecting an exception on ' . + 'attempting to read an unreadable or non-existant file'); + } + + public function testGetTotalSize() + { + $this->assertEquals($this->exceptedLenOfMimeMessage, + $this->mediaMimeStream->getTotalSize()); + } + + public function testHasData() + { + $this->assertTrue($this->mediaMimeStream->hasData()); + } + + public function testGetContentType() + { + $pattern = + '/multipart\/related;\sboundary=\"=_[a-z0-9]{32,}.*\"/'; + $this->assertEquals(1, preg_match($pattern, + $this->mediaMimeStream->getContentType())); + } + + /** + * Ensure that nothing breaks if we read past the end of the messsage in a + * single read. + * + * Note: The test message has the following part sizes in length: + * 211, 22, 39 for a total size of 272. This test performs a single read + * for 400 bytes. + */ + public function testReadAll() + { + $this->assertEquals($this->exceptedLenOfMimeMessage, + $this->mediaMimeStream->getTotalSize()); + $outputArray = array(); + while ($this->mediaMimeStream->hasData()) { + $outputArray = explode("\r\n", $this->mediaMimeStream->read(400)); + } + $mimeBoundaryPattern = '/--=_[a-z0-9]{32,}/'; + $mimeClosingBoundaryPattern = '/--=_[a-z0-9]{32,}--/'; + $this->assertEquals('', $outputArray[0]); + $this->assertEquals(1, + preg_match($mimeBoundaryPattern, $outputArray[1])); + $this->assertEquals('Content-Type: application/atom+xml', + $outputArray[2]); + $this->assertEquals('', $outputArray[3]); + $this->assertEquals($this->smallXMLString, $outputArray[4]); + $this->assertEquals('', $outputArray[5]); + $this->assertEquals(1, + preg_match($mimeBoundaryPattern, $outputArray[6])); + $this->assertEquals('Content-Type: video/mpeg', $outputArray[7]); + $this->assertEquals('Content-Transfer-Encoding: binary', + $outputArray[8]); + $this->assertEquals('', $outputArray[9]); + $this->assertEquals(file_get_contents($this->locationOfFakeBinary), + $outputArray[10]); + $this->assertEquals(1, + preg_match($mimeClosingBoundaryPattern, $outputArray[11])); + } + + /** + * Ensure that a variety of different stream sizes work. + * + * Note: The test message has the following part sizes in length: + * 211, 22, 39 for a total size of 287. + */ + public function testReadVariousBufferSizes() + { + $bufferSizesToTest = array(2, 20, 33, 44, 88, 100, 201); + foreach($bufferSizesToTest as $sizeToTest) { + $mediaMimeStream = new Zend_Gdata_MediaMimeStream( + $this->smallXMLString, $this->locationOfFakeBinary, + $this->testMediaType); + $this->assertEquals($sizeToTest, + strlen($mediaMimeStream->read($sizeToTest))); + } + } + + /** + * Ensure that nothing breaks if we read a message 1 byte at time. + */ + public function testReadWithoutCrossingSections() + { + $outputString = ''; + while ($this->mediaMimeStream->hasData()) { + $outputString .= $this->mediaMimeStream->read(1); + } + $this->assertEquals($this->exceptedLenOfMimeMessage, + strlen($outputString)); + } + + /** + * Ensure that nothing breaks if we read past at least two sections of + * the message. + * + * Note: The test message has the following part sizes in length: + * 211, 22, 39 for a total size of 272. This test reads 250 bytes at a time + * to make sure that we cross sections 1 and 2 and then read part of + * section 3. + */ + public function testReadCrossing2Sections() + { + $outputString = ''; + while ($this->mediaMimeStream->hasData()) { + $outputString .= $this->mediaMimeStream->read(250); + } + $this->assertEquals($this->exceptedLenOfMimeMessage, + strlen($outputString)); + } + + /** + * Ensure that nothing breaks if we read past at least one section of + * the message. + * + * Note: The test message has the following part sizes in length: + * 211, 22, 39 for a total size of 272. This test reads 230 bytes at a time + * to make sure that we cross section 1 and then read sections 2 and 3. + */ + public function testReadCrossing1Section() + { + $outputString = ''; + while ($this->mediaMimeStream->hasData()) { + $outputString .= $this->mediaMimeStream->read(230); + } + $this->assertEquals($this->exceptedLenOfMimeMessage, + strlen($outputString)); + } + +} |
