def test_get_4th_then_previous_page(self): self.fill_map() predicate = paging(greater_or_equal("this", 40), 2) predicate.page = 4 self.map.values(predicate) predicate.previous_page() self.assertEqual(self.map.values(predicate), [46, 47])
def test_get_3rd_then_next_page(self): self.fill_map() predicate = paging(greater_or_equal("this", 40), 2) predicate.page = 3 self.map.values(predicate) predicate.next_page() self.assertEqual(self.map.values(predicate), [48, 49])
def test_nonexistent_next_page(self): # Trying to get next page while already at last page should return empty list. self.fill_map() predicate = paging(greater_or_equal("this", 40), 2) predicate.page = 4 predicate.next_page() self.assertEqual(self.map.values(predicate), [])
def test_paging(self): self.fill_map_numeric() predicate = paging(less("this", 4), 2) self.assertCountEqual([0, 1], self.map.key_set(predicate)) predicate.next_page() self.assertCountEqual([2, 3], self.map.key_set(predicate)) predicate.next_page() self.assertCountEqual([], self.map.key_set(predicate))
def test_reset(self): self.fill_map() predicate = paging(greater_or_equal("this", 40), 2) self.assertEqual(self.map.values(predicate), [40, 41]) predicate.next_page() self.assertEqual(self.map.values(predicate), [42, 43]) predicate.reset() self.assertEqual(self.map.values(predicate), [40, 41])
def test_values_with_custom_comparator(self): m = self.fill_map() predicate = paging(less("this", 10), 5, CustomComparator(1, IterationType.KEY)) values = list(sorted(m.values())) self.assertEqual(values[9:4:-1], self.map.values(predicate)) predicate.next_page() self.assertEqual(values[4::-1], self.map.values(predicate)) predicate.next_page() self.assertEqual([], self.map.values(predicate))
def test_key_set_with_custom_comparator(self): m = self.fill_map() predicate = paging(less("this", 10), 5, CustomComparator(1, IterationType.KEY)) keys = list(sorted(m.keys(), key=lambda k: m[k])) self.assertEqual(keys[9:4:-1], self.map.key_set(predicate)) predicate.next_page() self.assertEqual(keys[4::-1], self.map.key_set(predicate)) predicate.next_page() self.assertEqual([], self.map.key_set(predicate))
def test_equal_values_paging(self): self.fill_map() # keys[50 - 99], values[0 - 49]: m = {"key-%d" % i: i - 50 for i in range(50, 100)} self.map.put_all(m) predicate = paging(less_or_equal("this", 8), 5) self.assertEqual(self.map.values(predicate), [0, 0, 1, 1, 2]) predicate.next_page() self.assertEqual(self.map.values(predicate), [2, 3, 3, 4, 4]) predicate.next_page() self.assertEqual(self.map.values(predicate), [5, 5, 6, 6, 7]) predicate.next_page() self.assertEqual(self.map.values(predicate), [7, 8, 8])
def test_entry_set_with_custom_comparator(self): m = self.fill_map() predicate = paging(less("this", 10), 5, CustomComparator(1, IterationType.KEY)) def entries(start, end): return list( sorted(map(lambda k: (k, m[k]), filter(lambda k: start <= m[k] < end, m)), key=lambda e: e[1], reverse=True)) self.assertEqual(entries(5, 10), self.map.entry_set(predicate)) predicate.next_page() self.assertEqual(entries(0, 5), self.map.entry_set(predicate)) predicate.next_page() self.assertEqual([], self.map.entry_set(predicate))
def test_set_nonexistent_page(self): # Trying to get page 10, which is out of range, should return empty list. self.fill_map() predicate = paging(greater_or_equal("this", 40), 2) predicate.page = 10 self.assertEqual(self.map.values(predicate), [])
students.set( i, HazelcastJsonValue({ "student_id": i, "age": random.randrange(8, 24), }), ) # Use the paging predicate with true predicate # to get all students with the page size of 10. # It also uses the custom comparator we have # written and sorts the values in ascending # order of age. paging_predicate = predicate.paging( predicate=predicate.true(), page_size=10, comparator=AgeComparator(), ) print(students.values(paging_predicate)) # Set up the next page and fetch it. paging_predicate.next_page() print(students.values(paging_predicate)) # This time, we will fetch students with the # student_id between 10 to 40 with the page size # of 5. We will also make use of the custom comparator # and sort the results in descending order of age. paging_predicate = predicate.paging( predicate=predicate.between("student_id", 10, 40), page_size=5,
def test_paging(self): predicate = paging(true(), 5) self.assertEqual( str(predicate), "PagingPredicate(predicate=TruePredicate(), page_size=5, comparator=None)", )
def test_page_size(self): predicate = paging(greater_or_equal("this", 40), 2) self.assertEqual(predicate.page_size, 2)
def test_get_page(self): predicate = paging(greater_or_equal("this", 40), 2) predicate.page = 4 self.assertEqual(predicate.page, 4)
def test_project_with_paging_predicate(self): with self.assertRaises(AssertionError): self.map.project(single_attribute("foo"), paging(true(), 10))
def test_get_half_full_last_page(self): # Page size set to 2, but last page only has 1 element. self.fill_map() predicate = paging(greater_or_equal("this", 41), 2) predicate.page = 4 self.assertEqual(self.map.values(predicate), [49])
def test_with_none_inner_predicate(self): self.fill_map(3) predicate = paging(None, 10) self.assertEqual(self.map.values(predicate), [0, 1, 2])
def test_previous_page(self): self.fill_map() predicate = paging(greater_or_equal('this', 40), 2) predicate.page = 4 predicate.previous_page() self.assertEqual(self.map.values(predicate), [46, 47])
def test_empty_map(self): # Empty map should return empty list. predicate = paging(greater_or_equal("this", 30), 2) self.assertEqual(self.map.values(predicate), [])
def test_entry_set_with_paging_predicate(self): self.fill_map(3) entry_set = self.map.entry_set(paging(greater_or_equal("this", 2), 1)) self.assertEqual(len(entry_set), 1) self.assertEqual(entry_set[0], ("key-2", 2))
def test_previous_page_when_index_is_zero(self): predicate = paging(true(), 2) self.assertEqual(0, predicate.previous_page()) self.assertEqual(0, predicate.previous_page())
def test_with_non_positive_page_size(self): with self.assertRaises(ValueError): paging(true(), 0) with self.assertRaises(ValueError): paging(true(), -1)
def test_with_inner_paging_predicate(self): predicate = paging(true(), 1) with self.assertRaises(TypeError): paging(predicate, 1)
def test_nonexistent_previous_page(self): # Trying to get previous page while already at first page should return first page. self.fill_map() predicate = paging(greater_or_equal("this", 40), 2) predicate.previous_page() self.assertEqual(self.map.values(predicate), [40, 41])
def test_first_page(self): self.fill_map() predicate = paging(greater_or_equal("this", 40), 2) self.assertEqual(self.map.values(predicate), [40, 41])
def test_set_page(self): self.fill_map() predicate = paging(greater_or_equal("this", 40), 2) predicate.page = 4 self.assertEqual(self.map.values(predicate), [48, 49])
def test_key_set_with_paging_predicate(self): self.fill_map(3) key_set = self.map.key_set(paging(greater_or_equal("this", 2), 1)) self.assertEqual(len(key_set), 1) self.assertEqual(key_set[0], "key-2")
def test_aggregate_with_paging_predicate(self): with self.assertRaises(AssertionError): self.map.aggregate(int_avg("foo"), paging(true(), 10))
def test_values_with_paging_predicate(self): self.fill_map(3) values = self.map.values(paging(greater_or_equal("this", 2), 1)) self.assertEqual(len(values), 1) self.assertEqual(values[0], 2)
def test_next_page(self): self.fill_map() predicate = paging(greater_or_equal('this', 40), 2) predicate.next_page() self.assertEqual(self.map.values(predicate), [42, 43])