Added ability to test with fixtures
- Now we can specify exact timestamp - Current fixture example.xls is readable
This commit is contained in:
parent
3b766dc161
commit
923008d208
|
|
@ -178,6 +178,9 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
|||
/** @var array */
|
||||
public $blockSize;
|
||||
|
||||
/** @var int */
|
||||
public $timestamp;
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
*
|
||||
|
|
@ -213,6 +216,8 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
|||
$this->totalStringLength = 0;
|
||||
$this->uniqueString = 0;
|
||||
$this->tableOfStrings = array();
|
||||
$this->timestamp = time();
|
||||
|
||||
$this->setPaletteXl97();
|
||||
}
|
||||
|
||||
|
|
@ -636,7 +641,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
|||
}
|
||||
}
|
||||
|
||||
$root = new OLE_PPS_Root(time(), time(), array($OLE));
|
||||
$root = new OLE_PPS_Root($this->timestamp, $this->timestamp, array($OLE));
|
||||
|
||||
if ($this->temporaryDirectory != '') {
|
||||
$root->setTempDir($this->temporaryDirectory);
|
||||
|
|
|
|||
|
|
@ -6,12 +6,50 @@
|
|||
*/
|
||||
class Test_Spreadsheet_Excel_WriterTestCase extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
const FIXTURES_PATH = 'test/fixture/';
|
||||
|
||||
/**
|
||||
* @param string $fileName
|
||||
* @return Spreadsheet_Excel_Writer_Workbook
|
||||
* @param string $filename
|
||||
* @return Spreadsheet_Excel_Writer
|
||||
*/
|
||||
protected function getNewWorkbook($fileName = 'my_workbook')
|
||||
protected function getNewWorkbook($filename = '')
|
||||
{
|
||||
return new Spreadsheet_Excel_Writer_Workbook($fileName);
|
||||
// we're writing to the standard output by defaulr
|
||||
return new Spreadsheet_Excel_Writer($filename);
|
||||
}
|
||||
|
||||
protected function assertSameAsInFixture($filename, Spreadsheet_Excel_Writer $workbook)
|
||||
{
|
||||
$this->assertEmpty($workbook->fileName, "Testing with fixtures works only for standard output");
|
||||
|
||||
// we have to fix timestamp for fixtures to work
|
||||
$workbook->timestamp = 1000000000; // somewhere in 2001
|
||||
|
||||
ob_start();
|
||||
$workbook->close();
|
||||
$data = ob_get_clean();
|
||||
|
||||
$fullPath = self::FIXTURES_PATH.$filename;
|
||||
|
||||
if ($this->shouldUpdateFixtures()) {
|
||||
file_put_contents($fullPath, $data);
|
||||
}
|
||||
|
||||
if (!is_file($fullPath)) {
|
||||
$this->fail("Fixture $filename not found");
|
||||
}
|
||||
|
||||
// TODO: should we save data for future analysis?
|
||||
//file_put_contents("{$fullPath}.work", $data);
|
||||
|
||||
$this->assertEquals(file_get_contents($fullPath), $data, "Output differs for $filename");
|
||||
}
|
||||
|
||||
/**
|
||||
* We should update golden files
|
||||
*/
|
||||
private function shouldUpdateFixtures()
|
||||
{
|
||||
return isset($_SERVER['GOLDEN']);
|
||||
}
|
||||
}
|
||||
|
|
@ -10,6 +10,28 @@ class Test_Spreadsheet_Excel_Writer_WorkbookTest extends Test_Spreadsheet_Excel_
|
|||
{
|
||||
$workbook = $this->getNewWorkbook();
|
||||
|
||||
$before = get_object_vars($workbook);
|
||||
|
||||
$workbook->setVersion(1);
|
||||
|
||||
$this->assertEquals($before, get_object_vars($workbook), "Version 1 should not change internal state");
|
||||
|
||||
$workbook->setVersion(8);
|
||||
|
||||
$this->assertNotEquals($before, get_object_vars($workbook), "Version 8 should change internal state");
|
||||
|
||||
return $workbook;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testSetVersion
|
||||
*/
|
||||
public function testWriteSingleCell(Spreadsheet_Excel_Writer $workbook)
|
||||
{
|
||||
$sheet = $workbook->addWorksheet("Example");
|
||||
$sheet->write(0, 0, "Example");
|
||||
|
||||
$this->assertSameAsInFixture('example.xls', $workbook);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in New Issue