10
10
11
11
class TestNumericEngine (object ):
12
12
13
- @pytest .mark .parametrize ('data' , [[0 , 1 , 2 ]])
14
- def test_engine_type (self , data , num_engine ):
15
- index = pd .Index (data , dtype = num_engine ._dtype )
13
+ def setup_class (cls ):
14
+ cls .data = [1 , 2 , 3 ]
15
+
16
+ def test_engine_type (self , numeric_indexing_engine ):
17
+ index = pd .Index (self .data , dtype = numeric_indexing_engine ._dtype )
16
18
if issubclass (index .dtype .type , np .signedinteger ):
17
19
assert isinstance (index ._engine , Int64Engine )
18
20
elif issubclass (index .dtype .type , np .unsignedinteger ):
@@ -22,34 +24,37 @@ def test_engine_type(self, data, num_engine):
22
24
else :
23
25
raise TypeError ("unexpected dtype {}" .format (index .dtype ))
24
26
25
- @ pytest . mark . parametrize ( 'data' , [[ 0 , 1 , 2 ]])
26
- def test_is_monotonic_ordered (self , data , num_engine ):
27
- codes = np . array ( data , dtype = num_engine . _dtype )
28
- e = num_engine ( lambda : codes , len ( codes ))
27
+ def test_is_monotonic_ordered ( self , numeric_indexing_engine ):
28
+ codes = np . array (self . data , dtype = numeric_indexing_engine . _dtype )
29
+ e = numeric_indexing_engine ( lambda : codes , len ( codes ) )
30
+
29
31
assert e .is_monotonic_increasing
30
32
assert not e .is_monotonic_decreasing
31
33
32
34
# reverse sort order
33
- codes = np .array (list (reversed (data )), dtype = num_engine ._dtype )
34
- e = num_engine (lambda : codes , len (codes ))
35
+ reversed_data = list (reversed (self .data ))
36
+ codes = np .array (reversed_data , dtype = numeric_indexing_engine ._dtype )
37
+ e = numeric_indexing_engine (lambda : codes , len (codes ))
38
+
35
39
assert not e .is_monotonic_increasing
36
40
assert e .is_monotonic_decreasing
37
41
38
- @pytest .mark .parametrize ('data' , [[1 , 0 , 2 ]])
39
- def test_is_not_monotonic_ordered (self , data , num_engine ):
40
- codes = np .array (data , dtype = num_engine ._dtype )
41
- e = num_engine (lambda : codes , len (codes ))
42
+ def test_is_not_monotonic_ordered (self , numeric_indexing_engine ):
43
+ data = [1 , 0 , 2 ]
44
+ codes = np .array (data , dtype = numeric_indexing_engine ._dtype )
45
+ e = numeric_indexing_engine (lambda : codes , len (codes ))
46
+
42
47
assert not e .is_monotonic_increasing
43
48
assert not e .is_monotonic_decreasing
44
49
45
50
@pytest .mark .parametrize ('values, expected' , [
46
51
([1 , 2 , 3 ], True ),
47
52
([1 , 1 , 2 ], False ),
48
53
])
49
- def test_is_unique (self , values , expected , num_engine ):
54
+ def test_is_unique (self , values , expected , numeric_indexing_engine ):
55
+ codes = np .array (values , dtype = numeric_indexing_engine ._dtype )
56
+ e = numeric_indexing_engine (lambda : codes , len (codes ))
50
57
51
- codes = np .array (values , dtype = num_engine ._dtype )
52
- e = num_engine (lambda : codes , len (codes ))
53
58
assert e .is_unique is expected
54
59
55
60
@pytest .mark .parametrize ('values, value, expected' , [
@@ -59,9 +64,9 @@ def test_is_unique(self, values, expected, num_engine):
59
64
([1 , 2 , 2 , 1 ], 2 , np .array ([False , True , True , False ])),
60
65
([1 , 3 , 2 ], 2 , 2 ),
61
66
])
62
- def test_get_loc (self , values , value , expected , num_engine ):
63
- codes = np .array (values , dtype = num_engine ._dtype )
64
- e = num_engine (lambda : codes , len (codes ))
67
+ def test_get_loc (self , values , value , expected , numeric_indexing_engine ):
68
+ codes = np .array (values , dtype = numeric_indexing_engine ._dtype )
69
+ e = numeric_indexing_engine (lambda : codes , len (codes ))
65
70
result = e .get_loc (value )
66
71
67
72
if isinstance (expected , np .ndarray ):
@@ -73,51 +78,55 @@ def test_get_loc(self, values, value, expected, num_engine):
73
78
([1 , 2 , 3 ], 4 , KeyError ),
74
79
([1 , 2 , 3 ], '4' , KeyError ),
75
80
])
76
- def test_get_loc_raises (self , values , value , error , num_engine ):
77
- codes = np .array (values , dtype = num_engine ._dtype )
78
- e = num_engine (lambda : codes , len (codes ))
81
+ def test_get_loc_raises (self , values , value , error ,
82
+ numeric_indexing_engine ):
83
+ codes = np .array (values , dtype = numeric_indexing_engine ._dtype )
84
+ e = numeric_indexing_engine (lambda : codes , len (codes ))
79
85
with pytest .raises (error ):
80
86
e .get_loc (value )
81
87
82
88
83
89
class TestObjectEngine (object ):
84
90
85
91
def setup_class (cls ):
92
+ cls .data = list ('abc' )
86
93
cls .dtype = object
87
94
cls .Engine = ObjectEngine
88
95
89
- @pytest .mark .parametrize ('data' , [['a' , 'b' , 'c' ]])
90
- def test_engine_type (self , data ):
91
- index = pd .Index (data )
96
+ def test_engine_type (self ):
97
+ index = pd .Index (self .data )
92
98
assert isinstance (index ._engine , self .Engine )
93
99
94
- @pytest .mark .parametrize ('data' , [['a' , 'b' , 'c' ]])
95
- def test_is_monotonic_ordered (self , data ):
96
- codes = np .array (data , dtype = self .dtype )
100
+ def test_is_monotonic_ordered (self ):
101
+ codes = np .array (self .data , dtype = self .dtype )
97
102
e = self .Engine (lambda : codes , len (codes ))
103
+
98
104
assert e .is_monotonic_increasing
99
105
assert not e .is_monotonic_decreasing
100
106
101
107
# reverse sort order
102
- codes = np .array (list (reversed (data )), dtype = self .dtype )
108
+ reversed_data = list (reversed (self .data ))
109
+ codes = np .array (reversed_data , dtype = self .dtype )
103
110
e = self .Engine (lambda : codes , len (codes ))
111
+
104
112
assert not e .is_monotonic_increasing
105
113
assert e .is_monotonic_decreasing
106
114
107
- @pytest .mark .parametrize ('data' , [['a' , 'c' , 'b' ]])
108
- def test_is_not_monotonic_ordered (self , data ):
109
- codes = np .array (data , dtype = self .dtype )
115
+ def test_is_not_monotonic_ordered (self ):
116
+ codes = np .array (list ('cab' ), dtype = self .dtype )
110
117
e = self .Engine (lambda : codes , len (codes ))
118
+
111
119
assert not e .is_monotonic_increasing
112
120
assert not e .is_monotonic_decreasing
113
121
114
122
@pytest .mark .parametrize ('values, expected' , [
115
- ([ 'a' , 'b' , 'c' ] , True ),
116
- ([ 'a' , 'a' , 'b' ] , False ),
123
+ (list ( 'abc' ) , True ),
124
+ (list ( 'aab' ) , False ),
117
125
])
118
126
def test_is_unique (self , values , expected ):
119
127
codes = np .array (values , dtype = self .dtype )
120
128
e = self .Engine (lambda : codes , len (codes ))
129
+
121
130
assert e .is_unique is expected
122
131
123
132
@pytest .mark .parametrize ('values, value, expected' , [
0 commit comments