function test_read_row() { $definition = new RowDefinition(['type' => ['size' => 1, 'string' => ' ', 'type' => 'right'], 'name' => ['size' => 20, 'string' => ' ', 'type' => 'both'], 'price' => ['size' => 9, 'string' => '0', 'type' => 'left']]); $data = $definition->read('1 A Product Name 000049.99'); $expected = ['type' => '1', 'name' => ' A Product Name ', 'price' => '000049.99']; $this->assertEquals($expected, $data); }
function test_file_content_read() { $definitionHeader = new RowDefinition(['type' => 1, 'number_of_products' => 5, 'total_price' => 9]); $definitionHeader->setId('1'); $definitionProduct = new RowDefinition(['type' => 1, 'name' => 20, 'price' => 9]); $definitionProduct->setId('2'); $fileReader = new FileReader(); $fileReader->addRowDefinition('header', $definitionHeader); $fileReader->addRowDefinition('product', $definitionProduct); $expected = ['0' => ['type' => '1', 'number_of_products' => ' 3', 'total_price' => '000159.99'], '1' => ['type' => '2', 'name' => 'A Product Name 1 ', 'price' => '000049.99'], '2' => ['type' => '2', 'name' => 'A Product Name 2 ', 'price' => '000000050']]; $file = <<<FILE 1 3000159.99 2A Product Name 1 000049.99 2A Product Name 2 000000050 FILE; $this->assertEquals($expected, $fileReader->readFile($file)); }
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()); }