def _filters(self): filters = [] def arg_filters(): result = [] for arg in self.args: if re.match(Filter.ORDINAL_TAG_MATCH, arg): argfilter = Filter.OrdinalTagFilter(arg) elif len(arg) > 1 and arg[0] == '-': # when a word starts with -, exclude it argfilter = Filter.GrepFilter(arg[1:]) argfilter = Filter.NegationFilter(argfilter) else: argfilter = Filter.GrepFilter(arg) result.append(argfilter) return result if not self.show_all: filters.append(Filter.DependencyFilter(self.todolist)) filters.append(Filter.RelevanceFilter()) filters += arg_filters() if not self.show_all: filters.append(Filter.LimitFilter(config().list_limit())) return filters
def test_filter16(self): todos = load_file('test/data/FilterTest1.txt') grep = Filter.NegationFilter(Filter.GrepFilter('+project')) filtered_todos = grep.filter(todos) reference = load_file('test/data/FilterTest3-result.txt') self.assertEquals(todolist_to_string(filtered_todos), \ todolist_to_string(reference))
def test_filter17(self): todos = load_file('test/data/FilterTest1.txt') grep1 = Filter.GrepFilter('task') grep2 = Filter.GrepFilter('project') andfilter = Filter.AndFilter(grep1, grep2) filtered_todos = andfilter.filter(todos) reference = load_file('test/data/FilterTest4-result.txt') self.assertEquals(todolist_to_string(filtered_todos), \ todolist_to_string(reference))
def test_filter18(self): todos = load_file('test/data/FilterTest1.txt') grep1 = Filter.GrepFilter('part') grep2 = Filter.GrepFilter('important') grep = Filter.OrFilter(grep1, grep2) filtered_todos = grep.filter(todos) reference = load_file('test/data/FilterTest5-result.txt') self.assertEquals(todolist_to_string(filtered_todos), \ todolist_to_string(reference))
def _filters(self): filters = [] if not self.show_all: filters.append(Filter.DependencyFilter(self.todolist)) filters.append(Filter.RelevanceFilter()) args = self.args[:-1] if self.last_argument else self.args filters += Filter.get_filter_list(args) if not self.show_all: filters.append(Filter.LimitFilter(self.limit)) return filters
def arg_filters(): result = [] for arg in self.args: if re.match(Filter.ORDINAL_TAG_MATCH, arg): argfilter = Filter.OrdinalTagFilter(arg) elif len(arg) > 1 and arg[0] == '-': # when a word starts with -, exclude it argfilter = Filter.GrepFilter(arg[1:]) argfilter = Filter.NegationFilter(argfilter) else: argfilter = Filter.GrepFilter(arg) result.append(argfilter) return result
def test_filter7(self): otf = Filter.OrdinalTagFilter('due:Non') result = otf.filter(self.todos) self.assertEqual(len(result), 1) self.assertEqual(result[0].source(), self.todo3)
def test_filter8(self): pf = Filter.PriorityFilter('(<Z)') result = pf.filter(self.todos) self.assertEqual(len(result), 1) self.assertEqual(result[0].source(), self.todo5)
def test_filter3(self): cf = Filter.CompletionFilter('completion:2015-12-19') result = cf.filter(self.todos) self.assertEqual(len(result), 1) self.assertEqual(result[0].source(), self.todo2)
def test_filter28(self): todos = load_file('test/data/FilterTest3.txt') otf = Filter.OrdinalTagFilter('value:<16a') filtered_todos = otf.filter(todos) self.assertEquals(todolist_to_string(filtered_todos), "")
def test_filter1(self): cf = Filter.CreationFilter('create:2015-12-19') result = cf.filter(self.todos) self.assertEqual(len(result), 1) self.assertEqual(result[0].source(), self.todo1)
def test_filter5(self): otf = Filter.OrdinalTagFilter('due:!today') result = otf.filter(self.todos) self.assertEquals(len(result), 1) self.assertEquals(str(result[0]), self.todo2)
def _handle_ls(self): """ Handles the ls subsubcommand. """ try: arg1 = self.argument(1) arg2 = self.argument(2) todos = [] if arg2 == 'to': # dep ls 1 to ... number = arg1 todo = self.todolist.todo(number) todos = self.todolist.children(todo) elif arg1 == 'to': # dep ls ... to 1 number = arg2 todo = self.todolist.todo(number) todos = self.todolist.parents(todo) else: self.error(self.usage()) if todos: sorter = Sorter(config().sort_string()) instance_filter = Filter.InstanceFilter(todos) view = View(sorter, [instance_filter], self.todolist) self.out(self.printer.print_list(view.todos)) except InvalidTodoException: self.error("Invalid todo number given.") except InvalidCommandArgument: self.error(self.usage())
def test_filter23(self): todos = load_file('test/data/FilterTest3.txt') otf = Filter.OrdinalTagFilter('due:=2014-11-99') filtered_todos = otf.filter(todos) self.assertEquals(todolist_to_string(filtered_todos), "")
def test_filter10(self): """ Test instance filter """ todos = load_file('test/data/FilterTest1.txt') instance_filter = Filter.InstanceFilter([]) filtered_todos = instance_filter.filter(todos) self.assertEquals([], filtered_todos)
def test_filter4(self): otf = Filter.OrdinalTagFilter('due:<1w') result = otf.filter(self.todos) self.assertEquals(len(result), 2) self.assertEquals(str(result[0]), self.todo1) self.assertEquals(str(result[1]), self.todo2)
def test_filter14(self): """ Test limit filter. """ todos = load_file('test/data/FilterTest1.txt') limit_filter = Filter.LimitFilter(-1) filtered_todos = limit_filter.filter(todos) self.assertEquals(todos, filtered_todos)
def test_filter15(self): """ Test limit filter. """ todos = load_file('test/data/FilterTest1.txt') limit_filter = Filter.LimitFilter(100) filtered_todos = limit_filter.filter(todos) self.assertEquals(len(filtered_todos), 4)
def test_filter20(self): todos = load_file('test/data/FilterTest3.txt') otf = Filter.OrdinalTagFilter('due:<2014-11-10') filtered_todos = otf.filter(todos) reference = load_file('test/data/FilterTest6-result.txt') self.assertEquals(todolist_to_string(filtered_todos), \ todolist_to_string(reference))
def test_filter5(self): pf = Filter.PriorityFilter('(<=C)') result = pf.filter(self.todos) self.assertEqual(len(result), 3) self.assertEqual(result[0].source(), self.todo3) self.assertEqual(result[1].source(), self.todo4) self.assertEqual(result[2].source(), self.todo5)
def test_filter31(self): todos = load_file('test/data/FilterTest3.txt') otf = Filter.OrdinalTagFilter('value:>-8') filtered_todos = otf.filter(todos) reference = load_file('test/data/FilterTest13-result.txt') self.assertEquals(todolist_to_string(filtered_todos), todolist_to_string(reference))
def test_filter13(self): """ Test limit filter. """ todos = load_file('test/data/FilterTest1.txt') limit_filter = Filter.LimitFilter(1) filtered_todos = limit_filter.filter(todos) self.assertEquals(len(filtered_todos), 1) self.assertEquals(filtered_todos[0].source(), '(C) This is part of some +Project')
def test_filter8(self): """ Test case sensitive match (forced, with lowercase). """ todos = load_file('test/data/FilterTest1.txt') grep = Filter.GrepFilter('+Project', False) filtered_todos = grep.filter(todos) reference = load_file('test/data/FilterTest1a-result.txt') self.assertEquals(todolist_to_string(filtered_todos), \ todolist_to_string(reference))
def test_filter7(self): """ Tests the dependency filter. """ todolist = load_file_to_todolist('test/data/FilterTest2.txt') depfilter = Filter.DependencyFilter(todolist) filtered_todos = depfilter.filter(todolist.todos()) reference = load_file('test/data/FilterTest2-result.txt') self.assertEquals(todolist_to_string(filtered_todos), \ todolist_to_string(reference))
def test_filter4(self): """ Test case insensitive match. """ todos = load_file('test/data/FilterTest1.txt') grep = Filter.GrepFilter('+project') filtered_todos = grep.filter(todos) reference = load_file('test/data/FilterTest1a-result.txt') self.assertEquals(todolist_to_string(filtered_todos), \ todolist_to_string(reference))
def test_view(self): """ Check filters and printer for views. """ todofile = TodoFile('test/data/FilterTest1.txt') ref = load_file('test/data/ViewTest1-result.txt') todolist = TodoList(todofile.read()) sorter = Sorter('text') todofilter = Filter.GrepFilter('+Project') view = todolist.view(sorter, [todofilter]) self.assertEqual(print_view(view), todolist_to_string(ref))
def test_filter8(self): """ OrdinalTagFilter should resort to a simple GrepFilter when a tag appears more than once. """ otf = Filter.OrdinalTagFilter('key:value2') result = otf.filter(self.todos) self.assertEqual(len(result), 1) self.assertEqual(result[0].source(), self.todo5)
def todo_by_regexp(p_identifier): """ Returns the todo that is (uniquely) identified by the given regexp. If the regexp matches more than one item, no result is returned. """ result = None candidates = Filter.GrepFilter(p_identifier).filter(self._todos) if len(candidates) == 1: result = candidates[0] else: raise InvalidTodoException return result
def test_filter19(self): todos = load_file('test/data/FilterTest1.txt') grep = Filter.GrepFilter(1) filtered_todos = grep.filter(todos) self.assertEquals(filtered_todos, [])
def test_filter3(self): todo = Todo("(C) Relevant") relevance = Filter.RelevanceFilter() result = relevance.filter([todo]) self.assertEquals(result, [todo])