l = ['a', 'b', 'c', 'zz', 'd', 'e', 'f'] q = SBList(l) print('Original: ' + repr(q)) #l.insert(3, 'after c') #q.insert(3, 'after c') del l[2] del q[2] print('after del, q = ' + repr(q)) print('after del, l = ' + repr(l)) assert(l == q.return_list()) l.sort() q.sort() print('after sort, q = ' + repr(q)) print('after sort, l = ' + repr(l)) qlist = q.return_list() assert(l == qlist) print('sort after insert and delete') print(repr(q.order())) print("\nNow sort indexes 3-7") print(repr(q.order(start=3, end=7))) m = ['r', 'h', 'o', 's', 'u', 'sa', 'saa', 'm', 'o', 'sb', 'c'] q = SBList(m)
assert(sb == [0,1,2,3,3.5,4]) sb.insert(0, 0.5) assert(sb == [0.5, 0,1,2,3,3.5,4]) # Test a simple undo and some insertions sl = SBList([1,2,6,3,12,7]) sl.insert(2, 90) sl.undo() sl.insert(2, 90) sl.insert(4, 50) sl.insert(5, 9999999) sl.insert(3, 20) sl.delete(6) sl.insert(3, 30) sl sl.sort() sl sl.delete(3) assert(sl.get_list() == [1, 2, 3, 7, 12, 20, 30, 50, 90]) #### ####################################################################### # Test insert, sort, delete: sl = SBList([1,2,6,3,12,7]) sl.sort() sl.undo() print('######## B') print('answer should be:\n[1, 2, 6, 3, 12, 7]') print(sl) print('------------------------------------------')
while j < str_len and k < k_max: l.append(l[-1]) k += 1 j += 1 else: l.append(chr(random.randint(ord('a'), ord('z')))) j += 1 # # Now copy the list and test it # start_offset = random.randint(0, str_len - 3) end_offset = random.randint(start_offset + 1, str_len - 1) save_l = [] save_l.extend(l) q = SBList(l) q.sort(start=start_offset, end=end_offset) l_new = q.return_list() save_l2 = subsort(save_l, start_offset, end_offset) # The diff() function seems to remove the sort from # my saved list ### TEMPORARY HACK TO TEST ERROR DETECTION: ##save_l2[3] = 'zzTEST' difflist = list(difflib.ndiff(save_l2, l_new)) if len(difflist) != len(q): print('================== verify failed') print("start idx " + str(start_offset) + ' end idx ' + str(end_offset)) print('save:\n' + repr(save_l2)) print('new:\n' + repr(l_new)) raise Exception('Verify failed') print('finished with no errors')
used as an array index capturing value n-1) """ lstart = l[0:start] lend = l[end:] lmid = l[start:end] lmid.sort() final = [] final.extend(lstart) final.extend(lmid) final.extend(lend) return(final) l = ['a', 'g','e', 't','g','h','b','n'] q = SBList(l) q.sort() q.sort() q.sort() q.sort() q.sort() print(repr(q.get_undo_list())) ##################################################################### # # Testing # ###################################################################### # generate an auto-correlated series of characters to test the # sort routine. The challenge is to sort a subset of input rows # when the old sate ranges spand into or across the sort region # of a subsort replicates = 3000