22from pgvector import SparseVector
33import pytest
44from scipy .sparse import coo_array
5+ from struct import pack
56
67
78class TestSparseVector :
89 def test_list (self ):
910 vec = SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ])
1011 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 ])
1213 assert vec .indices () == [0 , 2 , 4 ]
1314
1415 def test_list_dimensions (self ):
@@ -56,6 +57,7 @@ def test_equality(self):
5657 assert SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ]) == SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ])
5758 assert SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ]) != SparseVector ([1 , 0 , 2 , 0 , 3 , 1 ])
5859 assert SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ]) == SparseVector ({2 : 2 , 4 : 3 , 0 : 1 , 3 : 0 }, 6 )
60+ assert SparseVector ({}, 1 ) != SparseVector ({}, 2 )
5961
6062 def test_dimensions (self ):
6163 assert SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ]).dimensions () == 6
@@ -67,8 +69,26 @@ def test_values(self):
6769 assert SparseVector ([1 , 0 , 2 , 0 , 3 , 0 ]).values () == [1 , 2 , 3 ]
6870
6971 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 ]])
7173
7274 def test_zero_vector_text (self ):
7375 vec = SparseVector ({}, 3 )
7476 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