<?php 
/** 
 * File Test 
 *  
 * @link        https://github.com/picamator/SplitCSV 
 * @license     http://opensource.org/licenses/BSD-3-Clause New BSD License 
 */ 
 
namespace SplitCSV; 
 
class FileTest extends BaseTest 
{ 
    /** 
     * @dataProvider    providerSplitBy 
     * @param string    $source_path 
     * @param string    $destination_path 
     * @param \SplitCSV\Rule\RuleInterface  $rule 
     * @param integer   $exptected_parts 
     */ 
    public function testSplitBy($source_path, $destination_path, \SplitCSV\Rule\RuleInterface $rule, $exptected_parts) 
    { 
        // get full path 
        $source_path        = $this->getDataPath($source_path); 
        $destination_path   = $this->getDataPath($destination_path);  
           
        // create file obj and decorate them 
        $split          = new File($source_path, $destination_path); 
         
        $actual_parts   = $split->splitBy($rule); 
         
        // asserts 
        $this->assertEquals($exptected_parts, $actual_parts); 
         
        // assert real number of created files 
        $iterator   = new \DirectoryIterator($destination_path); 
        $i          = 0; 
        foreach ($iterator as $item) { 
            if(!$item->isDot()) { 
                unlink($item->getPathname());// remove files 
                $i++; 
            } 
        }    
         
        $this->assertEquals($exptected_parts, $i); 
    } 
     
    public function providerSplitBy() 
    { 
        return array( 
            array( 
                'test-10000-rows-357kb.csv', 'parts', new \SplitCSV\Rule\FileSize(array('size' => '100kb')), 4 
            ), 
             
           array( 
                'test-10000-rows-357kb.csv', 'parts', new \SplitCSV\Rule\NumberRow(array('number_row' => 10)), 1000 
           ), 
        ); 
    } 
} 
 
 |