def dataunittest_transforms(): from cellrename_data import CellRenameData, CellRenameItem def useFakeData(data, a): newdata = [CellRenameItem() for s in a] for i in range(len(a)): newdata[i].filename = newdata[i].newname = a[i] data.data = newdata def tostring(data): return '|'.join((item.newname for item in data.data)) testNames1 = 'aa|bb.jpg|cc.Ok.jpg|dd.a'.split('|') test1 = CellRenameData('.', '*', False) expectEqual(len(test1.data) > 0, True) useFakeData(test1, testNames1) expectEqual(any((item.filename.endswith('.py') for item in test1.data)), False) test1.transformSuffixOrPrefix(False, 'suf') expectEqual(tostring(test1), 'aasuf|bbsuf.jpg|cc.Oksuf.jpg|ddsuf.a') useFakeData(test1, testNames1) test1.transformSuffixOrPrefix(True, 'pref') expectEqual(tostring(test1), 'prefaa|prefbb.jpg|prefcc.Ok.jpg|prefdd.a') useFakeData(test1, testNames1) test1.transformAppendNumber('1') expectEqual(tostring(test1), 'aa 1|bb 2.jpg|cc.Ok 3.jpg|dd 4.a') test1.transformAppendNumber('5') expectEqual(tostring(test1), 'aa 1 5|bb 2 6.jpg|cc.Ok 3 7.jpg|dd 4 8.a') useFakeData(test1, testNames1) test1.transformAppendNumber('000') expectEqual(tostring(test1), 'aa 000|bb 001.jpg|cc.Ok 002.jpg|dd 003.a') useFakeData(test1, testNames1) test1.transformAppendNumber('0098') expectEqual(tostring(test1), 'aa 0098|bb 0099.jpg|cc.Ok 0100.jpg|dd 0101.a') useFakeData(test1, testNames1) test1.transformWithPattern('s') expectEqual(tostring(test1), 's|s.jpg|s.jpg|s.a') useFakeData(test1, testNames1) test1.transformWithPattern('a%na%n %u%u%f') expectEqual( tostring(test1), 'a1a1 aaaaaa|a2a2 bbbbbb.jpg|a3a3 cc.okcc.okcc.Ok.jpg|a4a4 dddddd.a') useFakeData(test1, testNames1) test1.transformWithPattern('%N(%U)%N') expectEqual(tostring(test1), '1(AA)1|2(BB)2.jpg|3(CC.OK)3.jpg|4(DD)4.a') useFakeData(test1, testNames1) test1.transformReplace('A', 'C') test1.transformReplace( '.jpg', '.png') # unlike the rest, this *should* be able to rename extensions expectEqual(tostring(test1), 'aa|bb.png|cc.Ok.png|dd.a') test2 = CellRenameData('.', '*', False) testNames2 = 'a(a|test(Athat|first,second|xx,yy,zz|cc.Ok.jpg|ccnOk.jpg|dd.a'.split( '|') useFakeData(test2, testNames2) test2.transformRegexReplace('(a', '_a', False, False) # not regex, case insensitive expectEqual( tostring(test2), 'a_a|test_athat|first,second|xx,yy,zz|cc.Ok.jpg|ccnOk.jpg|dd.a') useFakeData(test2, testNames2) test2.transformRegexReplace('(a', '_a', False, True) # not regex, case sensitive expectEqual( tostring(test2), 'a_a|test(Athat|first,second|xx,yy,zz|cc.Ok.jpg|ccnOk.jpg|dd.a') useFakeData(test2, testNames2) test2.transformRegexReplace('cc.Ok', 'match', False, False) # not regex, case sensitive expectEqual( tostring(test2), 'a(a|test(Athat|first,second|xx,yy,zz|match.jpg|ccnOk.jpg|dd.a') useFakeData(test2, testNames2) test2.transformRegexReplace('cc.Ok', 'match', True, False) # is regex, case sensitive expectEqual( tostring(test2), 'a(a|test(Athat|first,second|xx,yy,zz|match.jpg|match.jpg|dd.a') useFakeData(test2, testNames2) test2.transformRegexReplace(r'(\w+),(\w+)', r'\2-\1', True, False) # is regex, case sensitive expectEqual( tostring(test2), 'a(a|test(Athat|second-first|yy-xx,zz|cc.Ok.jpg|ccnOk.jpg|dd.a')
def dataunittest_transforms(): from cellrename_data import CellRenameData, CellRenameItem def useFakeData(data, a): newdata = [CellRenameItem() for s in a] for i in range(len(a)): newdata[i].filename=newdata[i].newname=a[i] data.data = newdata def tostring(data): return '|'.join((item.newname for item in data.data)) testNames1 = 'aa|bb.jpg|cc.Ok.jpg|dd.a'.split('|') test1 = CellRenameData('.', '*', False) expectEqual( len(test1.data)>0, True) useFakeData(test1, testNames1) expectEqual(any((item.filename.endswith('.py') for item in test1.data)), False) test1.transformSuffixOrPrefix(False, 'suf') expectEqual( tostring(test1), 'aasuf|bbsuf.jpg|cc.Oksuf.jpg|ddsuf.a') useFakeData(test1, testNames1) test1.transformSuffixOrPrefix(True, 'pref') expectEqual( tostring(test1), 'prefaa|prefbb.jpg|prefcc.Ok.jpg|prefdd.a') useFakeData(test1, testNames1) test1.transformAppendNumber('1') expectEqual( tostring(test1), 'aa 1|bb 2.jpg|cc.Ok 3.jpg|dd 4.a') test1.transformAppendNumber('5') expectEqual( tostring(test1), 'aa 1 5|bb 2 6.jpg|cc.Ok 3 7.jpg|dd 4 8.a') useFakeData(test1, testNames1) test1.transformAppendNumber('000') expectEqual( tostring(test1), 'aa 000|bb 001.jpg|cc.Ok 002.jpg|dd 003.a') useFakeData(test1, testNames1) test1.transformAppendNumber('0098') expectEqual( tostring(test1), 'aa 0098|bb 0099.jpg|cc.Ok 0100.jpg|dd 0101.a') useFakeData(test1, testNames1) test1.transformWithPattern('s') expectEqual( tostring(test1), 's|s.jpg|s.jpg|s.a') useFakeData(test1, testNames1) test1.transformWithPattern('a%na%n %u%u%f') expectEqual( tostring(test1), 'a1a1 aaaaaa|a2a2 bbbbbb.jpg|a3a3 cc.okcc.okcc.Ok.jpg|a4a4 dddddd.a') useFakeData(test1, testNames1) test1.transformWithPattern('%N(%U)%N') expectEqual( tostring(test1), '1(AA)1|2(BB)2.jpg|3(CC.OK)3.jpg|4(DD)4.a') useFakeData(test1, testNames1) test1.transformReplace('A','C') test1.transformReplace('.jpg','.png') # unlike the rest, this *should* be able to rename extensions expectEqual( tostring(test1),'aa|bb.png|cc.Ok.png|dd.a') test2 = CellRenameData('.', '*', False) testNames2 = 'a(a|test(Athat|first,second|xx,yy,zz|cc.Ok.jpg|ccnOk.jpg|dd.a'.split('|') useFakeData(test2, testNames2) test2.transformRegexReplace('(a', '_a', False, False) # not regex, case insensitive expectEqual( tostring(test2), 'a_a|test_athat|first,second|xx,yy,zz|cc.Ok.jpg|ccnOk.jpg|dd.a') useFakeData(test2, testNames2) test2.transformRegexReplace('(a', '_a', False, True) # not regex, case sensitive expectEqual( tostring(test2), 'a_a|test(Athat|first,second|xx,yy,zz|cc.Ok.jpg|ccnOk.jpg|dd.a') useFakeData(test2, testNames2) test2.transformRegexReplace('cc.Ok', 'match', False, False) # not regex, case sensitive expectEqual( tostring(test2), 'a(a|test(Athat|first,second|xx,yy,zz|match.jpg|ccnOk.jpg|dd.a') useFakeData(test2, testNames2) test2.transformRegexReplace('cc.Ok', 'match', True, False) # is regex, case sensitive expectEqual( tostring(test2), 'a(a|test(Athat|first,second|xx,yy,zz|match.jpg|match.jpg|dd.a') useFakeData(test2, testNames2) test2.transformRegexReplace(r'(\w+),(\w+)', r'\2-\1', True, False) # is regex, case sensitive expectEqual( tostring(test2), 'a(a|test(Athat|second-first|yy-xx,zz|cc.Ok.jpg|ccnOk.jpg|dd.a')
def dataunittest_files(): from cellrename_data import CellRenameData names = unittestsetup() def containsName(data, name): return any((item.filename == name for item in data.data)) os.mkdir(os.path.join(dir, 'directory1')) os.mkdir(os.path.join(dir, 'directory.jpg')) os.mkdir(os.path.join(dir, '.hiddendirectory')) test1 = CellRenameData(dir, '*', True) expectEqual(len(test1.data), len(names) + 3 - 2) # 2 begin with . and shouldn't be included expectEqual(containsName(test1, 'directory1'), True) expectEqual(containsName(test1, 'directory.jpg'), True) expectEqual(containsName(test1, '1'), True) expectEqual(containsName(test1, 'a picture.JPG'), True) expectEqual(containsName(test1, '.hiddendirectory'), False) expectEqual(containsName(test1, '.testhidden'), False) expectEqual(any((item.filename.startswith('.') for item in test1.data)), False) test2 = CellRenameData(dir, '*', False) expectEqual(containsName(test2, 'directory1'), False) expectEqual(containsName(test2, 'directory.jpg'), False) expectEqual(containsName(test2, '.testhidden'), False) expectEqual(containsName(test2, '.hiddendirectory'), False) expectEqual(containsName(test2, '1'), True) testFilter1 = CellRenameData(dir, '*.*', False) expectEqual(containsName(testFilter1, '1'), False) expectEqual(containsName(testFilter1, 'a picture.JPG'), True) expectEqual(containsName(testFilter1, '2.gif'), True) expectEqual(containsName(testFilter1, 'directory.jpg'), False) testFilter2 = CellRenameData(dir, '*.jp', False) expectEqual(containsName(testFilter2, 'a picture.JPG'), False) expectEqual(len(testFilter2.data), 0) # even on posix systems we want case-insensitive pattern matching. testFilter3 = CellRenameData(dir, '*.jpg', False) testFilter4 = CellRenameData(dir, '*.JpG', False) testFilter5 = CellRenameData(dir, '*.jp*', False) testFilter6 = CellRenameData(dir, '*.jp?', False) for filter in (testFilter3, testFilter4, testFilter5, testFilter6): expectEqual(containsName(filter, 'a picture.JPG'), True) expectEqual(containsName(filter, 'picture 2.jpg'), True) expectEqual(containsName(filter, 'picture and picture.jpG'), True) expectEqual(containsName(filter, 'the PiCture with caps.jpg'), True) expectEqual(containsName(filter, 'directory.jpg'), False) # test sorting testSort1 = CellRenameData(dir, '*', True) testSort1.sort('filename') expectEqual(testSort1.data[0].filename, '1') expectEqual(testSort1.data[1].filename, '2.gif') expectEqual(testSort1.data[-1].filename, 'the PiCture with caps.jpg') testSort1.sort('filename', True) # reverse order expectEqual(testSort1.data[-1].filename, '1') expectEqual(testSort1.data[-2].filename, '2.gif') expectEqual(testSort1.data[0].filename, 'the PiCture with caps.jpg') fout = open(join(dir, 'a picture.JPG'), 'w') fout.write('a') fout.close() testSort1.refresh() testSort1.sort('size') expectEqual(testSort1.data[0].filename in ('directory1', 'directory.jpg'), True) # directories always at top expectEqual(testSort1.data[1].filename in ('directory1', 'directory.jpg'), True) # directories always at top expectEqual(testSort1.data[2].filename, 'a picture.JPG')
def dataunittest_files(): from cellrename_data import CellRenameData names = unittestsetup() def containsName(data, name): return any((item.filename==name for item in data.data)) os.mkdir(os.path.join(dir, 'directory1')) os.mkdir(os.path.join(dir, 'directory.jpg')) os.mkdir(os.path.join(dir, '.hiddendirectory')) test1 = CellRenameData(dir, '*', True) expectEqual( len(test1.data), len(names)+3-2) # 2 begin with . and shouldn't be included expectEqual( containsName(test1, 'directory1'), True) expectEqual( containsName(test1, 'directory.jpg'), True) expectEqual( containsName(test1, '1'), True) expectEqual( containsName(test1, 'a picture.JPG'), True) expectEqual( containsName(test1, '.hiddendirectory'), False) expectEqual( containsName(test1, '.testhidden'), False) expectEqual(any((item.filename.startswith('.') for item in test1.data)), False) test2 = CellRenameData(dir, '*', False) expectEqual( containsName(test2, 'directory1'), False) expectEqual( containsName(test2, 'directory.jpg'), False) expectEqual( containsName(test2, '.testhidden'), False) expectEqual( containsName(test2, '.hiddendirectory'), False) expectEqual( containsName(test2, '1'), True) testFilter1 = CellRenameData(dir, '*.*', False) expectEqual( containsName(testFilter1, '1'), False) expectEqual( containsName(testFilter1, 'a picture.JPG'), True) expectEqual( containsName(testFilter1, '2.gif'), True) expectEqual( containsName(testFilter1, 'directory.jpg'), False) testFilter2 = CellRenameData(dir, '*.jp', False) expectEqual( containsName(testFilter2, 'a picture.JPG'), False) expectEqual( len(testFilter2.data), 0) # even on posix systems we want case-insensitive pattern matching. testFilter3 = CellRenameData(dir, '*.jpg', False) testFilter4 = CellRenameData(dir, '*.JpG', False) testFilter5 = CellRenameData(dir, '*.jp*', False) testFilter6 = CellRenameData(dir, '*.jp?', False) for filter in (testFilter3, testFilter4, testFilter5, testFilter6): expectEqual( containsName(filter, 'a picture.JPG'), True) expectEqual( containsName(filter, 'picture 2.jpg'), True) expectEqual( containsName(filter, 'picture and picture.jpG'), True) expectEqual( containsName(filter, 'the PiCture with caps.jpg'), True) expectEqual( containsName(filter, 'directory.jpg'), False) # test sorting testSort1 = CellRenameData(dir, '*', True) testSort1.sort('filename') expectEqual( testSort1.data[0].filename , '1') expectEqual( testSort1.data[1].filename , '2.gif') expectEqual( testSort1.data[-1].filename , 'the PiCture with caps.jpg') testSort1.sort('filename',True) # reverse order expectEqual( testSort1.data[-1].filename , '1') expectEqual( testSort1.data[-2].filename , '2.gif') expectEqual( testSort1.data[0].filename , 'the PiCture with caps.jpg') fout=open(join(dir, 'a picture.JPG'),'w'); fout.write('a'); fout.close() testSort1.refresh() testSort1.sort('size') expectEqual( testSort1.data[0].filename in ('directory1', 'directory.jpg'), True) # directories always at top expectEqual( testSort1.data[1].filename in ('directory1', 'directory.jpg'), True) # directories always at top expectEqual( testSort1.data[2].filename , 'a picture.JPG')