def test_add_method_coderef_exception(self): smobj = SelfMutilatingObject() exception = None try: smobj.add_method('walla', 'walla') except TypeError as exception: pass assert exception
def test_add_method_name_exception(self): smobj = SelfMutilatingObject() def thing(): print "thing works" exception = None try: smobj.add_method(42, thing) except TypeError as exception: pass assert exception
def test_add_method_params(self): smobj = SelfMutilatingObject() def concat(*params): concat = "" for word in params: if concat: concat + " and " concat += word return concat smobj.add_method('concatinate', concat) smobj.concatinate('one', 'two', 'three') == "one and two and three"
def test_add_method_kwargs(self): smobj = SelfMutilatingObject() def translate(**kwargs): answer = "" for (k, v) in kwargs.items(): if answer: answer += ", " answer += "%s %s" % (v, k) return answer smobj.add_method('translate', translate) answer = smobj.translate(cat='siamese', dog='terrier', mouse='field') assert "siamese cat" in answer assert "terrier dog" in answer assert "field mouse" in answer
def test_add_method_args(self): smobj = SelfMutilatingObject() smobj.add_method('multiply', lambda a, b: a * b) assert smobj.multiply(2, 2) == 4