59 lines
1.5 KiB
PHP
59 lines
1.5 KiB
PHP
<?php
|
|
namespace nur\mapper\fsv;
|
|
|
|
use nur\t\TestCase;
|
|
|
|
class FsvSchemaTest extends TestCase {
|
|
const FSV_SCHEMA = [
|
|
"nom" => [10, "string"],
|
|
"prenom" => [10, "string"],
|
|
"date_nai" => [8, "date"],
|
|
"exact" => [6, "number", 2],
|
|
"approx" => [6, "number"],
|
|
];
|
|
|
|
const LINE1 = "Clain Jephté 29061975001500000153";
|
|
const ROW1 = [
|
|
"nom" => "Clain",
|
|
"prenom" => "Jephté",
|
|
"date_nai" => "29/06/1975",
|
|
"exact" => 15.0,
|
|
"approx" => 153,
|
|
];
|
|
|
|
const LINE2a = " Francoise 29051959";
|
|
const LINE2b = " Francoise 29051959 ";
|
|
const ROW2 = [
|
|
"nom" => "",
|
|
"prenom" => "Francoise",
|
|
"date_nai" => "29/05/1959",
|
|
"exact" => false,
|
|
"approx" => false,
|
|
];
|
|
|
|
private static function latin1(string $line): string {
|
|
return iconv("utf-8", "latin1", $line);
|
|
}
|
|
private static function utf8(string $line): string {
|
|
return iconv("latin1", "utf-8", $line);
|
|
}
|
|
|
|
function testParse() {
|
|
$schema = new FsvSchema(self::FSV_SCHEMA);
|
|
self::assertSame(self::ROW1
|
|
, $schema->parseRow(self::latin1(self::LINE1)));
|
|
self::assertSame(self::ROW2
|
|
, $schema->parseRow(self::latin1(self::LINE2a)));
|
|
self::assertSame(self::ROW2
|
|
, $schema->parseRow(self::latin1(self::LINE2b)));
|
|
}
|
|
|
|
function testFormat() {
|
|
$schema = new FsvSchema(self::FSV_SCHEMA);
|
|
self::assertSame(self::LINE1
|
|
, self::utf8($schema->formatLine(self::ROW1)));
|
|
self::assertSame(self::LINE2b
|
|
, self::utf8($schema->formatLine(self::ROW2)));
|
|
}
|
|
}
|