1
+ from typing import Any , List
2
+
1
3
import numpy as np
2
4
import pytest
3
5
4
- from sgkit .utils import check_array_like
6
+ from sgkit .typing import ArrayLike
7
+ from sgkit .utils import check_array_like , encode_array
5
8
6
9
7
10
def test_check_array_like ():
@@ -18,3 +21,27 @@ def test_check_array_like():
18
21
check_array_like (a , ndim = 2 )
19
22
with pytest .raises (ValueError ):
20
23
check_array_like (a , ndim = {2 , 3 })
24
+
25
+
26
+ def test_encode_array ():
27
+ def check (x : ArrayLike , values : ArrayLike , names : List [Any ]) -> None :
28
+ v , n = encode_array (x )
29
+ np .testing .assert_equal (v , values )
30
+ np .testing .assert_equal (n , names )
31
+
32
+ check ([], [], [])
33
+ check (["a" ], [0 ], ["a" ])
34
+ check (["a" , "b" ], [0 , 1 ], ["a" , "b" ])
35
+ check (["b" , "a" ], [0 , 1 ], ["b" , "a" ])
36
+ check (["a" , "b" , "b" ], [0 , 1 , 1 ], ["a" , "b" ])
37
+ check (["b" , "b" , "a" ], [0 , 0 , 1 ], ["b" , "a" ])
38
+ check (["b" , "b" , "a" , "a" ], [0 , 0 , 1 , 1 ], ["b" , "a" ])
39
+ check (["c" , "a" , "a" , "b" ], [0 , 1 , 1 , 2 ], ["c" , "a" , "b" ])
40
+ check (["b" , "b" , "c" , "c" , "c" , "a" , "a" ], [0 , 0 , 1 , 1 , 1 , 2 , 2 ], ["b" , "c" , "a" ])
41
+ check (["b" , "c" , "b" , "c" , "a" ], [0 , 1 , 0 , 1 , 2 ], ["b" , "c" , "a" ])
42
+ check ([2 , 2 , 1 , 3 , 1 , 5 , 5 , 1 ], [0 , 0 , 1 , 2 , 1 , 3 , 3 , 1 ], [2.0 , 1.0 , 3.0 , 5.0 ])
43
+ check (
44
+ [2.0 , 2.0 , 1.0 , 3.0 , 1.0 , 5.0 , 5.0 , 1.0 ],
45
+ [0 , 0 , 1 , 2 , 1 , 3 , 3 , 1 ],
46
+ [2.0 , 1.0 , 3.0 , 5.0 ],
47
+ )
0 commit comments