Merge pull request #164 from parsecsv/composer-validate

Quality improvement, but no bug fixes or new features
This commit is contained in:
susgo
2019-02-24 05:47:39 +01:00
committed by GitHub
18 changed files with 67 additions and 65 deletions

View File

@@ -1,15 +1,20 @@
language: php
php:
- 7.3
- 7.2
- 7.1
- 7.0
- 5.6
- 5.5
before_install:
- composer update
script:
- phpunit --version
- phpunit --configuration tests/phpunit.xml
- composer validate
- vendor/bin/phpunit --version
- vendor/bin/phpunit --configuration tests/phpunit.xml
notifications:
email:

View File

@@ -20,14 +20,14 @@
"homepage": "https://github.com/Fonata"
}
],
"autoload":{
"psr-4":{
"autoload": {
"psr-4": {
"ParseCsv\\": "src",
"ParseCsv\\extensions\\": "src\\extensions"
}
},
"autoload-dev":{
"psr-4":{
"autoload-dev": {
"psr-4": {
"ParseCsv\\tests\\": "tests"
}
},
@@ -40,6 +40,11 @@
"suggest": {
"illuminate/support": "Fluent array interface for map functions"
},
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"support": {
"issues": "https://github.com/parsecsv/parsecsv-for-php/issues",
"source": "https://github.com/parsecsv/parsecsv-for-php"

View File

@@ -3,6 +3,7 @@
# include parseCSV class.
require __DIR__ . '/../vendor/autoload.php';
use ParseCsv\Csv;

View File

@@ -4,6 +4,7 @@
# include parseCSV class.
require __DIR__ . '/../vendor/autoload.php';
use ParseCsv\Csv;

View File

@@ -3,6 +3,7 @@
# include parseCSV class.
require __DIR__ . '/../vendor/autoload.php';
use ParseCsv\Csv;

View File

@@ -4,6 +4,7 @@
# include parseCSV class.
require __DIR__ . '/../vendor/autoload.php';
use ParseCsv\Csv;

View File

@@ -151,7 +151,7 @@ class Csv {
public $auto_depth = 15;
/**
* Auto Non Charts
* Auto Non Chars
* Characters that should be ignored when attempting to auto-detect delimiter
*
* @var string
@@ -287,7 +287,7 @@ class Csv {
/**
* Data
* Two dimensional array of CSV data
* Two-dimensional array of CSV data
*
* @var array
*/
@@ -299,7 +299,7 @@ class Csv {
* Constructor
* Class constructor
*
* @param string|null $input The CSV string or a direct filepath
* @param string|null $input The CSV string or a direct file path
* @param integer|null $offset Number of rows to ignore from the
* beginning of the data
* @param integer|null $limit Limits the number of returned rows
@@ -355,7 +355,7 @@ class Csv {
* Parse
* Parse a CSV file or string
*
* @param string|null $input The CSV string or a direct filepath
* @param string|null $input The CSV string or a direct file path
* @param integer $offset Number of rows to ignore from the
* beginning of the data
* @param integer $limit Limits the number of returned rows to

View File

@@ -1,9 +1,9 @@
<?php
namespace ParseCsv\enums;
use ReflectionClass;
abstract class AbstractEnum {
/**
* Creates a new value of some type
*
@@ -11,15 +11,14 @@ abstract class AbstractEnum {
*
* @throws \UnexpectedValueException if incompatible type is given.
*/
public function __construct($value)
{
public function __construct($value) {
if (!$this->isValid($value)) {
throw new \UnexpectedValueException("Value '$value' is not part of the enum " . get_called_class());
}
$this->value = $value;
}
public static function getConstants(){
public static function getConstants() {
$class = get_called_class();
$reflection = new \ReflectionClass($class);
@@ -33,8 +32,7 @@ abstract class AbstractEnum {
*
* @return bool
*/
public static function isValid($value)
{
public static function isValid($value) {
return in_array($value, static::getConstants(), true);
}
}

View File

@@ -19,7 +19,7 @@ class FileProcessingModeEnum {
const MODE_FILE_OVERWRITE = false;
public static function getAppendMode($mode) {
if ($mode == self::MODE_FILE_APPEND){
if ($mode == self::MODE_FILE_APPEND) {
return 'ab';
}

View File

@@ -1,8 +1,10 @@
<?php
namespace ParseCsv\enums;
class SortEnum extends AbstractEnum {
const __DEFAULT = self::SORT_TYPE_REGULAR;
const SORT_TYPE_REGULAR = 'regular';
@@ -14,11 +16,11 @@ class SortEnum extends AbstractEnum {
private static $sorting = array(
self::SORT_TYPE_REGULAR => SORT_REGULAR,
self::SORT_TYPE_STRING => SORT_STRING,
self::SORT_TYPE_NUMERIC => SORT_NUMERIC
self::SORT_TYPE_NUMERIC => SORT_NUMERIC,
);
public static function getSorting($type){
if (array_key_exists($type, self::$sorting)){
public static function getSorting($type) {
if (array_key_exists($type, self::$sorting)) {
return self::$sorting[$type];
}

View File

@@ -7,10 +7,10 @@ use ParseCsv\enums\DatatypeEnum;
trait DatatypeTrait {
/**
* Datatypes
* Datatypes of CSV data-columns
* Data Types
* Data types of CSV data-columns, keyed by the column name. Possible values
* are string, float, integer, boolean, date. See DatatypeEnum.
*
* @access public
* @var array
*/
public $data_types = [];
@@ -19,8 +19,6 @@ trait DatatypeTrait {
* Check data type for one column.
* Check for most commonly data type for one column.
*
* @access private
*
* @param array $datatypes
*
* @return string|false
@@ -47,8 +45,6 @@ trait DatatypeTrait {
*
* Requires PHP >= 5.5
*
* @access public
*
* @uses DatatypeEnum::getValidTypeFromSample
*
* @return array|bool
@@ -80,34 +76,28 @@ trait DatatypeTrait {
*
* Requires PHP >= 5.5
*
* @access public
*
* @uses DatatypeEnum::getValidTypeFromSample
*
* @return bool
*/
public function autoDetectFileHasHeading(){
if (empty($this->data)){
public function autoDetectFileHasHeading() {
if (empty($this->data)) {
throw new \UnexpectedValueException('No data set yet.');
}
if ($this->heading){
if ($this->heading) {
$firstRow = $this->titles;
} else {
$firstRow = $this->data[0];
}
$firstRow = array_filter($firstRow);
if (empty($firstRow)){
if (empty($firstRow)) {
return false;
}
$firstRowDatatype = array_map(DatatypeEnum::class . '::getValidTypeFromSample', $firstRow);
if ($this->getMostFrequentDatatypeForColumn($firstRowDatatype) !== DatatypeEnum::TYPE_STRING){
return false;
}
return true;
return $this->getMostFrequentDatatypeForColumn($firstRowDatatype) === DatatypeEnum::TYPE_STRING;
}
}

View File

@@ -8,12 +8,12 @@
namespace ParseCsv\tests\methods;
use PHPUnit\Framework\TestCase;
use ParseCsv\enums\DatatypeEnum;
use PHPUnit\Framework\TestCase;
class DatatypeTest extends TestCase
{
public function testSampleIsValidInteger(){
class DatatypeTest extends TestCase {
public function testSampleIsValidInteger() {
$this->assertEquals(DatatypeEnum::TYPE_INT, DatatypeEnum::getValidTypeFromSample('1'));
$this->assertEquals(DatatypeEnum::TYPE_INT, DatatypeEnum::getValidTypeFromSample('+1'));
$this->assertEquals(DatatypeEnum::TYPE_INT, DatatypeEnum::getValidTypeFromSample('-1'));
@@ -27,7 +27,7 @@ class DatatypeTest extends TestCase
$this->assertNotEquals(DatatypeEnum::TYPE_INT, DatatypeEnum::getValidTypeFromSample('2018-02-19'));
}
public function testSampleIsValidBool(){
public function testSampleIsValidBool() {
$this->assertEquals(DatatypeEnum::TYPE_BOOL, DatatypeEnum::getValidTypeFromSample('true'));
$this->assertEquals(DatatypeEnum::TYPE_BOOL, DatatypeEnum::getValidTypeFromSample('TRUE'));
$this->assertEquals(DatatypeEnum::TYPE_BOOL, DatatypeEnum::getValidTypeFromSample('false'));
@@ -39,7 +39,7 @@ class DatatypeTest extends TestCase
$this->assertNotEquals(DatatypeEnum::TYPE_BOOL, DatatypeEnum::getValidTypeFromSample('0.1'));
}
public function testSampleIsValidFloat(){
public function testSampleIsValidFloat() {
$this->assertEquals(DatatypeEnum::TYPE_FLOAT, DatatypeEnum::getValidTypeFromSample('1.0'));
$this->assertEquals(DatatypeEnum::TYPE_FLOAT, DatatypeEnum::getValidTypeFromSample('-1.1'));
$this->assertEquals(DatatypeEnum::TYPE_FLOAT, DatatypeEnum::getValidTypeFromSample('+1,1'));
@@ -54,7 +54,7 @@ class DatatypeTest extends TestCase
$this->assertNotEquals(DatatypeEnum::TYPE_FLOAT, DatatypeEnum::getValidTypeFromSample('2018-02-19'));
}
public function testSampleIsValidDate(){
public function testSampleIsValidDate() {
$this->assertEquals(DatatypeEnum::TYPE_DATE, DatatypeEnum::getValidTypeFromSample('2018-02-19'));
$this->assertEquals(DatatypeEnum::TYPE_DATE, DatatypeEnum::getValidTypeFromSample('18-2-19'));
$this->assertEquals(DatatypeEnum::TYPE_DATE, DatatypeEnum::getValidTypeFromSample('01.02.2018'));

View File

@@ -238,9 +238,9 @@ class ParseTest extends TestCase {
/**
* Call protected/private method of a class.
*
* @param object &$object Instantiated object that we will run method on.
* @param string $methodName Method name to call
* @param array $parameters Array of parameters to pass into method.
* @param object &$object Instantiated object that we will run method on.
* @param string $methodName Method name to call
* @param array $parameters Array of parameters to pass into method.
*
* @return mixed Method return.
*/

View File

@@ -1,11 +1,11 @@
<?php
namespace ParseCsv\tests\methods;
use ParseCsv\Csv;
use PHPUnit\Framework\TestCase;
class SaveTest extends TestCase
{
class SaveTest extends TestCase {
/** @var Csv */
private $csv;

View File

@@ -75,13 +75,13 @@ class UnparseTest extends Testcase {
$this->unparseAndCompare($expected, $fields);
}
public function testUnparseDefaultFirstRowMissing(){
public function testUnparseDefaultFirstRowMissing() {
unset($this->csv->data[0]);
$expected = "column1,column2\rvalue3,value4\r";
$this->unparseAndCompare($expected);
}
public function testUnparseDefaultWithoutData(){
public function testUnparseDefaultWithoutData() {
unset($this->csv->data[0]);
unset($this->csv->data[1]);
$expected = "column1,column2\r";

View File

@@ -11,7 +11,6 @@ class BaseClass extends TestCase {
* CSV
* The parseCSV object
*
* @access protected
* @var Csv
*/
protected $csv;
@@ -19,10 +18,8 @@ class BaseClass extends TestCase {
/**
* Setup
* Setup our test environment objects
*
* @access public
*/
public function setUp() {
protected function setUp() {
$this->csv = new Csv();
}

View File

@@ -6,6 +6,7 @@ namespace ParseCsv\tests\properties;
* Tests related to the $offset property
*/
class OffsetTest extends BaseClass {
public function testOffsetOfOne() {
$this->csv->offset = 1;
$this->csv->auto(__DIR__ . '/../methods/fixtures/datatype.csv');

View File

@@ -147,25 +147,25 @@ class PublicPropertiesTest extends TestCase {
$this->assertCount($counter, $this->properties);
}
public function testDefaultSortTypeIsRegular(){
$this->assertEquals(SortEnum::SORT_TYPE_REGULAR, $this->csv->sort_type);
public function testDefaultSortTypeIsRegular() {
$this->assertEquals(SortEnum::SORT_TYPE_REGULAR, $this->csv->sort_type);
}
public function testSetSortType(){
public function testSetSortType() {
$this->csv->sort_type = 'numeric';
$this->assertEquals(SortEnum::SORT_TYPE_NUMERIC, $this->csv->sort_type);
$this->assertEquals(SortEnum::SORT_TYPE_NUMERIC, $this->csv->sort_type);
$this->csv->sort_type = 'string';
$this->assertEquals(SortEnum::SORT_TYPE_STRING, $this->csv->sort_type);
$this->assertEquals(SortEnum::SORT_TYPE_STRING, $this->csv->sort_type);
}
public function testGetSorting(){
public function testGetSorting() {
$this->csv->sort_type = 'numeric';
$sorting = SortEnum::getSorting($this->csv->sort_type);
$this->assertEquals(SORT_NUMERIC, $sorting);
$this->assertEquals(SORT_NUMERIC, $sorting);
$this->csv->sort_type = 'string';
$sorting = SortEnum::getSorting($this->csv->sort_type);
$this->assertEquals(SORT_STRING, $sorting);
$this->assertEquals(SORT_STRING, $sorting);
}
}