Fixed unittests.

This commit is contained in:
Virgil Dupras 2011-11-27 16:49:12 -05:00
parent fc5a0d914b
commit 9226a4fb7c
4 changed files with 54 additions and 42 deletions

View File

@ -121,9 +121,8 @@ class TestCaseDupeGuru:
# It's possible that rename operation has its selected row swept off from under it, thus
# making the selected row None. Don't crash when it happens.
dgapp = DupeGuru()
rtable = ResultTable(CallLogger(), dgapp)
# selected_row is None because there's no result.
assert not rtable.rename_selected('foo') # no crash
assert not dgapp.result_table.rename_selected('foo') # no crash
class TestCaseDupeGuru_clean_empty_dirs:
def pytest_funcarg__do_setup(self, request):
@ -174,7 +173,8 @@ class TestCaseDupeGuruWithResults:
self.dtree_gui = CallLogger()
self.dtree = DirectoryTree(self.dtree_gui, self.app)
self.rtable_gui = CallLogger()
self.rtable = ResultTable(self.rtable_gui, self.app)
self.rtable = self.app.result_table
self.rtable.view = self.rtable_gui
self.dpanel.connect()
self.dtree.connect()
self.rtable.connect()
@ -200,7 +200,7 @@ class TestCaseDupeGuruWithResults:
def test_GetObjects_after_sort(self, do_setup):
objects = self.objects
groups = self.groups[:] # we need an un-sorted reference
self.rtable.sort(0, False) #0 = Filename
self.rtable.sort('name', False)
r = self.rtable[1]
assert r._group is groups[1]
assert r._dupe is objects[4]
@ -233,7 +233,7 @@ class TestCaseDupeGuruWithResults:
app = self.app
objects = self.objects
groups = self.groups[:] #To keep the old order in memory
self.rtable.sort(0, False) #0 = Filename
self.rtable.sort('name', False) #0
#Now, the group order is supposed to be reversed
self.rtable.select([1, 2, 3])
eq_(len(app.selected_dupes), 3)
@ -260,7 +260,7 @@ class TestCaseDupeGuruWithResults:
app = self.app
objects = self.objects
self.rtable.power_marker = True
self.rtable.sort(0, False) #0 = Filename
self.rtable.sort('name', False)
self.rtable.select([0, 1, 2])
eq_(len(app.selected_dupes), 3)
assert app.selected_dupes[0] is objects[4]
@ -429,7 +429,8 @@ class TestCaseDupeGuru_renameSelected:
self.p = p
self.files = files
self.rtable_gui = CallLogger()
self.rtable = ResultTable(self.rtable_gui, self.app)
self.rtable = self.app.result_table
self.rtable.view = self.rtable_gui
self.rtable.connect()
def test_simple(self, do_setup):

View File

@ -9,15 +9,16 @@
from hscommon.testutil import TestApp as TestAppBase, eq_, with_app
from hscommon.path import Path
from hscommon.util import get_file_ext, format_size
from hscommon.gui.column import Column
from jobprogress.job import nulljob, JobCancelled
from .. import engine
from .. import prioritize
from ..engine import getwords
from ..app import DupeGuru as DupeGuruBase, Column, cmp_value
from ..app import DupeGuru as DupeGuruBase, cmp_value
from ..gui.details_panel import DetailsPanel
from ..gui.directory_tree import DirectoryTree
from ..gui.result_table import ResultTable
from ..gui.result_table import ResultTable as ResultTableBase
from ..gui.prioritize_dialog import PrioritizeDialog
class DupeGuruView:
@ -36,18 +37,22 @@ class DupeGuruView:
pass
class DupeGuru(DupeGuruBase):
class ResultTable(ResultTableBase):
COLUMNS = [
Column('marked', ''),
Column('name', 'Filename'),
Column('folder_path', 'Directory'),
Column('size', 'Size (KB)'),
Column('extension', 'Kind'),
]
DELTA_COLUMNS = {'size', }
class DupeGuru(DupeGuruBase):
METADATA_TO_READ = ['size']
def __init__(self):
DupeGuruBase.__init__(self, DupeGuruView(), '/tmp')
self.result_table = ResultTable(self)
def _get_display_info(self, dupe, group, delta):
size = dupe.size
@ -55,21 +60,21 @@ class DupeGuru(DupeGuruBase):
if m and delta:
r = group.ref
size -= r.size
return [
dupe.name,
str(dupe.folder_path),
format_size(size, 0, 1, False),
dupe.extension if hasattr(dupe, 'extension') else '---',
]
return {
'name': dupe.name,
'folder_path': str(dupe.folder_path),
'size': format_size(size, 0, 1, False),
'extension': dupe.extension if hasattr(dupe, 'extension') else '---',
}
def _get_dupe_sort_key(self, dupe, get_group, key, delta):
r = cmp_value(dupe, self.COLUMNS[key])
if delta and (key in self.DELTA_COLUMNS):
r -= cmp_value(get_group().ref, self.COLUMNS[key])
r = cmp_value(dupe, key)
if delta and (key in self.result_table.DELTA_COLUMNS):
r -= cmp_value(get_group().ref, key)
return r
def _get_group_sort_key(self, group, key):
return cmp_value(group.ref, self.COLUMNS[key])
return cmp_value(group.ref, key)
def _prioritization_categories(self):
return prioritize.all_categories()
@ -120,14 +125,20 @@ def GetTestGroups():
class TestApp(TestAppBase):
def __init__(self):
def link_gui(gui):
gui.view = self.make_logger()
if hasattr(gui, 'columns'): # tables
gui.columns.view = self.make_logger()
return gui
TestAppBase.__init__(self)
make_gui = self.make_gui
self.app = DupeGuru()
# XXX After hscommon.testutil.TestApp has had its default parent changed to seomthing
# customizable (with adjustments in moneyguru) we can get rid of 'parent='
make_gui('rtable', ResultTable, parent=self.app)
make_gui('dtree', DirectoryTree, parent=self.app)
make_gui('dpanel', DetailsPanel, parent=self.app)
make_gui('pdialog', PrioritizeDialog, parent=self.app)
self.default_parent = self.app
self.rtable = link_gui(self.app.result_table)
make_gui('dtree', DirectoryTree)
make_gui('dpanel', DetailsPanel)
make_gui('pdialog', PrioritizeDialog)
for elem in [self.rtable, self.dtree, self.dpanel]:
elem.connect()

