def test_extend(): slt = SortedList(load=17) slt.extend([]) slt._check() slt.extend(range(100)) slt._check() slt.extend([]) slt._check() slt.extend(list(range(100, 200))) slt._check() for val in range(200, 300): del slt._index[:] slt._build_index() slt.extend([val] * (val - 199)) slt._check()
def _gen_array_sorted_req_idx(self, record): # return a list that is sorted from lowest significant from sortedcontainers import SortedList idx_list = SortedList() all_key_names = self._get_all_key_names() record_idx_list = record.get_sorted_key_list() for item in self.gpb: has_key_field = False present_list = [] req_idx = record.create_index() for name in all_key_names: if not item.HasField(name): continue default_value = getattr(item.__class__(), name) current_value = getattr(item, name) if default_value != current_value: # if not the default value record.set_idx_attr_by_obj(req_idx, name, current_value) present_list.append(name) has_key_field = True if not has_key_field: idx_list.extend(record_idx_list) return idx_list if len(present_list) == len(all_key_names): # all keys present idx_list.add(req_idx) else: # loop all in the db, the performance is not good at, be careful, if the request hit this situation for idx in record_idx_list: match = True for name in present_list: val = record.get_idx_attr_by_obj(idx, name) req_val = record.get_idx_attr_by_obj(req_idx, name) if val != req_val: match = False break if match: idx_list.add(idx) return idx_list
def test_extend(): slt = SortedList(load=17) slt.extend(range(100)) slt._check() slt.extend(list(range(100, 200))) slt._check() for val in range(200, 300): slt.extend([val] * (val - 199)) slt._check()
def test_extend_valueerror2(): slt = SortedList(range(20), load=4) slt.extend([17, 18, 19, 20, 21, 22, 23])
def test_extend_valueerror1(): slt = SortedList() slt.extend([1, 2, 3, 5, 4, 6])