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())); }
/** * @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'])); }