From d30591fd39983091c823b0109191c80cc2fd1a77 Mon Sep 17 00:00:00 2001 From: hsoft Date: Tue, 16 Jun 2009 09:04:41 +0000 Subject: [PATCH] [#3] py: added Dupeguru.get_*_node_paths() --HG-- extra : convert_revision : svn%3Ac306627e-7827-47d3-bdf0-9a457c9553a1/trunk%4065 --- py/app_cocoa.py | 29 ++++++++++++++++++++++++- py/tests/app_cocoa_test.py | 44 +++++++++++++++++++++++++++++++++----- 2 files changed, 67 insertions(+), 6 deletions(-) diff --git a/py/app_cocoa.py b/py/app_cocoa.py index 81589f2c..808a5415 100644 --- a/py/app_cocoa.py +++ b/py/app_cocoa.py @@ -13,8 +13,9 @@ import logging import os.path as op import hsfs as fs -from hsutil.cocoa import install_exception_hook from hsutil import io, cocoa, job +from hsutil.cocoa import install_exception_hook +from hsutil.misc import stripnone from hsutil.reg import RegistrationRequired import export, app, data @@ -179,6 +180,32 @@ class DupeGuru(app.DupeGuru): except app.AllFilesAreRefError: return 1 + def selected_result_node_paths(self): + def get_path(dupe): + try: + group = self.results.get_group_of_duplicate(dupe) + groupindex = self.results.groups.index(group) + if dupe is group.ref: + return [groupindex] + dupeindex = group.dupes.index(dupe) + return [groupindex, dupeindex] + except ValueError: # dupe not in there + return None + + dupes = self.selected_dupes + return stripnone(get_path(dupe) for dupe in dupes) + + def selected_powermarker_node_paths(self): + def get_path(dupe): + try: + dupeindex = self.results.dupes.index(dupe) + return [dupeindex] + except ValueError: # dupe not in there + return None + + dupes = self.selected_dupes + return stripnone(get_path(dupe) for dupe in dupes) + def SelectResultNodePaths(self,node_paths): def extract_dupe(t): g,d = t diff --git a/py/tests/app_cocoa_test.py b/py/tests/app_cocoa_test.py index 60d2e83d..c1ded17a 100644 --- a/py/tests/app_cocoa_test.py +++ b/py/tests/app_cocoa_test.py @@ -7,17 +7,19 @@ import tempfile import shutil import logging +import os.path as op + +from nose.tools import eq_ from hsutil.path import Path from hsutil.testcase import TestCase from hsutil.decorators import log_calls import hsfs.phys -import os.path as op from .results_test import GetTestGroups from .. import engine, data try: - from ..app_cocoa import DupeGuru as DupeGuruBase, DGDirectory + from ..app_cocoa import DupeGuru as DupeGuruBase except ImportError: from nose.plugins.skip import SkipTest raise SkipTest("These tests can only be run on OS X") @@ -70,6 +72,24 @@ class TCDupeGuru(TestCase): self.assertEqual((None,None),app.GetObjects([])) self.assertEqual((None,None),app.GetObjects([1,2])) + def test_selected_result_node_paths(self): + # app.selected_dupes is correctly converted into node paths + app = self.app + objects = self.objects + paths = [[0, 0], [0, 1], [1]] + app.SelectResultNodePaths(paths) + eq_(app.selected_result_node_paths(), paths) + + def test_selected_result_node_paths_after_deletion(self): + # cases where the selected dupes aren't there are correctly handled + app = self.app + objects = self.objects + paths = [[0, 0], [0, 1], [1]] + app.SelectResultNodePaths(paths) + app.RemoveSelected() + # The first 2 dupes have been removed. The 3rd one is a ref. it stays there, in first pos. + eq_(app.selected_result_node_paths(), [[0]]) # no exception + def test_selectResultNodePaths(self): app = self.app objects = self.objects @@ -108,6 +128,23 @@ class TCDupeGuru(TestCase): app.SelectResultNodePaths([[0,0],[0,1],[1],[1,1],[2]]) self.assertEqual(3,len(app.selected_dupes)) + def test_selected_powermarker_node_paths(self): + # app.selected_dupes is correctly converted into paths + app = self.app + objects = self.objects + paths = r2np([0, 1, 2]) + app.SelectPowerMarkerNodePaths(paths) + eq_(app.selected_powermarker_node_paths(), paths) + + def test_selected_powermarker_node_paths_after_deletion(self): + # cases where the selected dupes aren't there are correctly handled + app = self.app + objects = self.objects + paths = r2np([0, 1, 2]) + app.SelectPowerMarkerNodePaths(paths) + app.RemoveSelected() + eq_(app.selected_powermarker_node_paths(), []) # no exception + def test_selectPowerMarkerRows(self): app = self.app objects = self.objects @@ -249,9 +286,6 @@ class TCDupeGuru(TestCase): app.SelectPowerMarkerNodePaths(r2np([2])) #The dupe of the second, 2 sized group app.AddSelectedToIgnoreList() - def test_dirclass(self): - self.assert_(self.app.directories.dirclass is DGDirectory) - class TCDupeGuru_renameSelected(TestCase): def setUp(self):