All Unit tests
Current file: C:\code\midiparser\src\Midi\Reporting\Printer.php
Legend: executed not executed dead code

  Coverage
  Classes Functions / Methods Lines
Total
100.00%100.00%
100.00% 1 / 1
100.00%100.00%
100.00% 12 / 12
100.00%100.00%
100.00% 80 / 80
 
Midi\Printer
100.00%100.00%
100.00% 1 / 1
100.00%100.00%
100.00% 12 / 12
100.00%100.00%
100.00% 80 / 80
 public function __construct(Formatter $formatter, Parser $parser)
100.00%100.00%
100.00% 1 / 1
100.00%100.00%
100.00% 7 / 7
 public function isParsingTrack()
100.00%100.00%
100.00% 1 / 1
100.00%100.00%
100.00% 1 / 1
 public function printAll()
100.00%100.00%
100.00% 1 / 1
100.00%100.00%
100.00% 3 / 3
 public function setParameter($key, $value)
100.00%100.00%
100.00% 1 / 1
100.00%100.00%
100.00% 2 / 2
 public function doPostProcessing(array $params = array())
100.00%100.00%
100.00% 1 / 1
100.00%100.00%
100.00% 6 / 6
 public function printNext()
100.00%100.00%
100.00% 1 / 1
100.00%100.00%
100.00% 20 / 20
 protected function printData($data)
100.00%100.00%
100.00% 1 / 1
100.00%100.00%
100.00% 2 / 2
 protected function printEvent(Event $event)
100.00%100.00%
100.00% 1 / 1
100.00%100.00%
100.00% 6 / 6
 protected function printDelta(Delta $delta)
100.00%100.00%
100.00% 1 / 1
100.00%100.00%
100.00% 6 / 6
 protected function printTrackHeader(TrackHeader $trackHeader)
100.00%100.00%
100.00% 1 / 1
100.00%100.00%
100.00% 14 / 14
 protected function printFileHeader(FileHeader $fileHeader)
100.00%100.00%
100.00% 1 / 1
100.00%100.00%
100.00% 7 / 7
 protected function printEof()
