/** * @covers WindowsAzure\Table\Models\Property::setValue * @covers WindowsAzure\Table\Models\Property::getValue */ public function testSetValue() { // Setup $pro = new Property(); $expected = 'wal3a'; // Test $pro->setValue($expected); // Assert $this->assertEquals($expected, $pro->getValue()); }
private function verifyinsertOrMergeEntityWorker($initialEnt, $ent, $entReturned) { $expectedProps = array(); if (!is_null($initialEnt) && $initialEnt->getPartitionKey() == $ent->getPartitionKey() && $initialEnt->getRowKey() == $ent->getRowKey()) { foreach ($initialEnt->getProperties() as $pname => $actualProp) { if (!is_null($actualProp) && !is_null($actualProp->getValue())) { $cloneProp = null; if (!is_null($actualProp)) { $cloneProp = new Property(); $cloneProp->setEdmType($actualProp->getEdmType()); $cloneProp->setValue($actualProp->getValue()); } $expectedProps[$pname] = $cloneProp; } } } foreach ($ent->getProperties() as $pname => $actualProp) { // Any properties with null values are ignored by the Merge Entity operation. // All other properties will be updated. if (!is_null($actualProp) && !is_null($actualProp->getValue())) { $cloneProp = new Property(); $cloneProp->setEdmType($actualProp->getEdmType()); $cloneProp->setValue($actualProp->getValue()); $expectedProps[$pname] = $cloneProp; } } $effectiveProps = array(); foreach ($entReturned->getProperties() as $pname => $actualProp) { // This is to work with Dev Storage, which returns items for all // columns, null valued or not. if (!is_null($actualProp) && !is_null($actualProp->getValue())) { $cloneProp = new Property(); $cloneProp->setEdmType($actualProp->getEdmType()); $cloneProp->setValue($actualProp->getValue()); $effectiveProps[$pname] = $cloneProp; } } // Compare the entities to make sure they match. $this->assertEquals($ent->getPartitionKey(), $entReturned->getPartitionKey(), 'getPartitionKey'); $this->assertEquals($ent->getRowKey(), $entReturned->getRowKey(), 'getRowKey'); $this->assertNotNull($entReturned->getEtag(), 'getEtag'); if (!is_null($ent->getEtag())) { $this->assertTrue($ent->getEtag() != $entReturned->getEtag(), 'getEtag should change after submit: initial \'' . $ent->getEtag() . '\', returned \'' . $entReturned->getEtag() . '\''); } $this->assertNotNull($entReturned->getTimestamp(), 'getTimestamp'); if (is_null($ent->getTimestamp())) { // This property will come back, so need to account for it. $expectedProps['Timestamp'] = null; } else { $this->assertEquals($ent->getTimestamp(), $entReturned->getTimestamp(), 'getTimestamp'); } $this->assertNotNull($ent->getProperties(), 'getProperties'); // Need to skip null values from the count. $this->assertEquals(count($expectedProps), count($effectiveProps), 'getProperties()'); foreach ($expectedProps as $pname => $expectedProp) { $actualProp = $effectiveProps; $actualProp = $actualProp[$pname]; $this->assertNotNull($actualProp, 'getProperties()[\'' . $pname . '\')'); if (!is_null($expectedProp)) { $this->compareProperties($pname, $actualProp, $expectedProp); } $this->assertEquals($entReturned->getProperty($pname), $actualProp, 'getProperty(\'' . $pname . '\')'); $this->assertEquals($entReturned->getPropertyValue($pname), $actualProp->getValue(), 'getPropertyValue(\'' . $pname . '\')'); } }
public function testCheckEntity() { $entity = new Entity(); $etag = 'custom $etag'; $partitionKey = 'custom partiton key'; $rowKey = 'custom rowkey'; $dates = TableServiceFunctionalTestData::getInterestingGoodDates(); $timestamp = $dates[1]; $property = new Property(); $property->setEdmType(EdmType::INT32); $property->setValue(1234); $name = 'my name'; $edmType = EdmType::STRING; $value = 'my value'; $properties = array(); $properties['goo'] = new Property(); $properties['moo'] = new Property(); $this->assertNotNull($entity, 'Default Entity'); $this->assertNull($entity->getProperties(), 'Default Entity->getProperties'); $this->assertNull($entity->getEtag(), 'Default Entity->getEtag'); $this->assertNull($entity->getPartitionKey(), 'Default Entity->getPartitionKey'); $this->assertNull($entity->getRowKey(), 'Default Entity->getRowKey'); $this->assertNull($entity->getTimestamp(), 'Default Entity->getTimestamp'); // TODO: Fails because of https://github.com/WindowsAzure/azure-sdk-for-php/issues/156 $this->assertNull($entity->getProperty('foo'), 'Default Entity->getProperty(\'foo\')'); $this->assertNull($entity->getPropertyValue('foo'), 'Default Entity->tryGtPropertyValue(\'foo\')'); // Now set some things. $entity->setEtag($etag); $entity->setPartitionKey($partitionKey); $entity->setRowKey($rowKey); $entity->setTimestamp($timestamp); $this->assertEquals($etag, $entity->getEtag(), 'Default Entity->getEtag'); $this->assertEquals($partitionKey, $entity->getPartitionKey(), 'Default Entity->getPartitionKey'); $this->assertEquals($rowKey, $entity->getRowKey(), 'Default Entity->getRowKey'); $this->assertEquals($timestamp, $entity->getTimestamp(), 'Default Entity->getTimestamp'); $entity->setProperty($name, $property); $this->assertEquals($property, $entity->getProperty($name), 'Default Entity->getProperty(\'' . $name . '\')'); $entity->addProperty($name, $edmType, $value); $this->assertEquals($value, $entity->getPropertyValue($name), 'Default Entity->getPropertyValue(\'' . $name . '\')'); $this->assertEquals($edmType, $entity->getProperty($name)->getEdmType(), 'Default Entity->getProperty(\'' . $name . '\')->getEdmType'); $this->assertEquals($value, $entity->getProperty($name)->getValue(), 'Default Entity->getProperty(\'' . $name . '\')->getValue'); $this->assertTrue($property != $entity->getProperty($name), 'Default Entity->getProperty(\'' . $name . '\') changed'); $entity->setProperties($properties); $this->assertNotNull($entity->getProperties(), 'Default Entity->getProperties'); $this->assertEquals($properties, $entity->getProperties(), 'Default Entity->getProperties'); }
static function cloneEntity($initialEnt) { $ret = new Entity(); $initialProps = $initialEnt->getProperties(); $retProps = array(); foreach ($initialProps as $propName => $initialProp) { // Don't mess with the timestamp. if ($propName == 'Timestamp') { continue; } $retProp = new Property(); $retProp->setEdmType($initialProp->getEdmType()); $retProp->setValue($initialProp->getValue()); $retProps[$propName] = $retProp; } $ret->setProperties($retProps); $ret->setETag($initialEnt->getETag()); return $ret; }
public function newProperty($name, $edmType, $value) { $property = new Property(); $property->setEdmType($edmType); $property->setValue($value); $this->addProperty($name, $property); return this; }
/** * @param array $record * @param null|Entity $entity * @param array $exclude List of keys to exclude from adding to Entity * * @return Entity */ protected static function parseRecordToEntity($record = [], $entity = null, $exclude = []) { if (empty($entity)) { $entity = new Entity(); } foreach ($record as $key => $value) { if (false === array_search($key, $exclude)) { // valid types // const DATETIME = 'Edm.DateTime'; // const BINARY = 'Edm.Binary'; // const GUID = 'Edm.Guid'; $edmType = EdmType::STRING; switch (gettype($value)) { case 'boolean': $edmType = EdmType::BOOLEAN; break; case 'double': case 'float': $edmType = EdmType::DOUBLE; break; case 'integer': $edmType = $value > 2147483647 ? EdmType::INT64 : EdmType::INT32; break; } if ($entity->getProperty($key)) { $prop = new Property(); $prop->setEdmType($edmType); $prop->setValue($value); $entity->setProperty($key, $prop); } else { $entity->addProperty($key, $edmType, $value); } } } return $entity; }
/** * @covers WindowsAzure\Table\Models\Entity::addProperty */ public function testAddProperty() { // Setup $entity = new Entity(); $name = 'test'; $expected = new Property(); $edmType = EdmType::STRING; $value = '01231232290234210'; $expected->setEdmType($edmType); $expected->setValue($value); // Test $entity->addProperty($name, $edmType, $value); // Assert $this->assertEquals($expected, $entity->getProperty($name)); }
/** * Creates new entity property. * * @param string $name The property name. * @param string $edmType The property edm type. * @param mix $value The property value. * * @return none */ public function addProperty($name, $edmType, $value) { $p = new Property(); $p->setEdmType($edmType); $p->setValue($value); $this->setProperty($name, $p); }