private static function getNewEntity()
 {
     if (is_null(self::$curPartition) || self::$curPartition == count(self::$Partitions) - 1) {
         self::$curPartition = 0;
         self::$curRowKey = TableServiceFunctionalTestData::getNewKey();
     } else {
         self::$curPartition++;
     }
     $entity = new Entity();
     $entity->setPartitionKey(self::$Partitions[self::$curPartition]);
     $entity->setRowKey(self::$curRowKey);
     return $entity;
 }
 /**
  * @covers WindowsAzure\Table\TableRestProxy::deleteEntity
  */
 public function testDeleteEntityTableNull()
 {
     $table = TableServiceFunctionalTestData::$TEST_TABLE_NAMES[0];
     try {
         $this->restProxy->deleteEntity(null, TableServiceFunctionalTestData::getNewKey(), TableServiceFunctionalTestData::getNewKey());
         $this->fail('Expect null table name to throw');
     } catch (\InvalidArgumentException $e) {
         $this->assertEquals(sprintf(Resources::NULL_OR_EMPTY_MSG, 'table'), $e->getMessage(), 'Expect error message');
         $this->assertEquals(0, $e->getCode(), 'Expected error code');
     }
     $this->clearTable($table);
 }
 /**
  * @covers WindowsAzure\Table\TableRestProxy::updateEntity
  */
 private function createTargetEntity($table, $initialEnt, $concurType, $mutatePivot)
 {
     $targetEnt = TableServiceFunctionalTestUtils::cloneEntity($initialEnt);
     // Update the entity/table state to get the requested concurrency type error.
     switch ($concurType) {
         case ConcurType::NoKeyMatch:
             // Mutate the keys to not match.
             $targetEnt->setRowKey(TableServiceFunctionalTestData::getNewKey());
             break;
         case ConcurType::KeyMatchNoEtag:
             $targetEnt->setEtag(null);
             break;
         case ConcurType::KeyMatchEtagMismatch:
             $newEtag = $this->restProxy->updateEntity($table, $initialEnt)->getEtag();
             $initialEnt->setEtag($newEtag);
             // Now the $targetEnt Etag will not match.
             $this->assertTrue($targetEnt->getEtag() != $initialEnt->getEtag(), 'targetEnt->Etag(\'' . $targetEnt->getEtag() . '\') !=  updated->Etag(\'' . $initialEnt->getEtag() . '\')');
             break;
         case ConcurType::KeyMatchEtagMatch:
             // Don't worry here.
             break;
     }
     // Mutate the properties.
     TableServiceFunctionalTestUtils::mutateEntity($targetEnt, $mutatePivot);
     return $targetEnt;
 }
 static function mutateEntity($ent, $pivot)
 {
     if ($pivot == MutatePivot::CHANGE_VALUES) {
         self::mutateEntityChangeValues($ent);
     } else {
         if ($pivot == MutatePivot::ADD_PROPERTY) {
             $ent->addProperty('BOOLEAN' . TableServiceFunctionalTestData::getNewKey(), EdmType::BOOLEAN, true);
             $ent->addProperty('DATETIME' . TableServiceFunctionalTestData::getNewKey(), EdmType::DATETIME, Utilities::convertToDateTime('2012-01-26T18:26:19.0000473Z'));
             $ent->addProperty('DOUBLE' . TableServiceFunctionalTestData::getNewKey(), EdmType::DOUBLE, 12345678901);
             $ent->addProperty('GUID' . TableServiceFunctionalTestData::getNewKey(), EdmType::GUID, '90ab64d6-d3f8-49ec-b837-b8b5b6367b74');
             $ent->addProperty('INT32' . TableServiceFunctionalTestData::getNewKey(), EdmType::INT32, 23);
             $ent->addProperty('INT64' . TableServiceFunctionalTestData::getNewKey(), EdmType::INT64, '-1');
             $ent->addProperty('STRING' . TableServiceFunctionalTestData::getNewKey(), EdmType::STRING, 'this is a test!');
         } else {
             if ($pivot == MutatePivot::REMOVE_PROPERTY) {
                 $propToRemove = null;
                 foreach ($ent->getProperties() as $propName => $propValue) {
                     // Don't mess with the keys.
                     if ($propName == 'PartitionKey' || $propName == 'RowKey' || $propName == 'Timestamp') {
                         continue;
                     }
                     $propToRemove = $propName;
                     break;
                 }
                 $props = $ent->getProperties();
                 unset($props[$propToRemove]);
             } else {
                 if ($pivot == MutatePivot::NULL_PROPERTY) {
                     foreach ($ent->getProperties() as $propName => $propValue) {
                         // Don't mess with the keys.
                         if ($propName == 'PartitionKey' || $propName == 'RowKey' || $propName == 'Timestamp') {
                             continue;
                         }
                         $propValue->setValue(null);
                     }
                 }
             }
         }
     }
 }