|
|
@@ -21,7 +21,7 @@ class FileLibTest extends CakeTestCase {
|
|
|
|
|
|
$handler2 = new FileLib(TMP . 'test.txt', true);
|
|
|
|
|
|
- $is = $handler2->readCsv(1024, ',', '"');
|
|
|
+ $is = $handler2->readCsv();
|
|
|
$expected = array(array(
|
|
|
'First',
|
|
|
'Last Name',
|
|
|
@@ -49,7 +49,7 @@ class FileLibTest extends CakeTestCase {
|
|
|
|
|
|
$handler2 = new FileLib(TMP . 'test.txt', true);
|
|
|
|
|
|
- $is = $handler2->readCsv(1024, ',', '\'');
|
|
|
+ $is = $handler2->readCsv(array('enclosure' => '\''));
|
|
|
$expected = array(array(
|
|
|
'First',
|
|
|
'Last Name',
|
|
|
@@ -66,6 +66,65 @@ class FileLibTest extends CakeTestCase {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * Tests that tmpfile() hack works. One should use readCsvFromString() instead, though.
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function testReadCsvFromTmpFile() {
|
|
|
+ $message = '"First"; "Last Name"; "Email"' . NL . '"Example Äs"; "Firsty üs"; "test@test.com sß"';
|
|
|
+
|
|
|
+ $handle = tmpfile();
|
|
|
+ $meta = stream_get_meta_data($handle);
|
|
|
+ $filename = $meta['uri'];
|
|
|
+
|
|
|
+ $this->assertTrue(file_exists($filename));
|
|
|
+
|
|
|
+ $File = new FileLib($filename);
|
|
|
+ $File->write($message);
|
|
|
+ // This seems to be necessary in this case - fclose($handle) doesn't do the trick
|
|
|
+ $File->handle = $handle;
|
|
|
+
|
|
|
+ $array = $File->readCsv(array('delimiter' => ';'));
|
|
|
+ $File->close();
|
|
|
+
|
|
|
+ $this->assertFalse(file_exists($filename));
|
|
|
+
|
|
|
+ $this->assertTrue(count($array) === 2);
|
|
|
+ $this->assertEquals('Last Name', $array[0][1]);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * FileLibTest::testReadCsvFromString()
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function testReadCsvFromString() {
|
|
|
+ $csv = '\'First\', \'Last Name\', \'Email\'' . NL . '\'Example Äs\', \'Firsty üs\', \'test@test.com\'';
|
|
|
+ $array = FileLib::readCsvFromString($csv, array('enclosure' => '\''));
|
|
|
+ $this->assertEquals('Last Name', $array[0][1]);
|
|
|
+
|
|
|
+ $csv = '\'First\', \'Last Name\', \'Email\'' . NL . '\'Example Äs\', \'Firsty üs\', \'test@test.com \\\' sß\'';
|
|
|
+ $array = FileLib::readCsvFromString($csv, array('enclosure' => '\''));
|
|
|
+ $this->assertEquals('test@test.com \\\' sß', $array[1][2]);
|
|
|
+
|
|
|
+ $csv = '\'First\', \'Last Name\', \'Email\'' . NL . '\'Example Äs\', \'Firsty üs\', \'test@test.com \'\' sß\'';
|
|
|
+ $array = FileLib::readCsvFromString($csv, array('enclosure' => '\''));
|
|
|
+ $this->assertEquals('test@test.com \' sß', $array[1][2]);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * FileLibTest::testReadCsvFromString()
|
|
|
+ *
|
|
|
+ * @expectedException InternalErrorException
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function testReadCsvFromStringInvalidMultibyteDelimiter() {
|
|
|
+ $csv = 'äFirstä, äLast Nameä, äEmailä' . NL . 'äExample Äsä, äFirsty üsä, ätest@test.com ää sßä';
|
|
|
+ $array = FileLib::readCsvFromString($csv, array('enclosure' => 'ä', 'delimiter' => 'ä'));
|
|
|
+ $this->assertEquals('test@test.com ä sß', $array[1][2]);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* Test method
|
|
|
*
|
|
|
* @return void
|
|
|
@@ -111,7 +170,7 @@ class FileLibTest extends CakeTestCase {
|
|
|
$this->assertTrue($res);
|
|
|
|
|
|
$handler = new FileLib(TMP . 'test.csv', true);
|
|
|
- $res = $handler->readCsv(1024);
|
|
|
+ $res = $handler->readCsv();
|
|
|
$this->assertEquals($array, $res);
|
|
|
}
|
|
|
|
|
|
@@ -178,7 +237,7 @@ class FileLibTest extends CakeTestCase {
|
|
|
|
|
|
$handler2 = new FileLib(TMP . 'test.txt', true);
|
|
|
|
|
|
- $is = $handler2->readCsv(1024, ',', '"');
|
|
|
+ $is = $handler2->readCsv();
|
|
|
|
|
|
$is = $handler2->transfer($is);
|
|
|
//pr($is);
|
|
|
@@ -201,7 +260,7 @@ class FileLibTest extends CakeTestCase {
|
|
|
|
|
|
$handler2 = new FileLib(TMP . 'test.txt', true);
|
|
|
|
|
|
- $is = $handler2->readCsv(1024, ',', '"');
|
|
|
+ $is = $handler2->readCsv();
|
|
|
array_shift($is);
|
|
|
$is = $handler2->transfer($is, array('keys' => array(
|
|
|
'X',
|
|
|
@@ -227,7 +286,7 @@ class FileLibTest extends CakeTestCase {
|
|
|
|
|
|
$handler2 = new FileLib(TMP . 'test.txt', true);
|
|
|
|
|
|
- $is = $handler2->readCsv(1024, ',', '"', 'rb', false, true);
|
|
|
+ $is = $handler2->readCsv(array('removeEmpty' => true));
|
|
|
array_shift($is);
|
|
|
$is = $handler2->transfer($is, array('keys' => array(
|
|
|
'X',
|
|
|
@@ -268,21 +327,25 @@ class FileLibTest extends CakeTestCase {
|
|
|
|
|
|
/** Helper Functions **/
|
|
|
|
|
|
- public function _printArrays($status, $is, $expected, $pre = null) {
|
|
|
+ /**
|
|
|
+ * FileLibTest::_printArrays()
|
|
|
+ *
|
|
|
+ * @param mixed $status
|
|
|
+ * @param mixed $is
|
|
|
+ * @param mixed $expected
|
|
|
+ * @param mixed $pre
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ protected function _printArrays($status, $is, $expected, $pre = null) {
|
|
|
if (!isset($_GET['show_passes']) || !$_GET['show_passes']) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- if ($pre !== null) {
|
|
|
- //echo 'pre:';
|
|
|
- //pr($pre);
|
|
|
- }
|
|
|
- //echo 'is:';
|
|
|
- //pr($is);
|
|
|
- if (!$status) {
|
|
|
- //echo 'expected:';
|
|
|
- //pr($expected);
|
|
|
- }
|
|
|
+ echo 'Result:';
|
|
|
+ pr($is);
|
|
|
+
|
|
|
+ echo 'Expected:';
|
|
|
+ pr($expected);
|
|
|
}
|
|
|
|
|
|
}
|