33
44from tests .base import HazelcastTestCase
55from tests .util import configure_logging , get_abs_path , random_string
6- from hazelcast .serialization .predicate import PagingPredicate , is_greater_than_or_equal_to , is_less_than_or_equal_to , \
7- is_ilike
6+ from hazelcast .serialization .predicate import paging , is_greater_than_or_equal_to , is_less_than_or_equal_to , \
7+ is_ilike , true
88from hazelcast .serialization .api import IdentifiedDataSerializable
99from hazelcast import HazelcastClient
10- from hazelcast .six import assertCountEqual
1110from hazelcast .util import ITERATION_TYPE
1211from hazelcast .core import Comparator
1312
@@ -39,24 +38,42 @@ def tearDownClass(cls):
3938 cls .client .shutdown ()
4039 cls .rc .exit ()
4140
41+ def test_with_inner_paging_predicate (self ):
42+ predicate = paging (true (), 1 )
43+
44+ with self .assertRaises (TypeError ):
45+ paging (predicate , 1 )
46+
47+ def test_with_non_positive_page_size (self ):
48+ with self .assertRaises (ValueError ):
49+ paging (true (), 0 )
50+
51+ with self .assertRaises (ValueError ):
52+ paging (true (), - 1 )
53+
54+ def test_previous_page_when_index_is_zero (self ):
55+ predicate = paging (true (), 2 )
56+ self .assertEqual (0 , predicate .previous_page ())
57+ self .assertEqual (0 , predicate .previous_page ())
58+
4259 """
4360 Tests for proxy: comparator None
4461 """
4562 def test_entry_set_with_paging_predicate (self ):
4663 self ._fill_map_simple ()
47- entry_set = self .map .entry_set (PagingPredicate (is_greater_than_or_equal_to ('this' , 3 ), 1 ))
64+ entry_set = self .map .entry_set (paging (is_greater_than_or_equal_to ('this' , 3 ), 1 ))
4865 self .assertEqual (len (entry_set ), 1 )
49- assertCountEqual ( self , entry_set [0 ], [ 'key-3' , 3 ] )
66+ self . assertEqual ( entry_set [0 ], ( 'key-3' , 3 ) )
5067
5168 def test_key_set_with_paging_predicate (self ):
5269 self ._fill_map_simple ()
53- key_set = self .map .key_set (PagingPredicate (is_greater_than_or_equal_to ('this' , 3 ), 1 ))
70+ key_set = self .map .key_set (paging (is_greater_than_or_equal_to ('this' , 3 ), 1 ))
5471 self .assertEqual (len (key_set ), 1 )
5572 self .assertEqual (key_set [0 ], 'key-3' )
5673
5774 def test_values_with_paging_predicate (self ):
5875 self ._fill_map_simple ()
59- values = self .map .values (PagingPredicate (is_greater_than_or_equal_to ('this' , 3 ), 1 ))
76+ values = self .map .values (paging (is_greater_than_or_equal_to ('this' , 3 ), 1 ))
6077 self .assertEqual (len (values ), 1 )
6178 self .assertEqual (values [0 ], 3 )
6279
@@ -65,86 +82,95 @@ def test_values_with_paging_predicate(self):
6582 """
6683 def test_first_page (self ):
6784 self ._fill_map_numeric ()
68- paging = PagingPredicate (is_greater_than_or_equal_to ('this' , 40 ), 2 )
69- assertCountEqual (self , self .map .values (paging ), [40 , 41 ])
85+ predicate = paging (is_greater_than_or_equal_to ('this' , 40 ), 2 )
86+ self . assertEqual (self .map .values (predicate ), [40 , 41 ])
7087
7188 def test_next_page (self ):
7289 self ._fill_map_numeric ()
73- paging = PagingPredicate (is_greater_than_or_equal_to ('this' , 40 ), 2 )
74- paging .next_page ()
75- assertCountEqual (self , self .map .values (paging ), [42 , 43 ])
90+ predicate = paging (is_greater_than_or_equal_to ('this' , 40 ), 2 )
91+ predicate .next_page ()
92+ self . assertEqual (self .map .values (predicate ), [42 , 43 ])
7693
7794 def test_set_page (self ):
7895 self ._fill_map_numeric ()
79- paging = PagingPredicate (is_greater_than_or_equal_to ('this' , 40 ), 2 )
80- paging .page = 4
81- assertCountEqual (self , self .map .values (paging ), [48 , 49 ])
96+ predicate = paging (is_greater_than_or_equal_to ('this' , 40 ), 2 )
97+ predicate .page = 4
98+ self . assertEqual (self .map .values (predicate ), [48 , 49 ])
8299
83100 def test_get_page (self ):
84- paging = PagingPredicate (is_greater_than_or_equal_to ('this' , 40 ), 2 )
85- paging .page = 4
86- self .assertEqual (paging .page , 4 )
101+ predicate = paging (is_greater_than_or_equal_to ('this' , 40 ), 2 )
102+ predicate .page = 4
103+ self .assertEqual (predicate .page , 4 )
87104
88105 def test_page_size (self ):
89- paging = PagingPredicate (is_greater_than_or_equal_to ('this' , 40 ), 2 )
90- self .assertEqual (paging .page_size , 2 )
106+ predicate = paging (is_greater_than_or_equal_to ('this' , 40 ), 2 )
107+ self .assertEqual (predicate .page_size , 2 )
91108
92109 def test_previous_page (self ):
93110 self ._fill_map_numeric ()
94- paging = PagingPredicate (is_greater_than_or_equal_to ('this' , 40 ), 2 )
95- paging .page = 4
96- paging .previous_page ()
97- assertCountEqual (self , self .map .values (paging ), [46 , 47 ])
111+ predicate = paging (is_greater_than_or_equal_to ('this' , 40 ), 2 )
112+ predicate .page = 4
113+ predicate .previous_page ()
114+ self . assertEqual (self .map .values (predicate ), [46 , 47 ])
98115
99116 def test_get_4th_then_previous_page (self ):
100117 self ._fill_map_numeric ()
101- paging = PagingPredicate (is_greater_than_or_equal_to ('this' , 40 ), 2 )
102- paging .page = 4
103- self .map .values (paging )
104- paging .previous_page ()
105- assertCountEqual (self , self .map .values (paging ), [46 , 47 ])
118+ predicate = paging (is_greater_than_or_equal_to ('this' , 40 ), 2 )
119+ predicate .page = 4
120+ self .map .values (predicate )
121+ predicate .previous_page ()
122+ self . assertEqual (self .map .values (predicate ), [46 , 47 ])
106123
107124 def test_get_3rd_then_next_page (self ):
108125 self ._fill_map_numeric ()
109- paging = PagingPredicate (is_greater_than_or_equal_to ('this' , 40 ), 2 )
110- paging .page = 3
111- self .map .values (paging )
112- paging .next_page ()
113- assertCountEqual (self , self .map .values (paging ), [48 , 49 ])
126+ predicate = paging (is_greater_than_or_equal_to ('this' , 40 ), 2 )
127+ predicate .page = 3
128+ self .map .values (predicate )
129+ predicate .next_page ()
130+ self . assertEqual (self .map .values (predicate ), [48 , 49 ])
114131
115132 def test_set_nonexistent_page (self ):
116133 # Trying to get page 10, which is out of range, should return empty list.
117134 self ._fill_map_numeric ()
118- paging = PagingPredicate (is_greater_than_or_equal_to ('this' , 40 ), 2 )
119- paging .page = 10
120- assertCountEqual (self , self .map .values (paging ), [])
135+ predicate = paging (is_greater_than_or_equal_to ('this' , 40 ), 2 )
136+ predicate .page = 10
137+ self . assertEqual (self .map .values (predicate ), [])
121138
122139 def test_nonexistent_previous_page (self ):
123140 # Trying to get previous page while already at first page should return first page.
124141 self ._fill_map_numeric ()
125- paging = PagingPredicate (is_greater_than_or_equal_to ('this' , 40 ), 2 )
126- paging .previous_page ()
127- assertCountEqual (self , self .map .values (paging ), [40 , 41 ])
142+ predicate = paging (is_greater_than_or_equal_to ('this' , 40 ), 2 )
143+ predicate .previous_page ()
144+ self . assertEqual (self .map .values (predicate ), [40 , 41 ])
128145
129146 def test_nonexistent_next_page (self ):
130147 # Trying to get next page while already at last page should return empty list.
131148 self ._fill_map_numeric ()
132- paging = PagingPredicate (is_greater_than_or_equal_to ('this' , 40 ), 2 )
133- paging .page = 4
134- paging .next_page ()
135- assertCountEqual (self , self .map .values (paging ), [])
149+ predicate = paging (is_greater_than_or_equal_to ('this' , 40 ), 2 )
150+ predicate .page = 4
151+ predicate .next_page ()
152+ self . assertEqual (self .map .values (predicate ), [])
136153
137154 def test_get_half_full_last_page (self ):
138155 # Page size set to 2, but last page only has 1 element.
139156 self ._fill_map_numeric ()
140- paging = PagingPredicate (is_greater_than_or_equal_to ('this' , 41 ), 2 )
141- paging .page = 4
142- assertCountEqual (self , self .map .values (paging ), [49 ])
157+ predicate = paging (is_greater_than_or_equal_to ('this' , 41 ), 2 )
158+ predicate .page = 4
159+ self .assertEqual (self .map .values (predicate ), [49 ])
160+
161+ def test_reset (self ):
162+ self ._fill_map_numeric ()
163+ predicate = paging (is_greater_than_or_equal_to ('this' , 40 ), 2 )
164+ self .assertEqual (self .map .values (predicate ), [40 , 41 ])
165+ predicate .next_page ()
166+ self .assertEqual (self .map .values (predicate ), [42 , 43 ])
167+ predicate .reset ()
168+ self .assertEqual (self .map .values (predicate ), [40 , 41 ])
143169
144170 def test_empty_map (self ):
145171 # Empty map should return empty list.
146- paging = PagingPredicate (is_greater_than_or_equal_to ('this' , 30 ), 2 )
147- assertCountEqual (self , self .map .values (paging ), [])
172+ predicate = paging (is_greater_than_or_equal_to ('this' , 30 ), 2 )
173+ self . assertEqual (self .map .values (predicate ), [])
148174
149175 @unittest .skip ('Paging predicate with duplicate values will be supported in Hazelcast 4.0' )
150176 def test_equal_values_paging (self ):
@@ -154,56 +180,56 @@ def test_equal_values_paging(self):
154180 for i in range (50 , 100 ):
155181 self .map .put (i , i - 50 )
156182
157- paging = PagingPredicate (is_less_than_or_equal_to ('this' , 8 ), 5 )
183+ predicate = paging (is_less_than_or_equal_to ('this' , 8 ), 5 )
158184
159- assertCountEqual (self , self .map .values (paging ), [0 , 0 , 1 , 1 , 2 ])
160- paging .next_page ()
161- assertCountEqual (self , self .map .values (paging ), [2 , 3 , 3 , 4 , 4 ])
162- paging .next_page ()
163- assertCountEqual (self , self .map .values (paging ), [5 , 5 , 6 , 6 , 7 ])
164- paging .next_page ()
165- assertCountEqual (self , self .map .values (paging ), [7 , 8 , 8 ])
185+ self . assertEqual (self .map .values (predicate ), [0 , 0 , 1 , 1 , 2 ])
186+ predicate .next_page ()
187+ self . assertEqual (self .map .values (predicate ), [2 , 3 , 3 , 4 , 4 ])
188+ predicate .next_page ()
189+ self . assertEqual (self .map .values (predicate ), [5 , 5 , 6 , 6 , 7 ])
190+ predicate .next_page ()
191+ self . assertEqual (self .map .values (predicate ), [7 , 8 , 8 ])
166192
167193 """
168194 Test for paging predicate with custom comparator
169195 """
170196 def test_key_set_paging_with_custom_comparator (self ):
171197 self ._fill_map_custom_comp ()
172198 custom_cmp = CustomComparator (type = 1 , iteration_type = ITERATION_TYPE .KEY )
173- paging = PagingPredicate (is_ilike ('__key' , 'key-%' ), 6 , custom_cmp )
199+ predicate = paging (is_ilike ('__key' , 'key-%' ), 6 , custom_cmp )
174200
175- key_set_page_1 = self .map .key_set (paging )
176- paging .next_page ()
177- key_set_page_2 = self .map .key_set (paging )
178- paging .next_page ()
179- key_set_page_3 = self .map .key_set (paging )
201+ key_set_page_1 = self .map .key_set (predicate )
202+ predicate .next_page ()
203+ key_set_page_2 = self .map .key_set (predicate )
204+ predicate .next_page ()
205+ key_set_page_3 = self .map .key_set (predicate )
180206
181- assertCountEqual ( self , key_set_page_1 , ['key-9' , 'key-8' , 'key-7' , 'key-6' , 'key-5' , 'key-4' ])
182- assertCountEqual ( self , key_set_page_2 , ['key-3' , 'key-2' , 'key-1' , 'key-0' ])
183- assertCountEqual ( self , key_set_page_3 , [])
207+ self . assertEqual ( key_set_page_1 , ['key-9' , 'key-8' , 'key-7' , 'key-6' , 'key-5' , 'key-4' ])
208+ self . assertEqual ( key_set_page_2 , ['key-3' , 'key-2' , 'key-1' , 'key-0' ])
209+ self . assertEqual ( key_set_page_3 , [])
184210
185211 def test_values_paging_with_custom_comparator (self ):
186212 self ._fill_map_custom_comp_2 ()
187213 custom_cmp = CustomComparator (type = 2 , iteration_type = ITERATION_TYPE .VALUE )
188- paging = PagingPredicate (None , 6 , custom_cmp )
214+ predicate = paging (None , 6 , custom_cmp )
189215
190- values_page_1 = self .map .values (paging )
191- paging .next_page ()
192- values_page_2 = self .map .values (paging )
193- paging .next_page ()
194- values_page_3 = self .map .values (paging )
216+ values_page_1 = self .map .values (predicate )
217+ predicate .next_page ()
218+ values_page_2 = self .map .values (predicate )
219+ predicate .next_page ()
220+ values_page_3 = self .map .values (predicate )
195221
196- assertCountEqual ( self , values_page_1 , ['A' , 'BB' , 'CCC' , 'DDDD' , 'EEEEE' , 'FFFFFF' ])
197- assertCountEqual ( self , values_page_2 , ['GGGGGGG' , 'HHHHHHHH' , 'IIIIIIIII' , 'JJJJJJJJJJ' ])
198- assertCountEqual ( self , values_page_3 , [])
222+ self . assertEqual ( values_page_1 , ['A' , 'BB' , 'CCC' , 'DDDD' , 'EEEEE' , 'FFFFFF' ])
223+ self . assertEqual ( values_page_2 , ['GGGGGGG' , 'HHHHHHHH' , 'IIIIIIIII' , 'JJJJJJJJJJ' ])
224+ self . assertEqual ( values_page_3 , [])
199225
200226 def test_entry_set_paging_with_custom_comparator (self ):
201227 self ._fill_map_custom_comp_2 ()
202228 custom_cmp = CustomComparator (type = 2 , iteration_type = ITERATION_TYPE .ENTRY )
203- paging = PagingPredicate (None , 2 , custom_cmp )
204- page1 = self .map .entry_set (paging )
229+ predicate = paging (None , 2 , custom_cmp )
230+ page1 = self .map .entry_set (predicate )
205231
206- assertCountEqual ( self , page1 , [('key-65' , 'A' ), ('key-66' , 'BB' )])
232+ self . assertEqual ( page1 , [('key-65' , 'A' ), ('key-66' , 'BB' )])
207233
208234 def _fill_map_simple (self ):
209235 self .map .put_all ({
0 commit comments