File: vismember.py

package info (click to toggle)
redis 5%3A8.0.2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 22,304 kB
  • sloc: ansic: 216,903; tcl: 51,562; sh: 4,625; perl: 4,214; cpp: 3,568; python: 2,954; makefile: 2,055; ruby: 639; javascript: 30; csh: 7
file content (47 lines) | stat: -rw-r--r-- 2,201 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from test import TestCase, generate_random_vector
import struct

class BasicVISMEMBER(TestCase):
    def getname(self):
        return "VISMEMBER basic functionality"

    def test(self):
        # Add multiple vectors to the vector set
        vec1 = generate_random_vector(4)
        vec2 = generate_random_vector(4)
        vec_bytes1 = struct.pack('4f', *vec1)
        vec_bytes2 = struct.pack('4f', *vec2)

        # Create item keys
        item1 = f'{self.test_key}:item:1'
        item2 = f'{self.test_key}:item:2'
        nonexistent_item = f'{self.test_key}:item:nonexistent'

        # Add the vectors
        self.redis.execute_command('VADD', self.test_key, 'FP32', vec_bytes1, item1)
        self.redis.execute_command('VADD', self.test_key, 'FP32', vec_bytes2, item2)

        # Test VISMEMBER with existing elements
        result1 = self.redis.execute_command('VISMEMBER', self.test_key, item1)
        assert result1 == 1, f"VISMEMBER should return 1 for existing item, got {result1}"

        result2 = self.redis.execute_command('VISMEMBER', self.test_key, item2)
        assert result2 == 1, f"VISMEMBER should return 1 for existing item, got {result2}"

        # Test VISMEMBER with non-existent element
        result3 = self.redis.execute_command('VISMEMBER', self.test_key, nonexistent_item)
        assert result3 == 0, f"VISMEMBER should return 0 for non-existent item, got {result3}"

        # Test VISMEMBER with non-existent key
        nonexistent_key = f'{self.test_key}_nonexistent'
        result4 = self.redis.execute_command('VISMEMBER', nonexistent_key, item1)
        assert result4 == 0, f"VISMEMBER should return 0 for non-existent key, got {result4}"

        # Test VISMEMBER after removing an element
        self.redis.execute_command('VREM', self.test_key, item1)
        result5 = self.redis.execute_command('VISMEMBER', self.test_key, item1)
        assert result5 == 0, f"VISMEMBER should return 0 after element removal, got {result5}"

        # Verify item2 still exists
        result6 = self.redis.execute_command('VISMEMBER', self.test_key, item2)
        assert result6 == 1, f"VISMEMBER should still return 1 for remaining item, got {result6}"