85 lines
2.3 KiB
PHP
85 lines
2.3 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace nur\io\fsv;
|
||
|
|
||
|
use PHPUnit\Framework\TestCase;
|
||
|
|
||
|
class FsvSchemaTest extends TestCase {
|
||
|
protected function setUp(): void {
|
||
|
$this->schema = new FsvSchema([
|
||
|
"string" => [5],
|
||
|
"number" => [5, "number"],
|
||
|
"date6" => [6, "date"],
|
||
|
"date8" => [8, "date"],
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
/** @var FsvSchema */
|
||
|
private $schema;
|
||
|
|
||
|
function testParse() {
|
||
|
$schema = $this->schema;
|
||
|
|
||
|
$row = $schema->parseRow(" ");
|
||
|
self::assertSame("", $row["string"]);
|
||
|
self::assertFalse($row["number"]);
|
||
|
self::assertFalse($row["date6"]);
|
||
|
self::assertFalse($row["date8"]);
|
||
|
|
||
|
$row = $schema->parseRow("ABC 0001212052312052023");
|
||
|
self::assertSame("ABC", $row["string"]);
|
||
|
self::assertSame(12, $row["number"]);
|
||
|
self::assertSame("12/05/2023", $row["date6"]);
|
||
|
self::assertSame("12/05/2023", $row["date8"]);
|
||
|
|
||
|
# si nombre ou date invalides, ne pas modifier
|
||
|
$row = $schema->parseRow(" ABC00A1212AB2312AB2023");
|
||
|
self::assertSame(" ABC", $row["string"]);
|
||
|
self::assertSame("00A12", $row["number"]);
|
||
|
self::assertSame("12AB23", $row["date6"]);
|
||
|
self::assertSame("12AB2023", $row["date8"]);
|
||
|
}
|
||
|
|
||
|
function testFormat() {
|
||
|
$schema = $this->schema;
|
||
|
|
||
|
self::assertSame(" ", $schema->formatRow([
|
||
|
"string" => null,
|
||
|
"number" => null,
|
||
|
"date6" => null,
|
||
|
"date8" => null,
|
||
|
]));
|
||
|
self::assertSame(" ", $schema->formatRow([
|
||
|
"string" => false,
|
||
|
"number" => false,
|
||
|
"date6" => false,
|
||
|
"date8" => false,
|
||
|
]));
|
||
|
self::assertSame(" ", $schema->formatRow([
|
||
|
"string" => "",
|
||
|
"number" => "",
|
||
|
"date6" => "",
|
||
|
"date8" => "",
|
||
|
]));
|
||
|
self::assertSame("ABC 0001212052312052023", $schema->formatRow([
|
||
|
"string" => "ABC",
|
||
|
"number" => 12,
|
||
|
"date6" => "12/05/2023",
|
||
|
"date8" => "12/05/2023",
|
||
|
]));
|
||
|
self::assertSame(" ABC00A1212AB2312AB2023", $schema->formatRow([
|
||
|
"string" => " ABC",
|
||
|
"number" => "A12",
|
||
|
"date6" => "12AB23",
|
||
|
"date8" => "12AB2023",
|
||
|
]));
|
||
|
self::assertSame("ABCDE1234512AB2312AB2023", $schema->formatRow([
|
||
|
"string" => "ABCDEFGHIJ",
|
||
|
"number" => 123456789,
|
||
|
"date6" => "12AB23XYZT",
|
||
|
"date8" => "12AB2023XYZT",
|
||
|
]));
|
||
|
|
||
|
}
|
||
|
}
|