示例#1
0
 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());
    }