114 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| use LAM\PDF\PDFTextSection;
 | |
| use LAM\PDF\PDFEntrySection;
 | |
| use LAM\PDF\PDFStructureReader;
 | |
| use LAM\PDF\PDFStructure;
 | |
| use LAM\PDF\PDFStructureWriter;
 | |
| 
 | |
| /*
 | |
|   This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
 | |
|   Copyright (C) 2017  Roland Gruber
 | |
| 
 | |
|   This program is free software; you can redistribute it and/or modify
 | |
|   it under the terms of the GNU General Public License as published by
 | |
|   the Free Software Foundation; either version 2 of the License, or
 | |
|   (at your option) any later version.
 | |
| 
 | |
|   This program is distributed in the hope that it will be useful,
 | |
|   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|   GNU General Public License for more details.
 | |
| 
 | |
|   You should have received a copy of the GNU General Public License
 | |
|   along with this program; if not, write to the Free Software
 | |
|   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | |
| 
 | |
| */
 | |
| 
 | |
| include_once 'lam/lib/pdfstruct.inc';
 | |
| 
 | |
| /**
 | |
|  * Reads a sample PDF structure.
 | |
|  *
 | |
|  * @author Roland Gruber
 | |
|  *
 | |
|  */
 | |
| class ReadStructureTest extends PHPUnit_Framework_TestCase {
 | |
| 
 | |
| 	/**
 | |
| 	 * Reads the sample structure.
 | |
| 	 */
 | |
| 	public function testRead() {
 | |
| 		$reader = $this->getMockBuilder('\LAM\PDF\PDFStructureReader')
 | |
| 			->setMethods(array('getFileName'))
 | |
| 			->getMock();
 | |
| 		$reader->method('getFileName')->willReturn($this->getTestFileName('test.xml'));
 | |
| 
 | |
| 		$structure = $reader->read('type', 'name');
 | |
| 		$this->assertEquals('printLogo.jpg', $structure->getLogo());
 | |
| 		$this->assertEquals('User information', $structure->getTitle());
 | |
| 		$this->assertEquals(PDFStructure::FOLDING_STANDARD, $structure->getFoldingMarks());
 | |
| 		$sections = $structure->getSections();
 | |
| 		$this->assertEquals(4, sizeof($sections));
 | |
| 		// check first section
 | |
| 		$this->assertInstanceOf(PDFEntrySection::class, $sections[0]);
 | |
| 		$this->assertFalse($sections[0]->isAttributeTitle());
 | |
| 		$this->assertEquals('Personal user information', $sections[0]->getTitle());
 | |
| 		$entries = $sections[0]->getEntries();
 | |
| 		$this->assertEquals(3, sizeof($entries));
 | |
| 		$this->assertEquals('inetOrgPerson_givenName', $entries[0]->getKey());
 | |
| 		$this->assertEquals('inetOrgPerson_sn', $entries[1]->getKey());
 | |
| 		$this->assertEquals('inetOrgPerson_street', $entries[2]->getKey());
 | |
| 		// check text section
 | |
| 		$this->assertInstanceOf(PDFTextSection::class, $sections[1]);
 | |
| 		$this->assertEquals('test text', $sections[1]->getText());
 | |
| 		// check third section
 | |
| 		$this->assertInstanceOf(PDFEntrySection::class, $sections[2]);
 | |
| 		$this->assertTrue($sections[2]->isAttributeTitle());
 | |
| 		$this->assertEquals('posixAccount_uid', $sections[2]->getPdfKey());
 | |
| 		$entries = $sections[2]->getEntries();
 | |
| 		$this->assertEquals(2, sizeof($entries));
 | |
| 		$this->assertEquals('posixAccount_homeDirectory', $entries[0]->getKey());
 | |
| 		$this->assertEquals('posixAccount_loginShell', $entries[1]->getKey());
 | |
| 		// check fourth section
 | |
| 		$this->assertInstanceOf(PDFEntrySection::class, $sections[3]);
 | |
| 		$this->assertFalse($sections[3]->isAttributeTitle());
 | |
| 		$this->assertEquals('No entries', $sections[3]->getTitle());
 | |
| 		$entries = $sections[3]->getEntries();
 | |
| 		$this->assertEquals(0, sizeof($entries));
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns the full path to the given file name.
 | |
| 	 *
 | |
| 	 * @param string $file file name
 | |
| 	 */
 | |
| 	private function getTestFileName($file) {
 | |
| 		return dirname(dirname(__FILE__)) . '/resources/pdf/' . $file;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Tests if the output is the same as the original PDF.
 | |
| 	 */
 | |
| 	public function testWrite() {
 | |
| 		$file = $this->getTestFileName('writer.xml');
 | |
| 		// read input XML
 | |
| 		$fileHandle = fopen($file, "r");
 | |
| 		$originalXML = fread($fileHandle, 1000000);
 | |
| 		fclose($fileHandle);
 | |
| 		// read structure
 | |
| 		$reader = $this->getMockBuilder('\LAM\PDF\PDFStructureReader')
 | |
| 		->setMethods(array('getFileName'))
 | |
| 		->getMock();
 | |
| 		$reader->method('getFileName')->willReturn($file);
 | |
| 		$structure = $reader->read('type', 'name');
 | |
| 		// create writer and get output XML
 | |
| 		$writer = new PDFStructureWriter();
 | |
| 		$xml = $writer->getXML($structure);
 | |
| 		// compare
 | |
| 		$this->assertEquals($originalXML, $xml);
 | |
| 	}
 | |
| 
 | |
| }
 | |
| 
 | |
| ?>
 |