'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, 5, 0, array()); $this->assertSplit($splitter, 15, 11, array()); $this->assertSplit($splitter, 30, 24, array()); $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)); if(empty($expected_splits)) return $this->assertEmpty($splits); foreach(array_combine($expected_splits, $splits) as $ex => $split) { $this->assertEquals(explode(" ", $ex), array($split->quantity ,$split->quantity_dispatched ,$split->start_date ,$split->end_date)); } } } ?>