/**
  * @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);
 }
Example #10
0
 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());
 }
Example #11
0
 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']]);
 }