Splitter Test written. Doesn't pass.
[order_line_extra.git] / tests / testSplitter.php
1 <?php
2 require_once('tests/helper.php');
3 require_once('includes/splitter.inc');
4 class splitterTest extends PHPUnit_Framework_TestCase {
5         public function testConstruct() {
6                 $start_date = '2013/05/01';
7                 $end_date = '2013/05/31';
8                 $max_quantity = 6;
9                 $details = array('1' => 'details 1', '2' => 'details', '3' => 'd3');
10
11                 $splitter = new Splitter(array('detail' => $details
12                         ,'start_date'=> $start_date
13                         ,'end_date' => $end_date
14                         ,'max_quantity' => $max_quantity));
15                 $this->assertEquals($start_date, $splitter->start_date);
16                 $this->assertEquals($end_date, $splitter->end_date);
17                 $this->assertEquals($max_quantity, $splitter->max_quantity);
18                 $this->assertEquals($splitter->days(), 30);
19
20                 return $splitter;
21         }
22
23         /**
24  * @depends testConstruct
25  */
26         public function testSplit($splitter) {
27                 $this->assertSplit($splitter, 5,  0, array());
28                 $this->assertSplit($splitter, 15,  11, array());
29                 $this->assertSplit($splitter, 30,  24, array());
30                 $this->assertSplit($splitter, 10,  0
31                                 ,array("6 0  2013/05/01 2013/05/16"
32                                 ,"4 0  2013/05/16 2013/05/31"));
33                 $this->assertSplit($splitter, 18,  10
34                                 ,array(" 12 10  2013/05/01 2013/05/21"
35                                 ,"6 0  2013/05/21 2013/05/31"));
36         }
37
38         public function assertSplit(Splitter $splitter, $quantity, $quantity_dispatched, array $expected_splits) {
39                         $splits = $splitter->split(array('quantity' => $quantity, 'qty_sent' => $quantity_dispatched));
40
41                         if(empty($expected_splits)) return $this->assertEmpty($splits);
42                         foreach(array_combine($expected_splits, $splits) as $ex => $split) {
43                                 $this->assertEquals(explode(" ", $ex), array($split->quantity
44                                         ,$split->quantity_dispatched
45                                         ,$split->start_date
46                                         ,$split->end_date));
47                         
48                         }
49         }
50 }
51 ?>