View File

@ -54,7 +54,7 @@ def test_kind_reprioritization(app):
app.pdialog.criteria_list.select([1]) # ext2
app.pdialog.add_selected()
app.pdialog.perform_reprioritization()
eq_(app.rtable[0].data[0], 'foo2.ext2')
eq_(app.rtable[0].data['name'], 'foo2.ext2')
@with_app(app_normal_results)
def test_folder_subcrit(app):
@ -67,7 +67,7 @@ def test_folder_reprioritization(app):
app.pdialog.criteria_list.select([1]) # folder2
app.pdialog.add_selected()
app.pdialog.perform_reprioritization()
eq_(app.rtable[0].data[0], 'foo2.ext2')
eq_(app.rtable[0].data['name'], 'foo2.ext2')
@with_app(app_normal_results)
def test_prilist_display(app):
@ -99,7 +99,7 @@ def test_size_reprioritization(app):
app.pdialog.criteria_list.select([0]) # highest
app.pdialog.add_selected()
app.pdialog.perform_reprioritization()
eq_(app.rtable[0].data[0], 'foo2.ext2')
eq_(app.rtable[0].data['name'], 'foo2.ext2')
@with_app(app_normal_results)
def test_reorder_prioritizations(app):
@ -137,7 +137,7 @@ def app_one_name_ends_with_number():
def test_filename_reprioritization(app):
app.add_pri_criterion("Filename", 0) # Ends with a number
app.pdialog.perform_reprioritization()
eq_(app.rtable[0].data[0], 'foo1.ext')
eq_(app.rtable[0].data['name'], 'foo1.ext')
#---
def app_with_subfolders():
@ -166,8 +166,8 @@ def test_folder_crit_includes_subfolders(app):
app.add_pri_criterion("Folder", 1) # foo
app.pdialog.perform_reprioritization()
# Both foo and foo/bar dupes will be prioritized
eq_(app.rtable[0].data[0], 'foo2')
eq_(app.rtable[2].data[0], 'foo4')
eq_(app.rtable[0].data['name'], 'foo2')
eq_(app.rtable[2].data['name'], 'foo4')
@with_app(app_with_subfolders)
def test_display_something_on_empty_extensions(app):

View File

@ -119,16 +119,16 @@ class TestCaseResultsWithSomeGroups:
def test_sort_groups(self):
self.results.make_ref(self.objects[1]) #We want to make the 1024 sized object to go ref.
g1,g2 = self.groups
self.results.sort_groups(2) #2 is the key for size
self.results.sort_groups('size')
assert self.results.groups[0] is g2
assert self.results.groups[1] is g1
self.results.sort_groups(2,False)
self.results.sort_groups('size', False)
assert self.results.groups[0] is g1
assert self.results.groups[1] is g2
def test_set_groups_when_sorted(self):
self.results.make_ref(self.objects[1]) #We want to make the 1024 sized object to go ref.
self.results.sort_groups(2)
self.results.sort_groups('size')
objects,matches,groups = GetTestGroups()
g1,g2 = groups
g1.switch_ref(objects[1])
@ -159,9 +159,9 @@ class TestCaseResultsWithSomeGroups:
o3.size = 3
o4.size = 2
o5.size = 1
self.results.sort_dupes(2)
self.results.sort_dupes('size')
eq_([o5,o3,o2],self.results.dupes)
self.results.sort_dupes(2,False)
self.results.sort_dupes('size', False)
eq_([o2,o3,o5],self.results.dupes)
def test_dupe_list_remember_sort(self):
@ -171,7 +171,7 @@ class TestCaseResultsWithSomeGroups:
o3.size = 3
o4.size = 2
o5.size = 1
self.results.sort_dupes(2)
self.results.sort_dupes('size')
self.results.make_ref(o2)
eq_([o5,o3,o1],self.results.dupes)
@ -182,14 +182,14 @@ class TestCaseResultsWithSomeGroups:
o3.size = 3 #-7
o4.size = 20
o5.size = 1 #-19
self.results.sort_dupes(2,delta=True)
self.results.sort_dupes('size', delta=True)
eq_([o5,o2,o3],self.results.dupes)
def test_sort_empty_list(self):
#There was an infinite loop when sorting an empty list.
app = DupeGuru()
r = app.results
r.sort_dupes(0)
r.sort_dupes('name')
eq_([],r.dupes)
def test_dupe_list_update_on_remove_duplicates(self):
@ -720,13 +720,13 @@ class TestCaseResultsFilter:
self.results.make_ref(self.objects[1]) # to have the 1024 b obkect as ref
g1,g2 = self.groups
self.results.apply_filter('a') # Matches both group
self.results.sort_groups(2) #2 is the key for size
self.results.sort_groups('size')
assert self.results.groups[0] is g2
assert self.results.groups[1] is g1
self.results.apply_filter(None)
assert self.results.groups[0] is g2
assert self.results.groups[1] is g1
self.results.sort_groups(2, False)
self.results.sort_groups('size', False)
self.results.apply_filter('a')
assert self.results.groups[1] is g2
assert self.results.groups[0] is g1