/** * @return Statement[] */ private function getStatements() { $statements = array(); $ranks = array(Statement::RANK_DEPRECATED, Statement::RANK_NORMAL, Statement::RANK_PREFERRED); $snaks = $this->getSnaks(); $snakList = new SnakList($snaks); $mainSnak = $snaks[0]; $statement = new Statement($mainSnak); $statement->setRank($ranks[array_rand($ranks)]); $statements[] = $statement; foreach ($snaks as $snak) { $statement = unserialize(serialize($statement)); $statement->getReferences()->addReference(new Reference(new SnakList(array($snak)))); $statement->setRank($ranks[array_rand($ranks)]); $statements[] = $statement; } $statement = unserialize(serialize($statement)); $statement->getReferences()->addReference(new Reference($snakList)); $statement->setRank($ranks[array_rand($ranks)]); $statements[] = $statement; $statement = unserialize(serialize($statement)); $statement->setQualifiers($snakList); $statement->getReferences()->addReference(new Reference($snakList)); $statement->setRank($ranks[array_rand($ranks)]); $statements[] = $statement; return $statements; }
public function deserializationProvider() { $serializations = array(); $serializations[] = array(new Statement(new PropertyNoValueSnak(42)), array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'claim')); $serializations[] = array(new Statement(new PropertyNoValueSnak(42)), array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement')); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setGuid('q42'); $serializations[] = array($statement, array('id' => 'q42', 'mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'claim')); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setRank(Statement::RANK_PREFERRED); $serializations[] = array($statement, array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'preferred')); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setRank(Statement::RANK_NORMAL); $serializations[] = array($statement, array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'normal')); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setRank(Statement::RANK_DEPRECATED); $serializations[] = array($statement, array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'deprecated')); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setQualifiers(new SnakList(array())); $serializations[] = array($statement, array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'normal')); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setQualifiers(new SnakList(array(new PropertyNoValueSnak(42)))); $serializations[] = array($statement, array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'qualifiers' => array('P42' => array(array('snaktype' => 'novalue', 'property' => 'P42'))), 'type' => 'statement', 'rank' => 'normal')); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setReferences(new ReferenceList()); $serializations[] = array($statement, array('mainsnak' => array('snaktype' => 'novalue', 'property' => "P42"), 'references' => array(), 'type' => 'statement', 'rank' => 'normal')); return $serializations; }
public function testReturnsFalseForVerboseStatementWithoutReferences() { $statement = new Statement(new PropertyValueSnak(42, new StringValue('\\o/'))); $statement->setGuid('kittens of doom'); $statement->setRank(Statement::RANK_PREFERRED); $statement->setQualifiers(new SnakList(array(new PropertyValueSnak(1, new StringValue('wee')), new PropertyValueSnak(2, new StringValue('woo')), new PropertyValueSnak(3, new StringValue('waa'))))); $filter = new ReferencedStatementFilter(); $this->assertFalse($filter->statementMatches($statement)); }
/** * @param Statement $statement * * @return Statement */ public function copy(Statement $statement) { $mainSnak = $this->copySnak($statement->getMainSnak()); $qualifiers = $this->copyQualifiers($statement->getQualifiers()); $references = $this->copyReferences($statement->getReferences()); $newStatement = new Statement($mainSnak, $qualifiers, $references); $newStatement->setRank($statement->getRank()); return $newStatement; }
/** * @dataProvider rankProvider */ public function testRankSerialization($rank) { $statement = new Statement(new PropertyNoValueSnak(new PropertyId('P42'))); $statement->setRank($rank); $factory = new SerializerFactory(new DataValueSerializer()); $statementSerializer = $factory->newStatementSerializer(); $serialization = $statementSerializer->serialize($statement); $rankSerializer = new StatementRankSerializer(); $this->assertEquals($rank, $rankSerializer->deserialize($serialization['rank']), 'Roundtrip between rank serialization and unserialization 1'); $this->assertEquals($serialization['rank'], $rankSerializer->serialize($rank), 'Roundtrip between rank serialization and unserialization 2'); }
public function findSnaksProvider() { $propertyId = new PropertyId('P1337'); $statement1 = new Statement(new PropertyValueSnak($propertyId, new StringValue('a kitten!'))); $statement1->setGuid('Q42$1'); $statement2 = new Statement(new PropertyValueSnak($propertyId, new StringValue('two kittens!!'))); $statement2->setGuid('Q42$2'); // A Statement with a lower rank which should not affect the output $statement3 = new Statement(new PropertyValueSnak($propertyId, new StringValue('three kittens!!!'))); $statement3->setGuid('Q42$3'); $statement3->setRank(Statement::RANK_DEPRECATED); $item = new Item(new ItemId('Q42')); $item->getStatements()->addStatement($statement1); $item->getStatements()->addStatement($statement2); $item->getStatements()->addStatement($statement3); $snaksNormal = array(new PropertyValueSnak($propertyId, new StringValue('a kitten!')), new PropertyValueSnak($propertyId, new StringValue('two kittens!!'))); $snakDeprecated = array(new PropertyValueSnak($propertyId, new StringValue('three kittens!!!'))); return array(array($snaksNormal, $item, new PropertyId('P1337')), array(array(), $item, new PropertyId('P90001')), array($snakDeprecated, $item, new PropertyId('P1337'), array(Statement::RANK_DEPRECATED))); }
public function serializationProvider() { $serializations = array(); $serializations[] = array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'normal'), new Statement(new PropertyNoValueSnak(42))); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setGuid('q42'); $serializations[] = array(array('id' => 'q42', 'mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'normal'), $statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setRank(Statement::RANK_PREFERRED); $serializations[] = array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'preferred'), $statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setRank(Statement::RANK_DEPRECATED); $serializations[] = array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'deprecated'), $statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setQualifiers(new SnakList(array())); $serializations[] = array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => "P42"), 'type' => 'statement', 'rank' => 'normal'), $statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setQualifiers(new SnakList(array(new PropertyNoValueSnak(42)))); $serializations[] = array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => "P42"), 'qualifiers' => array('P42' => array(array('snaktype' => 'novalue', 'property' => 'P42'))), 'qualifiers-order' => array('P42'), 'type' => 'statement', 'rank' => 'normal'), $statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setReferences(new ReferenceList(array(new Reference(array(new PropertyNoValueSnak(1)))))); $serializations[] = array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => "P42"), 'references' => array(array('hash' => 'da39a3ee5e6b4b0d3255bfef95601890afd80709', 'snaks' => array())), 'type' => 'statement', 'rank' => 'normal'), $statement); return $serializations; }
public function snaksProvider() { $statements = array(); $statements[] = array(new Statement(new PropertyNoValueSnak(42))); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setGuid('q42'); $statements[] = array($statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setRank(Statement::RANK_PREFERRED); $statements[] = array($statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setRank(Statement::RANK_DEPRECATED); $statements[] = array($statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setQualifiers(new SnakList(array())); $statements[] = array($statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setQualifiers(new SnakList(array(new PropertySomeValueSnak(42), new PropertyNoValueSnak(42), new PropertySomeValueSnak(24)))); $statements[] = array($statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setReferences(new ReferenceList(array(new Reference(array(new PropertySomeValueSnak(42), new PropertyNoValueSnak(42), new PropertySomeValueSnak(24)))))); $statements[] = array($statement); return $statements; }
/** * @param StatementList $statements * @param int $propertyId * @param string $string * @param int $rank */ private function addStatement(StatementList $statements, $propertyId, $string, $rank = Statement::RANK_NORMAL) { $statement = new Statement(new PropertyValueSnak($propertyId, new StringValue($string))); $statement->setRank($rank); $statements->addStatement($statement); }
public function testWhenNoPreferredStatements_getBestStatementsReturnsOnlyNormalOnes() { $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setRank(Statement::RANK_NORMAL); $secondStatement = new Statement(new PropertyNoValueSnak(1337)); $secondStatement->setRank(Statement::RANK_NORMAL); $thirdStatement = new Statement(new PropertyNoValueSnak(9001)); $thirdStatement->setRank(Statement::RANK_DEPRECATED); $list = new StatementList($statement, $secondStatement, $thirdStatement); $this->assertEquals(new StatementList($statement, $secondStatement), $list->getBestStatements()); }
private function newStatement() { $qualifiers = new SnakList(array(new PropertyNoValueSnak(23))); $statement = new Statement(new PropertyNoValueSnak(42), $qualifiers, new ReferenceList(array(new Reference(array(new PropertyNoValueSnak(1337)))))); $statement->setRank(Statement::RANK_NORMAL); return $statement; }
private function setRankFromSerialization(array &$serialization, Statement $statement) { if (!array_key_exists('rank', $serialization)) { return; } if (!array_key_exists($serialization['rank'], $this->rankIds)) { throw new DeserializationException('The rank ' . $serialization['rank'] . ' is not a valid rank.'); } $statement->setRank($this->rankIds[$serialization['rank']]); }