Files
predis/tests/Predis/Transaction/MultiExecStateTest.php
T
Daniele Alessandri b253bdc41e [tests] Improve the basic framework of our test suite.
We now have a base test case class for Predis (namely PredisTestCase)
grouping various commonly used utility methods shared by all of the
tests in the suite, greatly improving reusability.
2013-11-30 19:38:27 +01:00

203 lines
5.3 KiB
PHP

<?php
/*
* This file is part of the Predis package.
*
* (c) Daniele Alessandri <suppakilla@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Predis\Transaction;
use PredisTestCase;
/**
* @group realm-transaction
*/
class MultiExecStateTest extends PredisTestCase
{
/**
* @group disconnected
*/
public function testFlagsValues()
{
$this->assertSame(1, MultiExecState::INITIALIZED);
$this->assertSame(2, MultiExecState::INSIDEBLOCK);
$this->assertSame(4, MultiExecState::DISCARDED);
$this->assertSame(8, MultiExecState::CAS);
$this->assertSame(16, MultiExecState::WATCH);
}
/**
* @group disconnected
*/
public function testStateConstructorStartsWithResetState()
{
$state = new MultiExecState();
$this->assertSame(0, $state->get());
$this->assertTrue($state->isReset());
}
/**
* @group disconnected
*/
public function testCanCheckOneOrMoreStateFlags()
{
$flags = MultiExecState::INITIALIZED | MultiExecState::CAS;
$state = new MultiExecState();
$state->set($flags);
$this->assertSame($flags, $state->get());
$this->assertFalse($state->check(MultiExecState::INSIDEBLOCK));
$this->assertTrue($state->check(MultiExecState::INITIALIZED));
$this->assertTrue($state->check(MultiExecState::CAS));
$this->assertTrue($state->check($flags));
$this->assertFalse($state->check($flags | MultiExecState::INSIDEBLOCK));
}
/**
* @group disconnected
*/
public function testSettingAndGettingWholeFlags()
{
$flags = MultiExecState::INITIALIZED | MultiExecState::CAS;
$state = new MultiExecState();
$state->set($flags);
$this->assertFalse($state->check(MultiExecState::INSIDEBLOCK));
$this->assertTrue($state->check(MultiExecState::INITIALIZED));
$this->assertTrue($state->check(MultiExecState::CAS));
$this->assertSame($flags, $state->get());
}
/**
* @group disconnected
*/
public function testCanFlagSingleStates()
{
$flags = MultiExecState::INITIALIZED | MultiExecState::CAS;
$state = new MultiExecState();
$state->flag(MultiExecState::INITIALIZED);
$this->assertTrue($state->check(MultiExecState::INITIALIZED));
$this->assertFalse($state->check(MultiExecState::CAS));
$state->flag(MultiExecState::CAS);
$this->assertTrue($state->check(MultiExecState::INITIALIZED));
$this->assertTrue($state->check(MultiExecState::CAS));
$this->assertSame($flags, $state->get());
}
/**
* @group disconnected
*/
public function testCanUnflagSingleStates()
{
$state = new MultiExecState();
$state->set(MultiExecState::INITIALIZED | MultiExecState::CAS);
$this->assertTrue($state->check(MultiExecState::INITIALIZED));
$this->assertTrue($state->check(MultiExecState::CAS));
$state->unflag(MultiExecState::CAS);
$this->assertTrue($state->check(MultiExecState::INITIALIZED));
$this->assertFalse($state->check(MultiExecState::CAS));
$state->unflag(MultiExecState::INITIALIZED);
$this->assertFalse($state->check(MultiExecState::INITIALIZED));
$this->assertFalse($state->check(MultiExecState::CAS));
$this->assertTrue($state->isReset());
}
/**
* @group disconnected
*/
public function testIsInitializedMethod()
{
$state = new MultiExecState();
$this->assertFalse($state->isInitialized());
$state->set(MultiExecState::INITIALIZED);
$this->assertTrue($state->isInitialized());
}
/**
* @group disconnected
*/
public function testIsExecuting()
{
$state = new MultiExecState();
$this->assertFalse($state->isExecuting());
$state->set(MultiExecState::INSIDEBLOCK);
$this->assertTrue($state->isExecuting());
}
/**
* @group disconnected
*/
public function testIsCAS()
{
$state = new MultiExecState();
$this->assertFalse($state->isCAS());
$state->set(MultiExecState::CAS);
$this->assertTrue($state->isCAS());
}
/**
* @group disconnected
*/
public function testIsWatchAllowed()
{
$state = new MultiExecState();
$this->assertFalse($state->isWatchAllowed());
$state->flag(MultiExecState::INITIALIZED);
$this->assertTrue($state->isWatchAllowed());
$state->flag(MultiExecState::CAS);
$this->assertFalse($state->isWatchAllowed());
$state->unflag(MultiExecState::CAS);
$this->assertTrue($state->isWatchAllowed());
}
/**
* @group disconnected
*/
public function testIsWatching()
{
$state = new MultiExecState();
$this->assertFalse($state->isWatching());
$state->set(MultiExecState::WATCH);
$this->assertTrue($state->isWatching());
}
/**
* @group disconnected
*/
public function testIsDiscarded()
{
$state = new MultiExecState();
$this->assertFalse($state->isDiscarded());
$state->set(MultiExecState::DISCARDED);
$this->assertTrue($state->isDiscarded());
}
}