@@ -49,7 +49,7 @@ def create_test(case_spec):
49
49
def run_test (self ):
50
50
for test_case in case_spec .get ("tests" , []):
51
51
description = test_case ["description" ]
52
- vector_exp = test_case [ "vector" ]
52
+ vector_exp = test_case . get ( "vector" , [])
53
53
dtype_hex_exp = test_case ["dtype_hex" ]
54
54
dtype_alias_exp = test_case .get ("dtype_alias" )
55
55
padding_exp = test_case .get ("padding" , 0 )
@@ -76,17 +76,27 @@ def run_test(self):
76
76
self .assertEqual (
77
77
vector_obs .dtype , BinaryVectorDtype [dtype_alias_exp ], description
78
78
)
79
- self .assertEqual (vector_obs .data , vector_exp , description )
80
- self .assertEqual (vector_obs .padding , padding_exp , description )
81
-
79
+ if dtype_exp in [BinaryVectorDtype .FLOAT32 ]:
80
+ [
81
+ self .assertAlmostEqual (vector_obs .data [i ], vector_exp [i ], delta = 1e-5 )
82
+ for i in range (len (vector_exp ))
83
+ ]
84
+ else :
85
+ self .assertEqual (vector_obs .data , vector_exp , description )
82
86
# Test Binary Vector to BSON
83
87
vector_exp = Binary .from_vector (vector_exp , dtype_exp , padding_exp )
84
88
cB_obs = binascii .hexlify (encode ({test_key : vector_exp })).decode ().upper ()
85
89
self .assertEqual (cB_obs , canonical_bson_exp , description )
86
90
87
91
else :
88
92
with self .assertRaises ((struct .error , ValueError ), msg = description ):
93
+ # Tests Binary.from_vector
89
94
Binary .from_vector (vector_exp , dtype_exp , padding_exp )
95
+ # Tests Binary.as_vector
96
+ cB_exp = binascii .unhexlify (canonical_bson_exp .encode ("utf8" ))
97
+ decoded_doc = decode (cB_exp )
98
+ binary_obs = decoded_doc [test_key ]
99
+ binary_obs .as_vector ()
90
100
91
101
return run_test
92
102
0 commit comments