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