You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.1 KiB
PHP
123 lines
3.1 KiB
PHP
<?php
|
|
|
|
namespace CFPropertyList;
|
|
|
|
error_reporting(E_ALL|E_STRICT);
|
|
ini_set('display_errors','on');
|
|
|
|
if(!defined('LIBDIR')) {
|
|
define('LIBDIR',__DIR__.'/../classes/CFPropertyList');
|
|
}
|
|
|
|
if(!defined('TEST_BINARY_DATA_FILE')) {
|
|
define('TEST_BINARY_DATA_FILE',__DIR__.'/binary-data.plist');
|
|
define('TEST_UID_BPLIST', __DIR__ . '/uid-list.plist');
|
|
}
|
|
|
|
require_once(LIBDIR.'/CFPropertyList.php');
|
|
|
|
class BinaryParseTest extends \PHPUnit_Framework_TestCase {
|
|
public function testParseBinary() {
|
|
$plist = new CFPropertyList(TEST_BINARY_DATA_FILE);
|
|
|
|
$vals = $plist->toArray();
|
|
$this->assertEquals(count($vals),4);
|
|
|
|
$this->assertEquals($vals['names']['given-name'],'John');
|
|
$this->assertEquals($vals['names']['surname'],'Dow');
|
|
|
|
$this->assertEquals($vals['pets'][0],'Jonny');
|
|
$this->assertEquals($vals['pets'][1],'Bello');
|
|
|
|
$this->assertEquals($vals['age'],28);
|
|
$this->assertEquals($vals['birth-date'],412035803);
|
|
}
|
|
|
|
public function testParseBinaryString() {
|
|
$content = file_get_contents(TEST_BINARY_DATA_FILE);
|
|
|
|
$plist = new CFPropertyList();
|
|
$plist->parse($content);
|
|
|
|
$vals = $plist->toArray();
|
|
$this->assertEquals(count($vals),4);
|
|
|
|
$this->assertEquals($vals['names']['given-name'],'John');
|
|
$this->assertEquals($vals['names']['surname'],'Dow');
|
|
|
|
$this->assertEquals($vals['pets'][0],'Jonny');
|
|
$this->assertEquals($vals['pets'][1],'Bello');
|
|
|
|
$this->assertEquals($vals['age'],28);
|
|
$this->assertEquals($vals['birth-date'],412035803);
|
|
}
|
|
|
|
public function testParseStream() {
|
|
$plist = new CFPropertyList();
|
|
if(($fd = fopen(TEST_BINARY_DATA_FILE,"rb")) == NULL) {
|
|
throw new IOException("Error opening test data file for reading!");
|
|
}
|
|
|
|
$plist->readBinaryStream($fd);
|
|
|
|
$vals = $plist->toArray();
|
|
$this->assertEquals(count($vals),4);
|
|
|
|
$this->assertEquals($vals['names']['given-name'],'John');
|
|
$this->assertEquals($vals['names']['surname'],'Dow');
|
|
|
|
$this->assertEquals($vals['pets'][0],'Jonny');
|
|
$this->assertEquals($vals['pets'][1],'Bello');
|
|
|
|
$this->assertEquals($vals['age'],28);
|
|
$this->assertEquals($vals['birth-date'],412035803);
|
|
}
|
|
|
|
/**
|
|
* @expectedException CFPropertyList\PListException
|
|
*/
|
|
public function testEmptyString() {
|
|
$plist = new CFPropertyList();
|
|
$plist->parseBinary('');
|
|
}
|
|
|
|
public function testInvalidString() {
|
|
$catched = false;
|
|
|
|
try {
|
|
$plist = new CFPropertyList();
|
|
$plist->parseBinary('lalala');
|
|
}
|
|
catch(PListException $e) {
|
|
$catched = true;
|
|
}
|
|
|
|
if($catched == false) {
|
|
$this->fail('No exception thrown for invalid string!');
|
|
}
|
|
|
|
$catched = false;
|
|
try {
|
|
$plist = new CFPropertyList();
|
|
$plist->parseBinary('bplist00dfwefwefwef');
|
|
}
|
|
catch(PListException $e) {
|
|
return;
|
|
}
|
|
|
|
$this->fail('No exception thrown for invalid string!');
|
|
}
|
|
|
|
public function testUidPlist() {
|
|
$plist = new CFPropertyList(TEST_UID_BPLIST);
|
|
$val = $plist->toArray();
|
|
$this->assertEquals(array('test' => 1), $val);
|
|
|
|
$v = $plist->getValue()->getValue();
|
|
$this->assertTrue($v['test'] instanceof CFUid);
|
|
}
|
|
|
|
}
|
|
|
|
# eof
|