Updates to 3rd party libraries
Add Dockerfile and specific docker-php.ini
This commit is contained in:
109
inc/vendor/phpoffice/phpspreadsheet/tests/PhpSpreadsheetTests/Reader/CsvTest.php
vendored
Normal file
109
inc/vendor/phpoffice/phpspreadsheet/tests/PhpSpreadsheetTests/Reader/CsvTest.php
vendored
Normal file
@ -0,0 +1,109 @@
|
||||
<?php
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Reader;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Csv;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class CsvTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @dataProvider providerDelimiterDetection
|
||||
*
|
||||
* @param string $filename
|
||||
* @param string $expectedDelimiter
|
||||
* @param string $cell
|
||||
* @param float|int|string $expectedValue
|
||||
*/
|
||||
public function testDelimiterDetection($filename, $expectedDelimiter, $cell, $expectedValue)
|
||||
{
|
||||
$reader = new Csv();
|
||||
self::assertNull($reader->getDelimiter());
|
||||
|
||||
$spreadsheet = $reader->load($filename);
|
||||
|
||||
self::assertSame($expectedDelimiter, $reader->getDelimiter(), 'should be able to infer the delimiter');
|
||||
|
||||
$actual = $spreadsheet->getActiveSheet()->getCell($cell)->getValue();
|
||||
self::assertSame($expectedValue, $actual, 'should be able to retrieve correct value');
|
||||
}
|
||||
|
||||
public function providerDelimiterDetection()
|
||||
{
|
||||
return [
|
||||
[
|
||||
__DIR__ . '/../../data/Reader/CSV/enclosure.csv',
|
||||
',',
|
||||
'C4',
|
||||
'username2',
|
||||
],
|
||||
[
|
||||
__DIR__ . '/../../data/Reader/CSV/semicolon_separated.csv',
|
||||
';',
|
||||
'C2',
|
||||
'25,5',
|
||||
],
|
||||
[
|
||||
__DIR__ . '/../../data/Reader/HTML/csv_with_angle_bracket.csv',
|
||||
',',
|
||||
'B1',
|
||||
'Number of items with weight <= 50kg',
|
||||
],
|
||||
[
|
||||
__DIR__ . '/../../../samples/Reader/sampleData/example1.csv',
|
||||
',',
|
||||
'I4',
|
||||
'100%',
|
||||
],
|
||||
[
|
||||
__DIR__ . '/../../../samples/Reader/sampleData/example2.csv',
|
||||
',',
|
||||
'D8',
|
||||
-58.373161,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerCanLoad
|
||||
*
|
||||
* @param bool $expected
|
||||
* @param string $filename
|
||||
*/
|
||||
public function testCanLoad($expected, $filename)
|
||||
{
|
||||
$reader = new Csv();
|
||||
self::assertSame($expected, $reader->canRead($filename));
|
||||
}
|
||||
|
||||
public function providerCanLoad()
|
||||
{
|
||||
return [
|
||||
[false, 'data/Reader/Ods/data.ods'],
|
||||
[false, 'data/Reader/Xml/WithoutStyle.xml'],
|
||||
[true, 'data/Reader/CSV/enclosure.csv'],
|
||||
[true, 'data/Reader/CSV/semicolon_separated.csv'],
|
||||
[true, 'data/Reader/CSV/contains_html.csv'],
|
||||
[true, 'data/Reader/CSV/csv_without_extension'],
|
||||
[true, 'data/Reader/HTML/csv_with_angle_bracket.csv'],
|
||||
[true, 'data/Reader/CSV/empty.csv'],
|
||||
[true, '../samples/Reader/sampleData/example1.csv'],
|
||||
[true, '../samples/Reader/sampleData/example2.csv'],
|
||||
];
|
||||
}
|
||||
|
||||
public function testEscapeCharacters()
|
||||
{
|
||||
$reader = (new Csv())->setEscapeCharacter('"');
|
||||
$worksheet = $reader->load(__DIR__ . '/../../data/Reader/CSV/backslash.csv')
|
||||
->getActiveSheet();
|
||||
|
||||
$expected = [
|
||||
['field 1', 'field 2\\'],
|
||||
['field 3\\', 'field 4'],
|
||||
];
|
||||
|
||||
$this->assertSame('"', $reader->getEscapeCharacter());
|
||||
$this->assertSame($expected, $worksheet->toArray());
|
||||
}
|
||||
}
|
46
inc/vendor/phpoffice/phpspreadsheet/tests/PhpSpreadsheetTests/Reader/HtmlTest.php
vendored
Normal file
46
inc/vendor/phpoffice/phpspreadsheet/tests/PhpSpreadsheetTests/Reader/HtmlTest.php
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Reader;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Html;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class HtmlTest extends TestCase
|
||||
{
|
||||
public function testCsvWithAngleBracket()
|
||||
{
|
||||
$filename = __DIR__ . '/../../data/Reader/HTML/csv_with_angle_bracket.csv';
|
||||
$reader = new Html();
|
||||
self::assertFalse($reader->canRead($filename));
|
||||
}
|
||||
|
||||
public function providerCanReadVerySmallFile()
|
||||
{
|
||||
$padding = str_repeat('a', 2048);
|
||||
|
||||
return [
|
||||
[true, ' <html> ' . $padding . ' </html> '],
|
||||
[true, ' <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html>' . $padding . '</html>'],
|
||||
[true, '<html></html>'],
|
||||
[false, ''],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerCanReadVerySmallFile
|
||||
*
|
||||
* @param bool $expected
|
||||
* @param string $content
|
||||
*/
|
||||
public function testCanReadVerySmallFile($expected, $content)
|
||||
{
|
||||
$filename = tempnam(sys_get_temp_dir(), 'html');
|
||||
file_put_contents($filename, $content);
|
||||
|
||||
$reader = new Html();
|
||||
$actual = $reader->canRead($filename);
|
||||
unlink($filename);
|
||||
|
||||
self::assertSame($expected, $actual);
|
||||
}
|
||||
}
|
225
inc/vendor/phpoffice/phpspreadsheet/tests/PhpSpreadsheetTests/Reader/OdsTest.php
vendored
Normal file
225
inc/vendor/phpoffice/phpspreadsheet/tests/PhpSpreadsheetTests/Reader/OdsTest.php
vendored
Normal file
@ -0,0 +1,225 @@
|
||||
<?php
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Reader;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Cell\DataType;
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Ods;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Font;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* @todo The class doesn't read the bold/italic/underline properties (rich text)
|
||||
*/
|
||||
class OdsTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @var Spreadsheet
|
||||
*/
|
||||
private $spreadsheetOdsTest;
|
||||
|
||||
/**
|
||||
* @var Spreadsheet
|
||||
*/
|
||||
private $spreadsheetData;
|
||||
|
||||
/**
|
||||
* @return Spreadsheet
|
||||
*/
|
||||
private function loadOdsTestFile()
|
||||
{
|
||||
if (!$this->spreadsheetOdsTest) {
|
||||
$filename = __DIR__ . '/../../../samples/templates/OOCalcTest.ods';
|
||||
|
||||
// Load into this instance
|
||||
$reader = new Ods();
|
||||
$this->spreadsheetOdsTest = $reader->loadIntoExisting($filename, new Spreadsheet());
|
||||
}
|
||||
|
||||
return $this->spreadsheetOdsTest;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Spreadsheet
|
||||
*/
|
||||
protected function loadDataFile()
|
||||
{
|
||||
if (!$this->spreadsheetData) {
|
||||
$filename = __DIR__ . '/../../data/Reader/Ods/data.ods';
|
||||
|
||||
// Load into this instance
|
||||
$reader = new Ods();
|
||||
$this->spreadsheetData = $reader->loadIntoExisting($filename, new Spreadsheet());
|
||||
}
|
||||
|
||||
return $this->spreadsheetData;
|
||||
}
|
||||
|
||||
public function testReadFileProperties()
|
||||
{
|
||||
$filename = __DIR__ . '/../../data/Reader/Ods/data.ods';
|
||||
|
||||
// Load into this instance
|
||||
$reader = new Ods();
|
||||
|
||||
// Test "listWorksheetNames" method
|
||||
|
||||
self::assertEquals([
|
||||
'Sheet1',
|
||||
'Second Sheet',
|
||||
], $reader->listWorksheetNames($filename));
|
||||
}
|
||||
|
||||
public function testLoadWorksheets()
|
||||
{
|
||||
$spreadsheet = $this->loadDataFile();
|
||||
|
||||
self::assertInstanceOf('PhpOffice\PhpSpreadsheet\Spreadsheet', $spreadsheet);
|
||||
|
||||
self::assertEquals(2, $spreadsheet->getSheetCount());
|
||||
|
||||
$firstSheet = $spreadsheet->getSheet(0);
|
||||
self::assertInstanceOf('PhpOffice\PhpSpreadsheet\Worksheet\Worksheet', $firstSheet);
|
||||
|
||||
$secondSheet = $spreadsheet->getSheet(1);
|
||||
self::assertInstanceOf('PhpOffice\PhpSpreadsheet\Worksheet\Worksheet', $secondSheet);
|
||||
}
|
||||
|
||||
public function testReadValueAndComments()
|
||||
{
|
||||
$spreadsheet = $this->loadOdsTestFile();
|
||||
|
||||
$firstSheet = $spreadsheet->getSheet(0);
|
||||
|
||||
self::assertEquals(29, $firstSheet->getHighestRow());
|
||||
self::assertEquals('N', $firstSheet->getHighestColumn());
|
||||
|
||||
// Simple cell value
|
||||
self::assertEquals('Test String 1', $firstSheet->getCell('A1')->getValue());
|
||||
|
||||
// Merged cell
|
||||
self::assertEquals('BOX', $firstSheet->getCell('B18')->getValue());
|
||||
|
||||
// Comments/Annotations
|
||||
self::assertEquals(
|
||||
'Test for a simple colour-formatted string',
|
||||
$firstSheet->getComment('A1')->getText()->getPlainText()
|
||||
);
|
||||
|
||||
// Data types
|
||||
self::assertEquals(DataType::TYPE_STRING, $firstSheet->getCell('A1')->getDataType());
|
||||
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('B1')->getDataType()); // Int
|
||||
|
||||
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('B6')->getDataType()); // Float
|
||||
self::assertEquals(1.23, $firstSheet->getCell('B6')->getValue());
|
||||
self::assertEquals(0, $firstSheet->getCell('G10')->getValue());
|
||||
|
||||
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A10')->getDataType()); // Date
|
||||
self::assertEquals(22269.0, $firstSheet->getCell('A10')->getValue());
|
||||
|
||||
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A13')->getDataType()); // Time
|
||||
self::assertEquals(25569.0625, $firstSheet->getCell('A13')->getValue());
|
||||
|
||||
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A15')->getDataType()); // Date + Time
|
||||
self::assertEquals(22269.0625, $firstSheet->getCell('A15')->getValue());
|
||||
|
||||
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A11')->getDataType()); // Fraction
|
||||
|
||||
self::assertEquals(DataType::TYPE_BOOL, $firstSheet->getCell('D6')->getDataType());
|
||||
self::assertTrue($firstSheet->getCell('D6')->getValue());
|
||||
|
||||
self::assertEquals(DataType::TYPE_FORMULA, $firstSheet->getCell('C6')->getDataType()); // Formula
|
||||
self::assertEquals('=TRUE()', $firstSheet->getCell('C6')->getValue()); // Formula
|
||||
|
||||
// Percentage, Currency
|
||||
|
||||
$spreadsheet = $this->loadDataFile();
|
||||
|
||||
$firstSheet = $spreadsheet->getSheet(0);
|
||||
|
||||
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A1')->getDataType()); // Percentage (10%)
|
||||
self::assertEquals(0.1, $firstSheet->getCell('A1')->getValue());
|
||||
|
||||
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A2')->getDataType()); // Percentage (10.00%)
|
||||
self::assertEquals(0.1, $firstSheet->getCell('A2')->getValue());
|
||||
|
||||
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A4')->getDataType()); // Currency (€10.00)
|
||||
self::assertEquals(10, $firstSheet->getCell('A4')->getValue());
|
||||
|
||||
self::assertEquals(DataType::TYPE_NUMERIC, $firstSheet->getCell('A5')->getDataType()); // Currency ($20)
|
||||
self::assertEquals(20, $firstSheet->getCell('A5')->getValue());
|
||||
}
|
||||
|
||||
public function testReadColors()
|
||||
{
|
||||
$spreadsheet = $this->loadOdsTestFile();
|
||||
$firstSheet = $spreadsheet->getSheet(0);
|
||||
|
||||
// Background color
|
||||
|
||||
$style = $firstSheet->getCell('K3')->getStyle();
|
||||
|
||||
self::assertEquals('none', $style->getFill()->getFillType());
|
||||
self::assertEquals('FFFFFFFF', $style->getFill()->getStartColor()->getARGB());
|
||||
self::assertEquals('FF000000', $style->getFill()->getEndColor()->getARGB());
|
||||
}
|
||||
|
||||
public function testReadRichText()
|
||||
{
|
||||
$spreadsheet = $this->loadOdsTestFile();
|
||||
$firstSheet = $spreadsheet->getSheet(0);
|
||||
|
||||
self::assertEquals(
|
||||
"I don't know if OOCalc supports Rich Text in the same way as Excel, " .
|
||||
'And this row should be autofit height with text wrap',
|
||||
$firstSheet->getCell('A28')->getValue()
|
||||
);
|
||||
}
|
||||
|
||||
public function testReadCellsWithRepeatedSpaces()
|
||||
{
|
||||
$spreadsheet = $this->loadDataFile();
|
||||
$firstSheet = $spreadsheet->getSheet(0);
|
||||
|
||||
self::assertEquals('This has 4 spaces before and 2 after ', $firstSheet->getCell('A8')->getValue());
|
||||
self::assertEquals('This only one after ', $firstSheet->getCell('A9')->getValue());
|
||||
self::assertEquals('Test with DIFFERENT styles and multiple spaces: ', $firstSheet->getCell('A10')->getValue());
|
||||
self::assertEquals("test with new \nLines", $firstSheet->getCell('A11')->getValue());
|
||||
}
|
||||
|
||||
public function testReadHyperlinks()
|
||||
{
|
||||
$spreadsheet = $this->loadOdsTestFile();
|
||||
$firstSheet = $spreadsheet->getSheet(0);
|
||||
|
||||
$hyperlink = $firstSheet->getCell('A29');
|
||||
|
||||
self::assertEquals(DataType::TYPE_STRING, $hyperlink->getDataType());
|
||||
self::assertEquals('PhpSpreadsheet', $hyperlink->getValue());
|
||||
self::assertEquals('https://github.com/PHPOffice/phpspreadsheet', $hyperlink->getHyperlink()->getUrl());
|
||||
}
|
||||
|
||||
// Below some test for features not implemented yet
|
||||
|
||||
public function testReadBoldItalicUnderline()
|
||||
{
|
||||
$this->markTestIncomplete('Features not implemented yet');
|
||||
|
||||
$spreadsheet = $this->loadOdsTestFile();
|
||||
$firstSheet = $spreadsheet->getSheet(0);
|
||||
|
||||
// Font styles
|
||||
|
||||
$style = $firstSheet->getCell('A1')->getStyle();
|
||||
self::assertEquals('FF000000', $style->getFont()->getColor()->getARGB());
|
||||
self::assertEquals(11, $style->getFont()->getSize());
|
||||
self::assertEquals(Font::UNDERLINE_NONE, $style->getFont()->getUnderline());
|
||||
|
||||
$style = $firstSheet->getCell('E3')->getStyle();
|
||||
self::assertEquals(Font::UNDERLINE_SINGLE, $style->getFont()->getUnderline());
|
||||
|
||||
$style = $firstSheet->getCell('E1')->getStyle();
|
||||
self::assertTrue($style->getFont()->getBold());
|
||||
self::assertTrue($style->getFont()->getItalic());
|
||||
}
|
||||
}
|
19
inc/vendor/phpoffice/phpspreadsheet/tests/PhpSpreadsheetTests/Reader/XlsxTest.php
vendored
Normal file
19
inc/vendor/phpoffice/phpspreadsheet/tests/PhpSpreadsheetTests/Reader/XlsxTest.php
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Reader;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class XlsxTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* Test load Xlsx file without cell reference.
|
||||
*/
|
||||
public function testLoadXlsxWithoutCellReference()
|
||||
{
|
||||
$filename = './data/Reader/XLSX/without_cell_reference.xlsx';
|
||||
$reader = new Xlsx();
|
||||
$reader->load($filename);
|
||||
}
|
||||
}
|
105
inc/vendor/phpoffice/phpspreadsheet/tests/PhpSpreadsheetTests/Reader/XmlTest.php
vendored
Normal file
105
inc/vendor/phpoffice/phpspreadsheet/tests/PhpSpreadsheetTests/Reader/XmlTest.php
vendored
Normal file
@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Reader;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Cell\DataType;
|
||||
use PhpOffice\PhpSpreadsheet\Reader\BaseReader;
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Xml;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class XmlTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @dataProvider providerInvalidXML
|
||||
*
|
||||
* @param mixed $filename
|
||||
*/
|
||||
public function testInvalidXML($filename)
|
||||
{
|
||||
$this->expectException(\PhpOffice\PhpSpreadsheet\Reader\Exception::class);
|
||||
|
||||
$reader = $this->getMockForAbstractClass(BaseReader::class);
|
||||
$expectedResult = 'FAILURE: Should throw an Exception rather than return a value';
|
||||
$result = $reader->securityScanFile($filename);
|
||||
self::assertEquals($expectedResult, $result);
|
||||
}
|
||||
|
||||
public function providerInvalidXML()
|
||||
{
|
||||
$tests = [];
|
||||
foreach (glob(__DIR__ . '/../../data/Reader/Xml/XEETestInvalidUTF*.xml') as $file) {
|
||||
$tests[basename($file)] = [realpath($file)];
|
||||
}
|
||||
|
||||
return $tests;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerInvalidSimpleXML
|
||||
*
|
||||
* @param $filename
|
||||
*/
|
||||
public function testInvalidSimpleXML($filename)
|
||||
{
|
||||
$this->expectException(\PhpOffice\PhpSpreadsheet\Reader\Exception::class);
|
||||
|
||||
$xmlReader = new Xml();
|
||||
$xmlReader->trySimpleXMLLoadString($filename);
|
||||
}
|
||||
|
||||
public function providerInvalidSimpleXML()
|
||||
{
|
||||
$tests = [];
|
||||
foreach (glob(__DIR__ . '/../../data/Reader/Xml/XEETestInvalidSimpleXML*.xml') as $file) {
|
||||
$tests[basename($file)] = [realpath($file)];
|
||||
}
|
||||
|
||||
return $tests;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerValidXML
|
||||
*
|
||||
* @param mixed $filename
|
||||
* @param mixed $expectedResult
|
||||
*/
|
||||
public function testValidXML($filename, $expectedResult)
|
||||
{
|
||||
$reader = $this->getMockForAbstractClass(BaseReader::class);
|
||||
$result = $reader->securityScanFile($filename);
|
||||
self::assertEquals($expectedResult, $result);
|
||||
}
|
||||
|
||||
public function providerValidXML()
|
||||
{
|
||||
$tests = [];
|
||||
foreach (glob(__DIR__ . '/../../data/Reader/Xml/XEETestValid*.xml') as $file) {
|
||||
$tests[basename($file)] = [realpath($file), file_get_contents($file)];
|
||||
}
|
||||
|
||||
return $tests;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if it can read XML Hyperlink correctly.
|
||||
*/
|
||||
public function testReadHyperlinks()
|
||||
{
|
||||
$reader = new Xml();
|
||||
$spreadsheet = $reader->load('../samples/templates/Excel2003XMLTest.xml');
|
||||
$firstSheet = $spreadsheet->getSheet(0);
|
||||
|
||||
$hyperlink = $firstSheet->getCell('L1');
|
||||
|
||||
self::assertEquals(DataType::TYPE_STRING, $hyperlink->getDataType());
|
||||
self::assertEquals('PhpSpreadsheet', $hyperlink->getValue());
|
||||
self::assertEquals('http://phpspreadsheet.readthedocs.io/', $hyperlink->getHyperlink()->getUrl());
|
||||
}
|
||||
|
||||
public function testReadWithoutStyle()
|
||||
{
|
||||
$reader = new Xml();
|
||||
$spreadsheet = $reader->load(__DIR__ . '/../../data/Reader/Xml/WithoutStyle.xml');
|
||||
self::assertSame('Test String 1', $spreadsheet->getActiveSheet()->getCell('A1')->getValue());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user