test/lint/strings.rb in redis-4.0.2 vs test/lint/strings.rb in redis-4.0.3
- old
+ new
@@ -1,8 +1,11 @@
module Lint
module Strings
+ def mock(*args, &block)
+ redis_mock(*args, &block)
+ end
def test_set_and_get
r.set("foo", "s1")
assert_equal "s1", r.get("foo")
@@ -239,8 +242,107 @@
def test_strlen
r.set "foo", "lorem"
assert_equal 5, r.strlen("foo")
+ end
+
+ def test_bitfield
+ target_version('3.2.0') do
+ mock(bitfield: ->(*_) { "*2\r\n:1\r\n:0\r\n" }) do |redis|
+ assert_equal [1, 0], redis.bitfield('foo', 'INCRBY', 'i5', 100, 1, 'GET', 'u4', 0)
+ end
+ end
+ end
+
+ def test_mget
+ r.set('{1}foo', 's1')
+ r.set('{1}bar', 's2')
+
+ assert_equal %w[s1 s2], r.mget('{1}foo', '{1}bar')
+ assert_equal ['s1', 's2', nil], r.mget('{1}foo', '{1}bar', '{1}baz')
+ end
+
+ def test_mget_mapped
+ r.set('{1}foo', 's1')
+ r.set('{1}bar', 's2')
+
+ response = r.mapped_mget('{1}foo', '{1}bar')
+
+ assert_equal 's1', response['{1}foo']
+ assert_equal 's2', response['{1}bar']
+
+ response = r.mapped_mget('{1}foo', '{1}bar', '{1}baz')
+
+ assert_equal 's1', response['{1}foo']
+ assert_equal 's2', response['{1}bar']
+ assert_equal nil, response['{1}baz']
+ end
+
+ def test_mapped_mget_in_a_pipeline_returns_hash
+ r.set('{1}foo', 's1')
+ r.set('{1}bar', 's2')
+
+ result = r.pipelined do
+ r.mapped_mget('{1}foo', '{1}bar')
+ end
+
+ assert_equal({ '{1}foo' => 's1', '{1}bar' => 's2' }, result[0])
+ end
+
+ def test_mset
+ r.mset('{1}foo', 's1', '{1}bar', 's2')
+
+ assert_equal 's1', r.get('{1}foo')
+ assert_equal 's2', r.get('{1}bar')
+ end
+
+ def test_mset_mapped
+ r.mapped_mset('{1}foo' => 's1', '{1}bar' => 's2')
+
+ assert_equal 's1', r.get('{1}foo')
+ assert_equal 's2', r.get('{1}bar')
+ end
+
+ def test_msetnx
+ r.set('{1}foo', 's1')
+ assert_equal false, r.msetnx('{1}foo', 's2', '{1}bar', 's3')
+ assert_equal 's1', r.get('{1}foo')
+ assert_equal nil, r.get('{1}bar')
+
+ r.del('{1}foo')
+ assert_equal true, r.msetnx('{1}foo', 's2', '{1}bar', 's3')
+ assert_equal 's2', r.get('{1}foo')
+ assert_equal 's3', r.get('{1}bar')
+ end
+
+ def test_msetnx_mapped
+ r.set('{1}foo', 's1')
+ assert_equal false, r.mapped_msetnx('{1}foo' => 's2', '{1}bar' => 's3')
+ assert_equal 's1', r.get('{1}foo')
+ assert_equal nil, r.get('{1}bar')
+
+ r.del('{1}foo')
+ assert_equal true, r.mapped_msetnx('{1}foo' => 's2', '{1}bar' => 's3')
+ assert_equal 's2', r.get('{1}foo')
+ assert_equal 's3', r.get('{1}bar')
+ end
+
+ def test_bitop
+ with_external_encoding('UTF-8') do
+ target_version '2.5.10' do
+ r.set('foo{1}', 'a')
+ r.set('bar{1}', 'b')
+
+ r.bitop(:and, 'foo&bar{1}', 'foo{1}', 'bar{1}')
+ assert_equal "\x60", r.get('foo&bar{1}')
+ r.bitop(:or, 'foo|bar{1}', 'foo{1}', 'bar{1}')
+ assert_equal "\x63", r.get('foo|bar{1}')
+ r.bitop(:xor, 'foo^bar{1}', 'foo{1}', 'bar{1}')
+ assert_equal "\x03", r.get('foo^bar{1}')
+ r.bitop(:not, '~foo{1}', 'foo{1}')
+ assert_equal "\x9E", r.get('~foo{1}')
+ end
+ end
end
end
end