function runTestReport($CodeClassName)
 {
     $testClass =& new $CodeClassName();
     $testClass->test =& $this;
     $reportArray =& $testClass->getLayout();
     $report =& new ReportPaged();
     $report->Name = $reportArray->Name;
     $report->hReport = objectHandler::getHandle($report);
     $report->_Code =& $testClass;
     $report->initialize_report($reportArray);
     if (method_exists($testClass, 'getdata')) {
         $report->RecordSource = '[Array]';
         $report->_data = $testClass->getData();
     }
     if (method_exists($testClass, 'assertHtml')) {
         ob_start();
         $report->run('html');
         $s = ob_get_contents();
         ob_end_clean();
         $testClass->assertHtml($s);
     }
     $report =& new ReportPaged();
     $report->Name = $reportArray->Name;
     $report->hReport = objectHandler::getHandle($report);
     $report->_Code =& $testClass;
     $report->initialize_report($reportArray);
     if (method_exists($testClass, 'getdata')) {
         $report->RecordSource = '[Array]';
         $report->_data = $testClass->getData();
     }
     if (method_exists($testClass, 'assertPdf')) {
         ob_start();
         $report->run('testpdf');
         $s = ob_get_contents();
         ob_end_clean();
         $testClass->assertPdf($s);
     }
 }
示例#2
0
 /**
  *
  * @access public
  * @param string report's design as XML
  *
  */
 function initialize_report($strXML)
 {
     //
     // Common initialization
     //
     $res =& XMLLoader::_makeXMLTree($strXML);
     if (count($res) == 0) {
         Amber::showError('Parse error', XMLLoader::getParseError());
         die;
     }
     $xml = $res['report'];
     $this->Width = $xml['Width'];
     if (!$this->Name) {
         $this->Name = $xml['Name'];
     }
     if (isset($xml['Printer'])) {
         $prt =& $xml['Printer'];
         $this->LeftMargin = empty($prt['LeftMargin']) ? 720 : $prt['LeftMargin'];
         $this->RightMargin = empty($prt['RightMargin']) ? 720 : $prt['RightMargin'];
         $this->TopMargin = empty($prt['TopMargin']) ? 720 : $prt['TopMargin'];
         $this->BottomMargin = empty($prt['BottomMargin']) ? 720 : $prt['BottomMargin'];
         $this->Orientation = MSPageOrientation($prt['Orientation']);
         MSPageSize($prt['PaperSize'], $this->PaperSize, $this->PaperWidth, $this->PaperHeight);
     }
     if ($xml['RecordSource']) {
         $this->RecordSource = $xml['RecordSource'];
     }
     $this->hReport = objectHandler::getHandle($this);
     /*
      * Sections
      */
     $sections = array('ReportHeader', 'PageHeader', 'Detail', 'ReportFooter', 'PageFooter');
     foreach ($sections as $secName) {
         if (isset($xml[$secName])) {
             $this->{$secName} =& new Section($secName);
             $this->Sections[$secName] =& $this->{$secName};
             $this->{$secName}->load($this, $xml[$secName]);
         } else {
             $this->{$secName} =& new SectionNull($secName);
             $this->Sections[$secName] =& $this->{$secName};
             $this->{$secName}->load($this, array());
         }
     }
     /*
      * Group Sections
      */
     $groupSections = array('GroupHeaders', 'GroupFooters');
     foreach ($groupSections as $groupSecName) {
         if (is_array($xml[$groupSecName])) {
             foreach ($xml[$groupSecName] as $i => $sectionXML) {
                 $t =& $this->{$groupSecName};
                 // reference to array
                 $t[$i] =& new GroupSection($groupSecName);
                 $t[$i]->load($this, $sectionXML);
                 $this->Sections[$t[$i]->Name] =& $t[$i];
             }
         }
     }
     /*
      * in labels: change property Parent from name (string) to reference (&obj)
      */
     //FIXME: this should be moved to Control-Class (with a few parameter-changes.....)
     if (is_array($this->Controls)) {
         foreach ($this->Controls as $i => $ctrl) {
             if (isset($ctrl->Parent)) {
                 if (!isset($this->Controls[$ctrl->Parent])) {
                     Amber::showError('Internal Error', 'Referenced parent control with name="' . $ctrl->Parent . '" does not exist.');
                     die;
                 }
                 $this->Controls[$i]->Parent =& $this->Controls[$ctrl->Parent];
                 $this->Controls[$i]->Properties['Parent'] =& $this->Controls[$ctrl->Parent];
             }
         }
     }
     /*
      * Group Levels
      */
     if (is_array($xml['GroupLevels'])) {
         foreach ($xml['GroupLevels'] as $i => $levelXML) {
             $this->GroupLevels[$i] =& new GroupLevel();
             $this->GroupLevels[$i]->load($levelXML);
         }
     }
     // mirror controls and sections into user space
     $this->_Code->initialize($this);
 }