function test_file_content_generate() { $definitionHeader = new RowDefinition(); $definitionHeader->addFieldDefinition('type', 1); $definitionHeader->addFieldDefinition('number_of_products', ['size' => 5, 'string' => ' ', 'type' => 'left']); $definitionHeader->addFieldDefinition('total_price')->size(9)->string('0')->type('left'); $definitionProduct = new RowDefinition(['type' => 1, 'name' => 20, 'price' => ['size' => 9, 'string' => '0', 'type' => 'left']]); $fileBuilder = new FileBuilder(); $fileBuilder->addRowDefinition('header', $definitionHeader); $fileBuilder->addRowDefinition('product', $definitionProduct); $fileBuilder->addRow('header', ['type' => 1, 'number_of_products' => 3, 'total_price' => 159.99]); $fileBuilder->addRow('product', ['type' => 2, 'name' => 'A Product Name 1', 'price' => 49.99]); $fileBuilder->addRow('product', ['type' => 2, 'name' => 'A Product Name 2', 'price' => 50]); $fileBuilder->addRow('product', ['type' => 2, 'name' => 'A Product Name 3', 'price' => 60]); $expected = <<<EXPECTED 1 3000159.99 2A Product Name 1 000049.99 2A Product Name 2 000000050 2A Product Name 3 000000060 EXPECTED; $this->assertEquals($expected, $fileBuilder->build()); }