85 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			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",
 | 
						|
    ]));
 | 
						|
 | 
						|
  }
 | 
						|
}
 |