From ee3aea95e21b59aae9f8a8926a7af542e70f0593 Mon Sep 17 00:00:00 2001 From: David Halter Date: Fri, 13 Apr 2012 10:39:02 +0200 Subject: [PATCH] added tests --- test/completion/classes.py | 18 ++++++++++++++ test/completion/functions.py | 2 +- test/completion/types.py | 48 ++++++++++++++++++++++++++++++++++++ test/run.py | 29 ++++++++++++++++------ 4 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 test/completion/types.py diff --git a/test/completion/classes.py b/test/completion/classes.py index e69de29b..c94bddd4 100644 --- a/test/completion/classes.py +++ b/test/completion/classes.py @@ -0,0 +1,18 @@ + +class TestClass(object): + var_class = TestClass() + + def __init__(self2, a): + self2.var_inst = a + + + +inst = TestClass(1) + +#? ['var_class', 'var_inst'] +inst.var + +#? ['var_class'] +TestClass.var_class + + diff --git a/test/completion/functions.py b/test/completion/functions.py index ac1c200b..bcc2bad5 100644 --- a/test/completion/functions.py +++ b/test/completion/functions.py @@ -1,7 +1,7 @@ import os def array(): - return [] + return list() #? ['append'] array().app diff --git a/test/completion/types.py b/test/completion/types.py new file mode 100644 index 00000000..3a27cc4c --- /dev/null +++ b/test/completion/types.py @@ -0,0 +1,48 @@ +# ----------------- +# lists +# ----------------- +arr = [] +#? ['append'] +arr().app + +#? ['append'] +list().app + + +# ----------------- +# dicts +# ----------------- +dic = {} + +#? ['clear', 'copy'] +dic.c + +dic2 = dict(a=1, b=2) +#? ['pop', 'popitem'] +dic2.p + + +# ----------------- +# set +# ----------------- +set_t = {1,2} + +#? ['clear', 'copy'] +set_t.c + +set_t2 = set() + +#? ['clear', 'copy'] +set_t2.c + +# ----------------- +# tuples +# ----------------- +tup = ('',2) + +#? ['count'] +tup.c + +tup2 = tuple() +#? ['index'] +tup2.i diff --git a/test/run.py b/test/run.py index a7ec73d1..b13dd52d 100755 --- a/test/run.py +++ b/test/run.py @@ -3,6 +3,7 @@ import os import sys import re import StringIO +import traceback sys.path.append('../') import functions @@ -29,13 +30,20 @@ def completion_test(source): if correct: # lines start with 1 and column is just the last (makes no # difference for testing) - completions = functions.complete(source, line_nr, 999, - completion_test_dir) - comp_str = str([str(c) for c in completions]) - if comp_str != correct: - print 'Solution not correct, received %s, wanted %s' % \ - (correct, comp_str) + try: + completions = functions.complete(source, line_nr, 999, + completion_test_dir) + except: + print 'test: %s' % line + print traceback.format_exc() fails += 1 + else: + # TODO remove sorted? completions should be sorted + comp_str = str(sorted([str(c) for c in completions])) + if comp_str != correct: + print 'Solution not correct, received %s, wanted %s' % \ + (correct, comp_str) + fails += 1 correct = None tests += 1 else: @@ -47,9 +55,16 @@ def completion_test(source): # completion tests: completion_test_dir = 'completion' +summary = [] for f_name in os.listdir(completion_test_dir ): if f_name.endswith(".py"): path = os.path.join(completion_test_dir, f_name) f = open(path) num_tests, fails = completion_test(f.read()) - print 'run %s tests with %s fails (%s)' % (num_tests, fails, f_name) + s = 'run %s tests with %s fails (%s)' % (num_tests, fails, f_name) + print s + summary.append(s) + +print '\nSummary:' +for s in summary: + print s