Permalink
Browse files

For some reason, class and tests for BITCOUNT were missing...

  • Loading branch information...
1 parent b94e002 commit 477056b86247a163c7207650412b5e303a82525a @nrk committed May 17, 2012
Showing with 135 additions and 0 deletions.
  1. +27 −0 lib/Predis/Commands/StringBitCount.php
  2. +108 −0 tests/Predis/Commands/StringBitCountTest.php
@@ -0,0 +1,27 @@
+<?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\Commands;
+
+/**
+ * @link http://redis.io/commands/bitcount
+ * @author Daniele Alessandri <suppakilla@gmail.com>
+ */
+class StringBitCount extends PrefixableCommand
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function getId()
+ {
+ return 'BITCOUNT';
+ }
+}
@@ -0,0 +1,108 @@
+<?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\Commands;
+
+use \PHPUnit_Framework_TestCase as StandardTestCase;
+
+/**
+ * @group commands
+ * @group realm-string
+ */
+class StringBitCountTest extends CommandTestCase
+{
+ /**
+ * {@inheritdoc}
+ */
+ protected function getExpectedCommand()
+ {
+ return 'Predis\Commands\StringBitCount';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function getExpectedId()
+ {
+ return 'BITCOUNT';
+ }
+
+ /**
+ * @group disconnected
+ */
+ public function testFilterArguments()
+ {
+ $arguments = array('key', 0, 10);
+ $expected = array('key', 0, 10);
+
+ $command = $this->getCommand();
+ $command->setArguments($arguments);
+
+ $this->assertSame($expected, $command->getArguments());
+ }
+
+ /**
+ * @group disconnected
+ */
+ public function testParseResponse()
+ {
+ $raw = 10;
+ $expected = 10;
+
+ $command = $this->getCommand();
+
+ $this->assertSame($expected, $command->parseResponse($raw));
+ }
+
+ /**
+ * @group disconnected
+ */
+ public function testPrefixKeys()
+ {
+ $arguments = array('key', 0, 10);
+ $expected = array('prefix:key', 0, 10);
+
+ $command = $this->getCommandWithArgumentsArray($arguments);
+ $command->prefixKeys('prefix:');
+
+ $this->assertSame($expected, $command->getArguments());
+ }
+
+ /**
+ * @group connected
+ */
+ public function testReturnsNumberOfBitsSet()
+ {
+ $redis = $this->getClient();
+
+ $redis->setbit('key', 1, 1);
+ $redis->setbit('key', 10, 1);
+ $redis->setbit('key', 16, 1);
+ $redis->setbit('key', 22, 1);
+ $redis->setbit('key', 32, 1);
+
+ $this->assertSame(5, $redis->bitcount('key'), 'Count bits set (without range)');
+ $this->assertSame(3, $redis->bitcount('key', 2, 4), 'Count bits set (with range)');
+ }
+
+ /**
+ * @group connected
+ * @expectedException Predis\ServerException
+ * @expectedExceptionMessage ERR Operation against a key holding the wrong kind of value
+ */
+ public function testThrowsExceptionOnWrongType()
+ {
+ $redis = $this->getClient();
+
+ $redis->lpush('key', 'list');
+ $redis->bitcount('key');
+ }
+}

0 comments on commit 477056b

Please sign in to comment.