88 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			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);
 | 
						|
  }
 | 
						|
}
 |