nur-sery/nur_tests/mapper/fsv/FsvReaderTest.php

88 lines
2.1 KiB
PHP

<?php
namespace nur\mapper\fsv;
use nur\t\TestCase;
class FsvReaderTest extends TestCase {
const SCHEMA = [
"nom" => [10, "string"],
"prenom" => [10, "string"],
"date_nai" => [8, "date"],
"exact" => [6, "number", 2],
"approx" => [6, "number"],
];
function testReader1() {
$inf = fopen("php://memory", "w+b");
fwrite($inf, <<<EOT
Clain Jephte 29061975001500000153
Francoise 29051959
EOT
);
rewind($inf);
$reader = new FsvReader($inf, self::SCHEMA);
$result = iterator_to_array($reader);
self::assertSame([
[
"nom" => "Clain",
"prenom" => "Jephte",
"date_nai" => "29/06/1975",
"exact" => 15.0,
"approx" => 153,
],
[
"nom" => "",
"prenom" => "Francoise",
"date_nai" => "29/05/1959",
"exact" => false,
"approx" => false,
],
], $result);
rewind($inf);
$reader = new FsvReader($inf, self::SCHEMA);
$reader->setOutputSeq(true);
$result = iterator_to_array($reader);
self::assertSame([
["nom", "prenom", "date_nai", "exact", "approx"],
["Clain", "Jephte", "29/06/1975", 15.0, 153],
["", "Francoise", "29/05/1959", false, false],
], $result);
}
function testReader2() {
$inf = fopen(__DIR__."/latin1.fsv", "rb");
rewind($inf);
$reader = new FsvReader($inf, self::SCHEMA);
$result = iterator_to_array($reader);
self::assertSame([
[
"nom" => "Clain",
"prenom" => "Jephté",
"date_nai" => "29/06/1975",
"exact" => 15.0,
"approx" => 153,
],
[
"nom" => "",
"prenom" => "Francoise",
"date_nai" => "29/05/1959",
"exact" => false,
"approx" => false,
],
], $result);
rewind($inf);
$reader = new FsvReader($inf, self::SCHEMA);
$reader->setOutputSeq(true);
$result = iterator_to_array($reader);
self::assertSame([
["nom", "prenom", "date_nai", "exact", "approx"],
["Clain", "Jephté", "29/06/1975", 15.0, 153],
["", "Francoise", "29/05/1959", false, false],
], $result);
}
}