public function test3()
 {
     print 'Testing documents in arkivstruktur.xml ' . PHP_EOL;
     $akivstrukturParser = new ArkivstrukturParser($this->directory, $this->documentListHandler, $this->testResultsHandler, false);
     $parser = xml_parser_create('UTF-8');
     xml_set_object($parser, $akivstrukturParser);
     // XML_OPTION_CASE_FOLDING Do not fold element names to upper case
     xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, false);
     // set function names to handle start / end tags of elements and to parse content between tags
     xml_set_element_handler($parser, "startElement", "endElement");
     xml_set_character_data_handler($parser, "cdata");
     $arkivstrukturFile = fopen(join(DIRECTORY_SEPARATOR, array($this->directory, $this->arkivstrukturFilename)), 'r');
     while ($data = fread($arkivstrukturFile, 4096)) {
         xml_parse($parser, $data, feof($arkivstrukturFile));
         flush();
     }
     fclose($arkivstrukturFile);
     xml_parser_free($parser);
     $this->numberOfDocumentsProcessed = $akivstrukturParser->getNumberOfDocumentsProcessed();
     $this->numberOfFileProcessed = $akivstrukturParser->getNumberOfFileProcessed();
     $this->numberOfRegistryEntryProcessed = $akivstrukturParser->getNumberOfRegistryEntryProcessed();
     $arkivstrukturData = $this->arkivUtrekk->getArkivstruktur();
     $numberOfFileReportedInArkivUttrekk = $arkivstrukturData->getNumberMappe();
     $numberOfRegistryEntryReportedInArkivUttrekk = $arkivstrukturData->getNumberRegistrering();
     $numberOfDocumentsReportedInArkivUttrekk = $this->arkivUtrekk->getExtractionInfo()->getAntallDokumentfiler();
     $testProperty = new TestProperty(Constants::TEST_COUNT_MAPPE);
     $documentDirectoryTest = new CheckNumberObjectsArkivutrekk(Constants::TEST_COUNT_MAPPE, $numberOfFileReportedInArkivUttrekk, $this->numberOfFileProcessed, Constants::NAME_ARKIVSTRUKTUR_XML, 'mappe', $testProperty);
     $documentDirectoryTest->runTest();
     $this->testResultsHandler->addResult($testProperty, Constants::TEST_TYPE_A7);
     print $testProperty . PHP_EOL;
     $testProperty = new TestProperty(Constants::TEST_COUNT_REGISTRERING);
     $documentDirectoryTest = new CheckNumberObjectsArkivutrekk(Constants::TEST_COUNT_REGISTRERING, $numberOfRegistryEntryReportedInArkivUttrekk, $this->numberOfRegistryEntryProcessed, Constants::NAME_ARKIVSTRUKTUR_XML, 'registrering', $testProperty);
     $documentDirectoryTest->runTest();
     $this->testResultsHandler->addResult($testProperty, Constants::TEST_TYPE_A8);
     print $testProperty . PHP_EOL;
     $testProperty = new TestProperty(Constants::TEST_COUNT_DOCUMENTS_ACTUAL);
     $documentDirectoryTest = new CheckNumberObjectsArkivutrekk(Constants::TEST_COUNT_DOCUMENTS_ACTUAL, $numberOfDocumentsReportedInArkivUttrekk, $this->numberOfDocumentsProcessed, Constants::NAME_ARKIVSTRUKTUR_XML, 'dokument', $testProperty);
     $documentDirectoryTest->runTest();
     $this->testResultsHandler->addResult($testProperty, Constants::TEST_TYPE_A5);
     print $testProperty . PHP_EOL;
 }
 public function testA8()
 {
     $this->logger->info('START test A8 : Crossreference number of <registrering> against value in arkivuttrekk.xml');
     $testProperty = new TestProperty(Constants::TEST_COUNT_MAPPE_ARKIVUTTREKK);
     try {
         if ($this->statistics === null) {
             $this->parseArkivstruktur();
         }
         $arkivstrukturInfo = $this->arkivUttrekkDetails->getArkivstruktur();
         $numberOfRegistrationReportedInArkivUttrekk = $arkivstrukturInfo->getNumberRegistrering();
         $documentDirectoryTest = new CheckNumberObjectsArkivutrekk(Constants::TEST_COUNT_MAPPE_ARKIVUTTREKK, $numberOfRegistrationReportedInArkivUttrekk, $this->statistics->getNumberOfRecordProcessed(), Constants::NAME_ARKIVSTRUKTUR_XML, 'registrering', $testProperty);
         $documentDirectoryTest->runTest();
         if ($testProperty->getTestResult() == true) {
             $this->logger->info(' RESULT The number of registrering in arkivstruktur.xml (' . $this->statistics->getNumberOfRecordProcessed() . ') equals the number in arkivuttrekk.xml (' . $numberOfRegistrationReportedInArkivUttrekk . ')');
         } else {
             $this->logger->error(' RESULT The number of registrering in arkivstruktur.xml (' . $this->statistics->getNumberOfRecordProcessed() . ') does not equal the number in arkivuttrekk.xml (' . $numberOfRegistrationReportedInArkivUttrekk . ')');
         }
         $this->testResultsHandler->addResult($testProperty, Constants::TEST_TYPE_A8);
     } catch (Exception $e) {
         $this->logger->error("Error when attempting test " . $testProperty->getDescription() . ". The following exception occured " . $e);
     }
     $this->logger->info('END test A8');
     $this->logger->info('');
 }