nur-sery/nur_tests/io/fsv/FsvSchemaTest.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",
]));
}
}