diff --git a/includes/PHPExcel/unitTests/bootstrap.php b/includes/PHPExcel/unitTests/bootstrap.php new file mode 100644 index 0000000..8e8cdb3 --- /dev/null +++ b/includes/PHPExcel/unitTests/bootstrap.php @@ -0,0 +1,49 @@ + /etc/php.d/xdebug.ini' . "\n"; +} diff --git a/includes/PHPExcel/unitTests/phpunit-cc.xml b/includes/PHPExcel/unitTests/phpunit-cc.xml new file mode 100644 index 0000000..8cb6cf5 --- /dev/null +++ b/includes/PHPExcel/unitTests/phpunit-cc.xml @@ -0,0 +1,40 @@ + + + + + + + ./Classes + + + + ../Classes + + ../Classes/PHPExcel/Shared/PCLZip + ../Classes/PHPExcel/Shared/JAMA + ../Classes/PHPExcel/Writer/PDF + + + + + + + + + + diff --git a/includes/PHPExcel/unitTests/phpunit.xml b/includes/PHPExcel/unitTests/phpunit.xml new file mode 100644 index 0000000..d024c28 --- /dev/null +++ b/includes/PHPExcel/unitTests/phpunit.xml @@ -0,0 +1,32 @@ + + + + + + + ./Classes + + + + ../Classes + + ../Classes/PHPExcel/Shared/PCLZip + ../Classes/PHPExcel/Shared/JAMA + ../Classes/PHPExcel/Writer/PDF + + + + diff --git a/includes/PHPExcel/unitTests/testDataFileIterator.php b/includes/PHPExcel/unitTests/testDataFileIterator.php new file mode 100644 index 0000000..9eabe09 --- /dev/null +++ b/includes/PHPExcel/unitTests/testDataFileIterator.php @@ -0,0 +1,131 @@ +file = fopen($file, 'r'); + } + + public function __destruct() + { + fclose($this->file); + } + + public function rewind() + { + rewind($this->file); + $this->current = $this->_parseNextDataset(); + $this->key = 0; + } + + public function valid() + { + return !feof($this->file); + } + + public function key() + { + return $this->key; + } + + public function current() + { + return $this->current; + } + + public function next() + { + $this->current = $this->_parseNextDataset(); + $this->key++; + } + + private function _parseNextDataset() + { + // Read a line of test data from the file + do { + // Only take lines that contain test data and that aren't commented out + $testDataRow = trim(fgets($this->file)); + } while (($testDataRow > '') && ($testDataRow{0} === '#')); + + // Discard any comments at the end of the line + list($testData) = explode('//',$testDataRow); + + // Split data into an array of individual values and a result + $dataSet = $this->_getcsv($testData, ',', "'"); + foreach($dataSet as &$dataValue) { + $dataValue = $this->_parseDataValue($dataValue); + } + unset($dataValue); + + return $dataSet; + } + + private function _getcsv($input, $delimiter, $enclosure) + { + if (function_exists('str_getcsv')) { + return str_getcsv($input, $delimiter, $enclosure); + } + + $temp = fopen('php://memory', 'rw'); + fwrite($temp, $input); + rewind($temp); + $data = fgetcsv($temp, strlen($input), $delimiter, $enclosure); + fclose($temp); + + if ($data === false) { + $data = array(null); + } + + return $data; + } + + private function _parseDataValue($dataValue) { + // discard any white space + $dataValue = trim($dataValue); + // test for the required datatype and convert accordingly + if (!is_numeric($dataValue)) { + if($dataValue == '') { + $dataValue = NULL; + } elseif($dataValue == '""') { + $dataValue = ''; + } elseif(($dataValue[0] == '"') && ($dataValue[strlen($dataValue)-1] == '"')) { + $dataValue = substr($dataValue,1,-1); + } elseif(($dataValue[0] == '{') && ($dataValue[strlen($dataValue)-1] == '}')) { + $dataValue = explode(';',substr($dataValue,1,-1)); + foreach($dataValue as &$dataRow) { + if (strpos($dataRow,'|') !== FALSE) { + $dataRow = explode('|',$dataRow); + foreach($dataRow as &$dataCell) { + $dataCell = $this->_parseDataValue($dataCell); + } + unset($dataCell); + } else { + $dataRow = $this->_parseDataValue($dataRow); + } + } + unset($dataRow); + } else { + switch (strtoupper($dataValue)) { + case 'NULL' : $dataValue = NULL; break; + case 'TRUE' : $dataValue = TRUE; break; + case 'FALSE' : $dataValue = FALSE; break; + } + } + } else { + if (strpos($dataValue,'.') !== FALSE) { + $dataValue = (float) $dataValue; + } else { + $dataValue = (int) $dataValue; + } + } + + return $dataValue; + } + +}