100.00%100.00%
100.00% 1 / 1
100.00%100.00%
100.00% 6 / 6


       1                 : <?php                                                                                         
       2                 :                                                                                               
       3                 :     /**                                                                                       
       4                 :      * \Midi\Reporting\Printer                                                                
       5                 :      *                                                                                        
       6                 :      * @package    Midi                                                                       
       7                 :      * @subpackage Reporting                                                                  
       8                 :      * @copyright  © 2009 Tommy Montgomery <http://phpmidiparser.com/>                        
       9                 :      * @since      1.0                                                                        
      10                 :      */                                                                                       
      11                 :                                                                                               
      12                 :     namespace Midi\Reporting;                                                                 
      13                 :                                                                                               
      14                 :     use \Midi\Delta;                                                                          
      15                 :     use \Midi\TrackHeader;                                                                    
      16                 :     use \Midi\FileHeader;                                                                     
      17                 :     use \Midi\Event;                                                                          
      18                 :     use \Midi\Parsing\Parser;                                                                 
      19                 :                                                                                               
      20                 :     /**                                                                                       
      21                 :      * Default printer for parse results                                                      
      22                 :      *                                                                                        
      23                 :      * This class handles the output created by a                                             
      24                 :      * {@link Formatter}.                                                                     
      25                 :      *                                                                                        
      26                 :      * @package    Midi                                                                       
      27                 :      * @subpackage Reporting                                                                  
      28                 :      * @since      1.0                                                                        
      29                 :      */                                                                                       
      30                 :     class Printer {                                                                           
      31                 :                                                                                               
      32                 :         /**                                                                                   
      33                 :          * @var Formatter                                                                     
      34                 :          */                                                                                   
      35                 :         protected $formatter;                                                                 
      36                 :                                                                                               
      37                 :         /**                                                                                   
      38                 :          * @var Parser                                                                        
      39                 :          */                                                                                   
      40                 :         protected $parser;                                                                    
      41                 :                                                                                               
      42                 :         /**                                                                                   
      43                 :          * @var bool                                                                          
      44                 :          */                                                                                   
      45                 :         protected $isParsingTrack;                                                            
      46                 :                                                                                               
      47                 :         /**                                                                                   
      48                 :          * @var float                                                                         
      49                 :          */                                                                                   
      50                 :         protected $parseTime;                                                                 
      51                 :                                                                                               
      52                 :         /**                                                                                   
      53                 :          * @var float                                                                         
      54                 :          */                                                                                   
      55                 :         protected $totalTime;                                                                 
      56                 :                                                                                               
      57                 :         /**                                                                                   
      58                 :          * @var array                                                                         
      59                 :          */                                                                                   
      60                 :         protected $params;                                                                    
      61                 :                                                                                               
      62                 :         /**                                                                                   
      63                 :          * Constructor                                                                        
      64                 :          *                                                                                    
      65                 :          * @since 1.0                                                                         
      66                 :          *                                                                                    
      67                 :          * @param  Formatter $formatter                                                       
      68                 :          * @param  Parser    $parser                                                          
      69                 :          */                                                                                   
      70                 :         public function __construct(Formatter $formatter, Parser $parser) {                   
      71              13 :             $this->formatter      = $formatter;                                               
      72              13 :             $this->parser         = $parser;                                                  
      73              13 :             $this->isParsingTrack = false;                                                    
      74              13 :             $this->parseTime      = 0;                                                        
      75              13 :             $this->totalTime      = 0;                                                        
      76              13 :             $this->params         = array();                                                  
      77              13 :         }                                                                                     
      78                 :                                                                                               
      79                 :         /**                                                                                   
      80                 :          * Gets whether a track is currently being a parsed                                   
      81                 :          *                                                                                    
      82                 :          * @since 1.0                                                                         
      83                 :          *                                                                                    
      84                 :          * @return bool                                                                       
      85                 :          */                                                                                   
      86                 :         public function isParsingTrack() {                                                    
      87               2 :             return $this->isParsingTrack;                                                     
      88                 :         }                                                                                     
      89                 :                                                                                               
      90                 :         /**                                                                                   
      91                 :          * Prints the formatted results of a complete parse                                   
      92                 :          *                                                                                    
      93                 :          * @since 1.0                                                                         
      94                 :          * @uses  printNext()                                                                 
      95                 :          * @uses  doPostProcessing()                                                          
      96                 :          */                                                                                   
      97                 :         public function printAll() {                                                          
      98               1 :             while ($this->printNext()) {}                                                     
      99                 :                                                                                               
     100               1 :             $this->doPostProcessing($this->params);                                           
     101               1 :         }                                                                                     
     102                 :                                                                                               
     103                 :         /**                                                                                   
     104                 :          * Sets a custom parameter                                                            
     105                 :          *                                                                                    
     106                 :          * @since 1.0                                                                         
     107                 :          *                                                                                    
     108                 :          *                                                                                    
     109                 :          * @param  string $key                                                                
     110                 :          * @param  string $value                                                              
     111                 :          */                                                                                   
     112                 :         public function setParameter($key, $value) {                                          
     113               2 :             $this->params[$key] = $value;                                                     
     114               2 :         }                                                                                     
     115                 :                                                                                               
     116                 :         /**                                                                                   
     117                 :          * Handles any post processing that the formatter requires                            
     118                 :          *                                                                                    
     119                 :          * @since 1.0                                                                         
     120                 :          * @uses  Formatter::getPostProcessor()                                               
     121                 :          * @uses  PostProcesor::setParamter()                                                 
     122                 :          * @uses  PostProcesor::execute()                                                     
     123                 :          *                                                                                    
     124                 :          * @param  array $params Parameters to set on the post processor                      
     125                 :          */                                                                                   
     126                 :         public function doPostProcessing(array $params = array()) {                           
     127               1 :             $processor = $this->formatter->getPostProcessor();                                
     128                 :                                                                                               
     129               1 :             foreach ($params as $key => $value) {                                             
     130               1 :                 $processor->setParameter($key, $value);                                       
     131               1 :             }                                                                                 
     132                 :                                                                                               
     133               1 :             $processor->execute();                                                            
     134               1 :         }                                                                                     
     135                 :                                                                                               
     136                 :         /**                                                                                   
     137                 :          * Parses, formats and prints the next chunk                                          
     138                 :          *                                                                                    
     139                 :          * @since 1.0                                                                         
     140                 :          * @uses  Parser::parse()                                                             
     141                 :          * @uses  printEvent()                                                                
     142                 :          * @uses  printDelta()                                                                
     143                 :          * @uses  printTrackHeader()                                                          
     144                 :          * @uses  printFileHeader()                                                           
     145                 :          * @uses  printEof()                                                                  
     146                 :          * @uses  printData()                                                                 
     147                 :          *                                                                                    
     148                 :          * @return bool true if there is more to parse, false if EOF has been reached         
     149                 :          */                                                                                   
     150                 :         public function printNext() {                                                         
     151               8 :             $totalTime        = microtime(true);                                              
     152               8 :             $parseTime        = $totalTime;                                                   
     153               8 :             $chunk            = $this->parser->parse();                                       
     154               8 :             $this->parseTime += microtime(true) - $parseTime;                                 
     155               8 :             $notEof           = true;                                                         
     156                 :                                                                                               
     157               8 :             if ($chunk !== null) {                                                            
     158               6 :                 if ($chunk instanceof Delta) {                                                
     159               1 :                     $this->printDelta($chunk);                                                
     160               6 :                 } else if ($chunk instanceof Event) {                                         
     161               1 :                     $this->printEvent($chunk);                                                
     162               5 :                 } else if ($chunk instanceof TrackHeader) {                                   
     163               2 :                     $this->printTrackHeader($chunk);                                          
     164               4 :                 } else if ($chunk instanceof FileHeader) {                                    
     165               2 :                     $this->printFileHeader($chunk);                                           
     166               2 :                 }                                                                             
     167               6 :             } else {                                                                          
     168               3 :                 $this->printEof();                                                            
     169               3 :                 $notEof = false;                                                              
     170                 :             }                                                                                 
     171                 :                                                                                               
     172               8 :             $this->totalTime += microtime(true) - $totalTime;                                 
     173                 :                                                                                               
     174               8 :             return $notEof;                                                                   
     175                 :         }                                                                                     
     176                 :                                                                                               
     177                 :         /**                                                                                   
     178                 :          * Prints the data                                                                    
     179                 :          *                                                                                    
     180                 :          * @since 1.0                                                                         
     181                 :          *                                                                                    
     182                 :          * @param  string $data                                                               
     183                 :          */                                                                                   
     184                 :         protected function printData($data) {                                                 
     185               7 :             echo $data;                                                                       
     186               7 :         }                                                                                     
     187                 :                                                                                               
     188                 :         /**                                                                                   
     189                 :          * Prints an event                                                                    
     190                 :          *                                                                                    
     191                 :          * @since 1.0                                                                         
     192                 :          * @uses  Formatter::beforeEvent()                                                    
     193                 :          * @uses  Formatter::formatEvent()                                                    
     194                 :          * @uses  Formatter::afterEvent()                                                     
     195                 :          * @uses  printData()                                                                 
     196                 :          *                                                                                    
     197                 :          * @param  Event $event                                                               
     198                 :          */                                                                                   
     199                 :         protected function printEvent(Event $event) {                                         
     200               1 :             $this->printData($this->formatter->beforeEvent($event));                          
     201               1 :             $this->printData($this->formatter->beforeChunk($event));                          
     202               1 :             $this->printData($this->formatter->formatEvent($event));                          
     203               1 :             $this->printData($this->formatter->afterChunk($event));                           
     204               1 :             $this->printData($this->formatter->afterEvent($event));                           
     205               1 :         }                                                                                     
     206                 :                                                                                               
     207                 :         /**                                                                                   
     208                 :          * Prints a delta time                                                                
     209                 :          *                                                                                    
     210                 :          * @since 1.0                                                                         
     211                 :          * @uses  Formatter::beforeDelta()                                                    
     212                 :          * @uses  Formatter::formatDelta()                                                    
     213                 :          * @uses  Formatter::afterDelta()                                                     
     214                 :          * @uses  printData()                                                                 
     215                 :          *                                                                                    
     216                 :          * @param  Delta $delta                                                               
     217                 :          */                                                                                   
     218                 :         protected function printDelta(Delta $delta) {                                         
     219               1 :             $this->printData($this->formatter->beforeDelta($delta));                          
     220               1 :             $this->printData($this->formatter->beforeChunk($delta));                          
     221               1 :             $this->printData($this->formatter->formatDelta($delta));                          
     222               1 :             $this->printData($this->formatter->afterChunk($delta));                           
     223               1 :             $this->printData($this->formatter->afterDelta($delta));                           
     224               1 :         }                                                                                     
     225                 :                                                                                               
     226                 :         /**                                                                                   
     227                 :          * Prints a track header                                                              
     228                 :          *                                                                                    
     229                 :          * @since 1.0                                                                         
     230                 :          * @uses  isParsingTrack()                                                            
     231                 :          * @uses  Formatter::afterTrack()                                                     
     232                 :          * @uses  Formatter::beforeTrack()                                                    
     233                 :          * @uses  Formatter::beforeTrackHeader()                                              
     234                 :          * @uses  Formatter::afterTrackHeader()                                               
     235                 :          * @uses  TrackHeader::getSize()                                                      
     236                 :          * @uses  printData()                                                                 
     237                 :          *                                                                                    
     238                 :          * @param  TrackHeader $trackHeader                                                   
     239                 :          */                                                                                   
     240                 :         protected function printTrackHeader(TrackHeader $trackHeader) {                       
     241               2 :             if ($this->isParsingTrack()) {                                                    
     242               1 :                 $this->printData($this->formatter->afterTrack());                             
     243               1 :             }                                                                                 
     244                 :                                                                                               
     245               2 :             $this->isParsingTrack = false;                                                    
     246                 :                                                                                               
     247               2 :             $this->printData($this->formatter->beforeTrack());                                
     248               2 :             $this->printData($this->formatter->beforeTrackHeader($trackHeader));              
     249               2 :             $this->printData($this->formatter->beforeChunk($trackHeader));                    
     250               2 :             $this->printData($this->formatter->formatTrackHeader($trackHeader));              
     251               2 :             $this->printData($this->formatter->afterChunk($trackHeader));                     
     252               2 :             $this->printData($this->formatter->afterTrackHeader($trackHeader));               
     253                 :                                                                                               
     254               2 :             if ($trackHeader->getSize() > 0) {                                                
     255               1 :                 $this->isParsingTrack = true;                                                 
     256               1 :             }                                                                                 
     257               2 :         }                                                                                     
     258                 :                                                                                               
     259                 :         /**                                                                                   
     260                 :          * Prints a file header                                                               
     261                 :          *                                                                                    
     262                 :          * @since 1.0                                                                         
     263                 :          * @uses  Formatter::beforeFile()                                                     
     264                 :          * @uses  Formatter::beforeFileHeader()                                               
     265                 :          * @uses  Formatter::formatFileHeader()                                               
     266                 :          * @uses  Formatter::afterFileHeader()                                                
     267                 :          * @uses  printData()                                                                 
     268                 :          *                                                                                    
     269                 :          * @param  FileHeader $fileHeader                                                     
     270                 :          */                                                                                   
     271                 :         protected function printFileHeader(FileHeader $fileHeader) {                          
     272               1 :             $this->printData($this->formatter->beforeFile());                                 
     273               1 :             $this->printData($this->formatter->beforeFileHeader($fileHeader));                
     274               1 :             $this->printData($this->formatter->beforeChunk($fileHeader));                     
     275               1 :             $this->printData($this->formatter->formatFileHeader($fileHeader));                
     276               1 :             $this->printData($this->formatter->afterChunk($fileHeader));                      
     277               1 :             $this->printData($this->formatter->afterFileHeader($fileHeader));                 
     278               1 :         }                                                                                     
     279                 :                                                                                               
     280                 :         /**                                                                                   
     281                 :          * Prints EOF                                                                         
     282                 :          *                                                                                    
     283                 :          * @since 1.0                                                                         
     284                 :          * @uses  isParsingTrack()                                                            
     285                 :          * @uses  Formatter::afterTrack()                                                     
     286                 :          * @uses  Formatter::afterFile()                                                      
     287                 :          * @uses  printData()                                                                 
     288                 :          */                                                                                   
     289                 :         protected function printEof() {                                                       
     290               2 :             if ($this->isParsingTrack()) {                                                    
     291               1 :                 $this->printData($this->formatter->afterTrack());                             
     292               1 :             }                                                                                 
     293                 :                                                                                               
     294               2 :             $this->printData($this->formatter->afterFile($this->parseTime, $this->totalTime));
     295               2 :             $this->isParsingTrack = false;                                                    
     296               2 :         }                                                                                     
     297                 :                                                                                               
     298                 :     }                                                                                         
     299                 :                                                                                               

Generated by PHPUnit 3.4.1 and Xdebug 2.0.5 using PHP 5.3.0 at Sun Oct 25 23:35:09 PDT 2009.