/**
  * This test is a safeguard to make sure hashes are not changed unintentionally.
  */
 public function testHashStability()
 {
     $snak = new PropertyValueSnak(new PropertyId('P1'), new StringValue('a'));
     $hash = $snak->getHash();
     // @codingStandardsIgnoreStart
     $expected = sha1('C:41:"Wikibase\\DataModel\\Snak\\PropertyValueSnak":53:{a:2:{i:0;i:1;i:1;C:22:"DataValues\\StringValue":1:{a}}}');
     // @codingStandardsIgnoreEnd
     $this->assertSame($expected, $hash);
 }
 public function invalidGuidProvider()
 {
     $qualifierSnak = new PropertyValueSnak(722, new StringValue('abc'));
     $hash = $qualifierSnak->getHash();
     return array(array('xyz', $hash), array('x$y$z', $hash));
 }
 public function validateProvider()
 {
     $p11 = new PropertyId('P11');
     $q17 = new ItemId('Q17');
     $item = new Item($q17);
     $claimGuid = $this->mockProvider->getGuidGenerator()->newGuid($q17);
     $oldSnak = new PropertyValueSnak($p11, new StringValue("old qualifier"));
     $snak = new PropertyNoValueSnak($p11);
     $qualifiers = new SnakList(array($oldSnak));
     $item->getStatements()->addNewStatement($snak, $qualifiers, null, $claimGuid);
     //NOTE: the mock validator will consider the string "INVALID" to be invalid.
     $badSnak = new PropertyValueSnak($p11, new StringValue('INVALID'));
     $brokenSnak = new PropertyValueSnak($p11, new NumberValue(23));
     $snakHash = $oldSnak->getHash();
     $cases = array();
     $cases['invalid snak value'] = array($item, $claimGuid, $badSnak, '');
     $cases['invalid snak value type'] = array($item, $claimGuid, $brokenSnak, $snakHash);
     return $cases;
 }