From 6dc279c7b7e2f1f8fe5109c50e6ee2ded9cd92ec Mon Sep 17 00:00:00 2001 From: the_undefined Date: Thu, 11 Oct 2007 07:19:06 +0000 Subject: [PATCH] Added support for $bytes parameter in File::read Re-factored write function Improved test coverage of File class git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@5747 3807eeeb-6ff5-0310-8944-8be069107fe0 --- cake/libs/file.php | 19 +++++-------- cake/tests/cases/libs/file.test.php | 41 ++++++++++++++++++++++++----- 2 files changed, 41 insertions(+), 19 deletions(-) diff --git a/cake/libs/file.php b/cake/libs/file.php index b6c7ce19a..8dc722160 100644 --- a/cake/libs/file.php +++ b/cake/libs/file.php @@ -143,13 +143,14 @@ class File extends Object{ * @return string Contents * @access public */ - function read($bytes = false, $mode = 'rb') { + function read($bytes = false, $mode = 'rb', $forceMode = false) { if (!is_int($bytes)) { $contents = file_get_contents($this->pwd()); return $contents; } - // TODO: Implement support for $bytes parameter + $this->open($mode, $forceMode); + return fread($this->handle, $bytes); } /** * Append given data string to this File. @@ -169,19 +170,11 @@ class File extends Object{ * @return boolean Success * @access public */ - function write($data, $mode = 'w') { - // TODO: Refactor to use File::open() instead - $file = $this->pwd(); - if (!($handle = fopen($file, $mode))) { - trigger_error(sprintf(__("[File] Could not open %s with mode %s!", true), $file, $mode), E_USER_WARNING); + function write($data, $mode = 'w', $forceMode = false) { + if (!$this->open($mode, $forceMode)) { return false; } - - if (false === fwrite($handle, $data)) { - return false; - } - - if (!fclose($handle)) { + if (false === fwrite($this->handle, $data)) { return false; } return true; diff --git a/cake/tests/cases/libs/file.test.php b/cake/tests/cases/libs/file.test.php index eb223ef42..d740764d9 100644 --- a/cake/tests/cases/libs/file.test.php +++ b/cake/tests/cases/libs/file.test.php @@ -93,10 +93,17 @@ class FileTest extends UnitTestCase { $result = $this->File->read(); $expecting = file_get_contents(__FILE__); $this->assertEqual($result, $expecting); + $this->assertTrue(!is_resource($this->File->handle)); - // $expecting = substr($expecting, 0, 3); - // $result = $this->File->read(3); - // $this->assertEqual($result, $expecting); + $data = $expecting; + $expecting = substr($data, 0, 3); + $result = $this->File->read(3); + $this->assertEqual($result, $expecting); + $this->assertTrue(is_resource($this->File->handle)); + + $expecting = substr($data, 3, 3); + $result = $this->File->read(3); + $this->assertEqual($result, $expecting); } function testOpen() { @@ -157,21 +164,43 @@ class FileTest extends UnitTestCase { $TmpFile =& new File($tmpFile); $this->assertFalse(file_exists($tmpFile)); - - $testData = array('CakePHP\'s test suite was here ...', ''); + $this->assertFalse(is_resource($TmpFile->handle)); + + $testData = array('CakePHP\'s', ' test suite', ' was here ...', ''); foreach ($testData as $data) { $r = $TmpFile->write($data); $this->assertTrue($r); $this->assertTrue(file_exists($tmpFile)); $this->assertEqual($data, file_get_contents($tmpFile)); + $this->assertTrue(is_resource($TmpFile->handle)); + $TmpFile->close(); } unlink($tmpFile); } function testAppend() { - // TODO: Test the append function + if (!$tmpFile = $this->_getTmpFile()) { + return false; + }; + if (file_exists($tmpFile)) { + unlink($tmpFile); + } + + $TmpFile =& new File($tmpFile); + $this->assertFalse(file_exists($tmpFile)); + + $fragments = array('CakePHP\'s', ' test suite', ' was here ...', ''); + $data = null; + foreach ($fragments as $fragment) { + $r = $TmpFile->append($fragment); + $this->assertTrue($r); + $this->assertTrue(file_exists($tmpFile)); + $data = $data.$fragment; + $this->assertEqual($data, file_get_contents($tmpFile)); + $TmpFile->close(); + } } function testDelete() {