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)));
 | |
|   }
 | |
| }
 |