/**
  * @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;
 }
Example #6
0
 /**
  * @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));
 }
Example #8
0
 /**
  * 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);
 }