2
2
from pgvector import SparseVector
3
3
import pytest
4
4
from scipy .sparse import coo_array
5
+ from struct import pack
5
6
6
7
7
8
class TestSparseVector :
8
9
def test_list (self ):
9
10
vec = SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ])
10
11
assert vec .to_list () == [1 , 0 , 2 , 0 , 3 , 0 ]
11
- assert vec .to_numpy (). tolist () == [1 , 0 , 2 , 0 , 3 , 0 ]
12
+ assert np . array_equal ( vec .to_numpy (), [1 , 0 , 2 , 0 , 3 , 0 ])
12
13
assert vec .indices () == [0 , 2 , 4 ]
13
14
14
15
def test_list_dimensions (self ):
@@ -56,6 +57,7 @@ def test_equality(self):
56
57
assert SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ]) == SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ])
57
58
assert SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ]) != SparseVector ([1 , 0 , 2 , 0 , 3 , 1 ])
58
59
assert SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ]) == SparseVector ({2 : 2 , 4 : 3 , 0 : 1 , 3 : 0 }, 6 )
60
+ assert SparseVector ({}, 1 ) != SparseVector ({}, 2 )
59
61
60
62
def test_dimensions (self ):
61
63
assert SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ]).dimensions () == 6
@@ -67,8 +69,26 @@ def test_values(self):
67
69
assert SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ]).values () == [1 , 2 , 3 ]
68
70
69
71
def test_to_coo (self ):
70
- assert SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ]).to_coo ().toarray (). tolist () == [[1 , 0 , 2 , 0 , 3 , 0 ]]
72
+ assert np . array_equal ( SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ]).to_coo ().toarray (), [[1 , 0 , 2 , 0 , 3 , 0 ]])
71
73
72
74
def test_zero_vector_text (self ):
73
75
vec = SparseVector ({}, 3 )
74
76
assert vec .to_list () == SparseVector .from_text (vec .to_text ()).to_list ()
77
+
78
+ def test_from_text (self ):
79
+ vec = SparseVector .from_text ('{1:1.5,3:2,5:3}/6' )
80
+ assert vec .dimensions () == 6
81
+ assert vec .indices () == [0 , 2 , 4 ]
82
+ assert vec .values () == [1.5 , 2 , 3 ]
83
+ assert vec .to_list () == [1.5 , 0 , 2 , 0 , 3 , 0 ]
84
+ assert np .array_equal (vec .to_numpy (), [1.5 , 0 , 2 , 0 , 3 , 0 ])
85
+
86
+ def test_from_binary (self ):
87
+ data = pack ('>iii3i3f' , 6 , 3 , 0 , 0 , 2 , 4 , 1.5 , 2 , 3 )
88
+ vec = SparseVector .from_binary (data )
89
+ assert vec .dimensions () == 6
90
+ assert vec .indices () == [0 , 2 , 4 ]
91
+ assert vec .values () == [1.5 , 2 , 3 ]
92
+ assert vec .to_list () == [1.5 , 0 , 2 , 0 , 3 , 0 ]
93
+ assert np .array_equal (vec .to_numpy (), [1.5 , 0 , 2 , 0 , 3 , 0 ])
94
+ assert vec .to_binary () == data
0 commit comments