public function testGetDataValuesFromXML() { $xml = <<<'EOD' <data version="6"> <creators> <creator libraryID="1" key="AAAAAAAA" dateAdded="2009-04-13 20:43:19" dateModified="2009-04-13 20:43:19"> <firstName>A.</firstName> <lastName>Testperson</lastName> </creator> <creator libraryID="1" key="BBBBBBBB" dateAdded="2009-04-13 20:45:18" dateModified="2009-04-13 20:45:18"> <firstName>B</firstName> <lastName>Téstër</lastName> </creator> <creator libraryID="1" key="CCCCCCCC" dateAdded="2009-04-13 20:55:12" dateModified="2009-04-13 20:55:12"> <name>Center før History and New Media</name> <fieldMode>1</fieldMode> </creator> </creators> <tags> <tag libraryID="1" key="AAAAAAAA" name="Foo" dateAdded="2009-08-06 10:20:06" dateModified="2009-08-06 10:20:06"> <items>BBBBBBBB</items> </tag> </tags> </data> EOD; $xml = new SimpleXMLElement($xml); $domSXE = dom_import_simplexml($xml->creators); $doc = new DOMDocument(); $domSXE = $doc->importNode($domSXE, true); $domSXE = $doc->appendChild($domSXE); $objs = Zotero_Creators::getDataValuesFromXML($doc); usort($objs, function ($a, $b) { if ($a->lastName == $b->lastName) { return 0; } return $a->lastName < $b->lastName ? -1 : 1; }); $this->assertEquals(sizeOf($objs), 3); $this->assertEquals($objs[0]->fieldMode, 1); $this->assertEquals($objs[0]->firstName, ""); $this->assertEquals($objs[0]->lastName, "Center før History and New Media"); $this->assertEquals($objs[0]->birthYear, null); $this->assertEquals($objs[1]->fieldMode, 0); $this->assertEquals($objs[1]->firstName, "A."); $this->assertEquals($objs[1]->lastName, "Testperson"); $this->assertEquals($objs[1]->birthYear, null); $this->assertEquals($objs[2]->fieldMode, 0); $this->assertEquals($objs[2]->firstName, "B"); $this->assertEquals($objs[2]->lastName, "Téstër"); $this->assertEquals($objs[2]->birthYear, null); }