writeAll([ ["nom" => "clain", "prenom" => "jephté", "age" => 45], ["nom" => "enpion", "prenom" => "tarte", "age" => 36], ["nom" => "cool", "prenom" => "plusieurs lignes", "age" => 15], ]); self::assertSame("nom,prenom,age clain,jephté,45 enpion,tarte,36 cool,\"plusieurs lignes\",15 ", $w->getString()); } function testResource() { $w = fopen("php://memory", "w+b"); $writer = new CsvWriter($w); $writer->writeAll([ ["nom" => "clain", "prenom" => "jephté", "age" => 45], ["nom" => "enpion", "prenom" => "tarte", "age" => 36], ["nom" => "cool", "prenom" => "plusieurs lignes", "age" => 15], ]); rewind($w); self::assertSame("nom,prenom,age clain,jephté,45 enpion,tarte,36 cool,\"plusieurs lignes\",15 ", stream_get_contents($w)); } function testEmpty() { $w = new StringWriter(); $writer = new CsvWriter($w); $writer->writeAll([]); self::assertSame("", $w->getString()); $w = new StringWriter(); $writer = new CsvWriter($w); $writer->setHeaders(["nom", "prenom", "age"]); $writer->writeAll([]); self::assertSame("nom,prenom,age\n", $w->getString()); } function testMappings() { $rows = [ ["nom" => "clain", "prenom" => "jephte", "annees" => "45", "ville" => "sainte-clotilde"], ["nom" => "enpion", "prenom" => "tarte", "annees" => "36", "ville" => "missile fixe"], ]; ########################################################################### ## mappings au format chaine # tester includes + excludes + remap # ordre du mapping $w = new StringWriter(); $writer = new CsvWriter($w, [ "header_mappings" => "=prenom,annees=age,nom", ]); $writer->writeAll($rows); self::assertSame("prenom,age,nom ,45,clain ,36,enpion ", $w->getString()); # tester excludes + remap # ordre de la source $w = new StringWriter(); $writer = new CsvWriter($w, [ "header_mappings" => "=prenom,annees=age", ]); $writer->writeAll($rows); self::assertSame("nom,prenom,age,ville clain,,45,sainte-clotilde enpion,,36,\"missile fixe\" ", $w->getString()); ########################################################################### ## mappings au format tableau # tester includes + excludes + remap # ordre du mapping $w = new StringWriter(); $writer = new CsvWriter($w, [ "header_mappings" => ["prenom" => null, "annees" => "age", "nom"], ]); $writer->writeAll($rows); self::assertSame("prenom,age,nom ,45,clain ,36,enpion ", $w->getString()); # tester excludes + remap # ordre de la source $w = new StringWriter(); $writer = new CsvWriter($w, [ "header_mappings" => ["prenom" => null, "annees" => "age"], ]); $writer->writeAll($rows); self::assertSame("nom,prenom,age,ville clain,,45,sainte-clotilde enpion,,36,\"missile fixe\" ", $w->getString()); } }