From 58a0a7d0d6052901cd8745902c79fa1a49266206 Mon Sep 17 00:00:00 2001 From: Piotr Mitros <pmitros@mitx.mit.edu> Date: Tue, 24 Apr 2012 18:27:54 -0400 Subject: [PATCH] Case sensitivity bug fix --- djangoapps/courseware/capa/calc.py | 17 ++++++++++++----- djangoapps/courseware/tests.py | 5 +++++ 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/djangoapps/courseware/capa/calc.py b/djangoapps/courseware/capa/calc.py index fb64c581397..6aa0563426f 100644 --- a/djangoapps/courseware/capa/calc.py +++ b/djangoapps/courseware/capa/calc.py @@ -78,17 +78,24 @@ def evaluator(variables, functions, string, cs=False): # log.debug("functions: {0}".format(functions)) # log.debug("string: {0}".format(string)) + def lower_dict(d): + print d + return dict([(k.lower(), d[k]) for k in d]) + all_variables = copy.copy(default_variables) - all_variables.update(variables) all_functions = copy.copy(default_functions) + + if not cs: + all_variables = lower_dict(all_variables) + all_functions = lower_dict(all_functions) + + all_variables.update(variables) all_functions.update(functions) if not cs: string_cs = string.lower() - for v in all_variables.keys(): - all_variables[v.lower()]=all_variables[v] - for f in all_functions.keys(): - all_functions[f.lower()]=all_functions[f] + all_functions = lower_dict(all_functions) + all_variables = lower_dict(all_variables) CasedLiteral = CaselessLiteral else: string_cs = string diff --git a/djangoapps/courseware/tests.py b/djangoapps/courseware/tests.py index 7eb6aa27dee..7a63b9a75f3 100644 --- a/djangoapps/courseware/tests.py +++ b/djangoapps/courseware/tests.py @@ -33,6 +33,11 @@ class ModelsTest(unittest.TestCase): self.assertTrue(abs(calc.evaluator(variables, functions, "k*T/q-0.025"))<0.001) self.assertTrue(abs(calc.evaluator(variables, functions, "e^(j*pi)")+1)<0.00001) self.assertTrue(abs(calc.evaluator(variables, functions, "j||1")-0.5-0.5j)<0.00001) + variables['t'] = 1.0 + self.assertTrue(abs(calc.evaluator(variables, functions, "t")-1.0)<0.00001) + self.assertTrue(abs(calc.evaluator(variables, functions, "T")-1.0)<0.00001) + self.assertTrue(abs(calc.evaluator(variables, functions, "t", cs=True)-1.0)<0.00001) + self.assertTrue(abs(calc.evaluator(variables, functions, "T", cs=True)-298)<0.2) exception_happened = False try: calc.evaluator({},{}, "5+7 QWSEKO") -- GitLab