diff --git a/src/extensions/DatatypeTrait.php b/src/extensions/DatatypeTrait.php index 75dd4a9..9a7e610 100644 --- a/src/extensions/DatatypeTrait.php +++ b/src/extensions/DatatypeTrait.php @@ -37,7 +37,7 @@ trait DatatypeTrait { return 'integer'; } - if (preg_match('/^[+-]?([0-9]*[.])?([0-9]|[.][0-9])+$/', $value)) { + if (preg_match('/(^[+-]?$)|(^[+-]?[0-9]+([,.][0-9])?[0-9]*(e[+-]?[0-9]+)?$)/', $value)) { return 'float'; } @@ -75,12 +75,17 @@ trait DatatypeTrait { * * @access public * + * @uses getDatatypeFromString + * * @return array|bool */ public function getDatatypes() { if (empty($this->data)) { $this->data = $this->parse_string(); } + if (!is_array($this->data)) { + throw new \Exception('No data set yet.'); + } $result = []; foreach ($this->titles as $cName) { diff --git a/tests/methods/ParseTest.php b/tests/methods/ParseTest.php index 2f29049..2ea3f2e 100644 --- a/tests/methods/ParseTest.php +++ b/tests/methods/ParseTest.php @@ -137,7 +137,7 @@ class ParseTest extends TestCase * @depends testSepRowAutoDetection */ public function testGetColumnDatatypes() { - $this->csv->auto('tests/methods/fixtures/datatype.csv'); + $this->csv->auto(__DIR__ . '/fixtures/datatype.csv'); $this->csv->getDatatypes(); $expected = [ 'title' => 'string', diff --git a/tests/methods/fixtures/datatype.csv b/tests/methods/fixtures/datatype.csv index ef367b0..83e6019 100644 --- a/tests/methods/fixtures/datatype.csv +++ b/tests/methods/fixtures/datatype.csv @@ -1,5 +1,5 @@ sep=; -title;isbn;publishedAt;published;count;price; +title;isbn;publishedAt;published;count;price Красивая кулинария;5454-5587-3210;21.05.2011;true;1;10.99 The Wine Connoisseurs;2547-8548-2541;12.12.2011;TRUE;;20,33 Weißwein;1313-4545-8875;23.02.2012;false;10;10 diff --git a/tests/properties/worthless_test.php b/tests/properties/worthless_test.php index 36f036b..c41c8df 100644 --- a/tests/properties/worthless_test.php +++ b/tests/properties/worthless_test.php @@ -70,7 +70,7 @@ class DefaultValuesTest extends TestCase { * @access public */ public function test_propertiesCount() { - $this->assertCount(28, $this->properties); + $this->assertCount(29, $this->properties); } /**