public function testReturnsTrueForMinimalStatementWithReferences()
 {
     $statement = new Statement(new PropertyValueSnak(42, new StringValue('\\o/')));
     $statement->setReferences(new ReferenceList(array(new Reference(array(new PropertyValueSnak(1, new StringValue('wee')))), new Reference(array(new PropertyValueSnak(2, new StringValue('woo')), new PropertyValueSnak(3, new StringValue('waa')))))));
     $filter = new ReferencedStatementFilter();
     $this->assertTrue($filter->statementMatches($statement));
 }
 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 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 provideValidateClaimSnaks()
 {
     $p1 = new PropertyId('p1');
     // numeric
     $p2 = new PropertyId('p2');
     // alphabetic
     $cases = array();
     $claim = new Statement(new PropertyNoValueSnak($p1));
     $cases[] = array($claim, 'empty claim', true);
     $claim = new Statement(new PropertyValueSnak($p1, new StringValue('12')));
     $claim->setQualifiers(new SnakList(array(new PropertyValueSnak($p2, new StringValue('abc')))));
     $claim->setReferences(new ReferenceList(array(new Reference(new SnakList(array(new PropertyValueSnak($p2, new StringValue('xyz'))))))));
     $cases[] = array($claim, 'conforming claim', true);
     $brokenClaim = clone $claim;
     $brokenClaim->setMainSnak(new PropertyValueSnak($p1, new StringValue('kittens')));
     $cases[] = array($brokenClaim, 'error in main snak', false);
     $brokenClaim = clone $claim;
     $brokenClaim->setQualifiers(new SnakList(array(new PropertyValueSnak($p2, new StringValue('333')))));
     $cases[] = array($brokenClaim, 'error in qualifier', false);
     $brokenClaim = clone $claim;
     $brokenClaim->setReferences(new ReferenceList(array(new Reference(new SnakList(array(new PropertyValueSnak($p1, new StringValue('xyz'))))))));
     $cases[] = array($brokenClaim, 'error in reference', false);
     return $cases;
 }
 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;
 }
 public function validateProvider()
 {
     $p11 = new PropertyId('P11');
     $q17 = new ItemId('Q17');
     //NOTE: the mock validator will consider the string "INVALID" to be invalid.
     $goodSnak = new PropertyValueSnak($p11, new StringValue('good'));
     $badSnak = new PropertyValueSnak($p11, new StringValue('INVALID'));
     $brokenSnak = new PropertyValueSnak($p11, new NumberValue(23));
     $guidGenerator = new GuidGenerator();
     $cases = array();
     $statement = new Statement($badSnak);
     $statement->setGuid($guidGenerator->newGuid($q17));
     $cases['invalid value in main snak'] = array($q17, $statement);
     $statement = new Statement($brokenSnak);
     $statement->setGuid($guidGenerator->newGuid($q17));
     $cases['mismatching value in main snak'] = array($q17, $statement);
     $statement = new Statement($goodSnak);
     $statement->setGuid($guidGenerator->newGuid($q17));
     $statement->setQualifiers(new SnakList(array($badSnak)));
     $cases['bad snak in qualifiers'] = array($q17, $statement);
     $statement = new Statement($goodSnak);
     $statement->setGuid($guidGenerator->newGuid($q17));
     $statement->setQualifiers(new SnakList(array($brokenSnak)));
     $cases['mismatching value in qualifier'] = array($q17, $statement);
     $statement = new Statement($goodSnak);
     $reference = new Reference(new SnakList(array($badSnak)));
     $statement->setGuid($guidGenerator->newGuid($q17));
     $statement->setReferences(new ReferenceList(array($reference)));
     $cases['bad snak in reference'] = array($q17, $statement);
     $statement = new Statement($goodSnak);
     $reference = new Reference(new SnakList(array($badSnak)));
     $statement->setGuid($guidGenerator->newGuid($q17));
     $statement->setReferences(new ReferenceList(array($reference)));
     $cases['mismatching value in reference'] = array($q17, $statement);
     return $cases;
 }
 private function getInvalidCases()
 {
     $store = WikibaseRepo::getDefaultInstance()->getEntityStore();
     $item = new Item();
     $store->saveEntity($item, 'setclaimtest', $GLOBALS['wgUser'], EDIT_NEW);
     $q17 = $item->getId();
     $property = Property::newFromType('string');
     $store->saveEntity($property, 'setclaimtest', $GLOBALS['wgUser'], EDIT_NEW);
     $p11 = $property->getId();
     $item = new Item();
     $store->saveEntity($item, 'setclaimtest', $GLOBALS['wgUser'], EDIT_NEW);
     $qx = $item->getId();
     $store->deleteEntity($qx, 'setclaimtest', $GLOBALS['wgUser']);
     $property = Property::newFromType('string');
     $store->saveEntity($property, 'setclaimtest', $GLOBALS['wgUser'], EDIT_NEW);
     $px = $property->getId();
     $store->deleteEntity($px, 'setclaimtest', $GLOBALS['wgUser']);
     $goodSnak = new PropertyValueSnak($p11, new StringValue('good'));
     $badSnak = new PropertyValueSnak($p11, new StringValue(' x '));
     $brokenSnak = new PropertyValueSnak($p11, new NumberValue(23));
     $obsoleteSnak = new PropertyValueSnak($px, new StringValue(' x '));
     $guidGenerator = new GuidGenerator();
     $cases = array();
     $statement = new Statement($badSnak);
     $statement->setGuid($guidGenerator->newGuid($q17));
     $cases['invalid value in main snak'] = array($q17, $statement, 'modification-failed');
     $statement = new Statement($brokenSnak);
     $statement->setGuid($guidGenerator->newGuid($q17));
     $cases['mismatching value in main snak'] = array($q17, $statement, 'modification-failed');
     $statement = new Statement($obsoleteSnak);
     $statement->setGuid($guidGenerator->newGuid($q17));
     $cases['obsolete snak using deleted property'] = array($q17, $statement, 'modification-failed');
     $statement = new Statement($goodSnak);
     $statement->setGuid($guidGenerator->newGuid($qx));
     $cases['good claim for deleted item'] = array($qx, $statement, 'cant-load-entity-content');
     $statement = new Statement($goodSnak);
     $statement->setGuid($guidGenerator->newGuid($q17));
     $statement->setQualifiers(new SnakList(array($badSnak)));
     $cases['bad snak in qualifiers'] = array($q17, $statement, 'modification-failed');
     $statement = new Statement($goodSnak);
     $statement->setGuid($guidGenerator->newGuid($q17));
     $statement->setQualifiers(new SnakList(array($brokenSnak)));
     $cases['mismatching value in qualifier'] = array($q17, $statement, 'modification-failed');
     $statement = new Statement($goodSnak);
     $reference = new Reference(new SnakList(array($badSnak)));
     $statement->setGuid($guidGenerator->newGuid($q17));
     $statement->setReferences(new ReferenceList(array($reference)));
     $cases['bad snak in reference'] = array($q17, $statement, 'modification-failed');
     $statement = new Statement($goodSnak);
     $reference = new Reference(new SnakList(array($badSnak)));
     $statement->setGuid($guidGenerator->newGuid($q17));
     $statement->setReferences(new ReferenceList(array($reference)));
     $cases['mismatching value in reference'] = array($q17, $statement, 'modification-failed');
     $statement = new Statement($goodSnak);
     $statement->setGuid('XXXX');
     $cases['invalid GUID'] = array($qx, $statement, 'invalid-claim');
     return $cases;
 }
 public function testFilter()
 {
     $statement1 = new Statement(new PropertyNoValueSnak(1));
     $statement2 = new Statement(new PropertyNoValueSnak(2));
     $statement3 = new Statement(new PropertyNoValueSnak(3));
     $statement4 = new Statement(new PropertyNoValueSnak(4));
     $statement2->setReferences(new ReferenceList(array(new Reference(array(new PropertyNoValueSnak(20))))));
     $statement3->setReferences(new ReferenceList(array(new Reference(array(new PropertyNoValueSnak(30))))));
     $statements = new StatementList($statement1, $statement2, $statement3, $statement4);
     $this->assertEquals(new StatementList($statement2, $statement3), $statements->filter(new ReferencedStatementFilter()));
 }
Example #9
0
 /**
  * @dataProvider instanceProvider
  */
 public function testSetReferences(Statement $statement)
 {
     $references = new ReferenceList(array(new Reference(array(new PropertyValueSnak(new PropertyId('P1'), new StringValue('a'))))));
     $statement->setReferences($references);
     $this->assertEquals($references, $statement->getReferences());
 }
 private function setReferencesFromSerialization(array &$serialization, Statement $statement)
 {
     if (!array_key_exists('references', $serialization)) {
         return;
     }
     $statement->setReferences($this->referencesDeserializer->deserialize($serialization['references']));
 }