Example #1
0
 function testSetDifferenceStore()
 {
     $setA = RC::setAddAndReturn($this->redis, 'setA', array(0, 1, 2, 3, 4, 5, 6));
     $setB = RC::setAddAndReturn($this->redis, 'setB', array(1, 3, 4, 6, 9, 10));
     $this->assertEquals(count($setA), $this->redis->sdiffstore('setC', 'setA'));
     $this->assertTrue(RC::sameValuesInArrays($setA, $this->redis->smembers('setC')));
     $this->redis->del('setC');
     $this->assertEquals(3, $this->redis->sdiffstore('setC', 'setA', 'setB'));
     $this->assertTrue(RC::sameValuesInArrays(array_diff($setA, $setB), $this->redis->smembers('setC')));
     // non-existing keys are considered empty sets
     $this->redis->del('setC');
     $this->assertEquals(0, $this->redis->sdiffstore('setC', 'setDoesNotExist'));
     $this->assertFalse($this->redis->exists('setC'));
     $this->assertEquals(0, $this->redis->scard('setC'));
     // existing keys are replaced by SDIFFSTORE
     $this->redis->set('foo', 'bar');
     $this->assertEquals(count($setA), $this->redis->sdiffstore('foo', 'setA'));
     // wrong type
     $this->redis->set('foo', 'bar');
     RC::testForServerException($this, RC::EXCEPTION_WRONG_TYPE, p_anon("\$test", "\n            \$test->redis->sdiffstore('setA', 'foo');\n        "));
 }