'details 1', '2' => 'details', '3' => 'd3'); $splitter = new Splitter(array('detail' => $details ,'start_date'=> $start_date ,'end_date' => $end_date ,'max_quantity' => $max_quantity)); $this->assertEquals($start_date, $splitter->start_date); $this->assertEquals($end_date, $splitter->end_date); $this->assertEquals($max_quantity, $splitter->max_quantity); $this->assertEquals($splitter->days(), 30); return $splitter; } /** * @depends testConstruct */ public function testSplit($splitter) { $this->assertSplit($splitter, 15, 15, array()); $this->assertSplit($splitter, 5, 0, array("5 0 2013/05/01 2013/05/31")); $this->assertSplit($splitter, 15, 11, array("12 11 2013/05/01 2013/05/21", "3 0 2013/05/21 2013/05/31")); $this->assertSplit($splitter, 31, 0, array("6 0 2013/05/01 2013/05/06", "6 0 2013/05/06 2013/05/11", "6 0 2013/05/11 2013/05/16", "6 0 2013/05/16 2013/05/21", "6 0 2013/05/21 2013/05/26", "1 0 2013/05/26 2013/05/31",)); $this->assertSplit($splitter, 30, 24, array("24 24 2013/05/01 2013/05/25", "6 0 2013/05/25 2013/05/31")); $this->assertSplit($splitter, 10, 0 ,array("6 0 2013/05/01 2013/05/16" ,"4 0 2013/05/16 2013/05/31")); $this->assertSplit($splitter, 18, 10 ,array("12 10 2013/05/01 2013/05/21" ,"6 0 2013/05/21 2013/05/31")); } public function assertSplit(Splitter $splitter, $quantity, $quantity_dispatched, array $expected_splits) { $splits = $splitter->split(array('quantity' => $quantity, 'qty_sent' => $quantity_dispatched)); //print_r($splits); if(empty($expected_splits)) return $this->assertEmpty($splits); $this->assertEquals(array_map(function($ex) { return explode(" ", $ex); }, $expected_splits) , array_map(function ($split) { return array($split->quantity, $split->quantity_dispatched, $split->start_date, $split->end_date); }, $splits)); } } ?>