def test_empty_def(): code = dedent( """ def f(): pass """ ) stats = measure_complexity(code).flatStats assert stats.complexity == 1 assert stats.functions[0].complexity == 1
def test_module(): code = dedent( """ if True: pass else: pass """ ) stats = measure_complexity(code).flatStats assert stats.name == "<module>" assert stats.classes == [] assert stats.functions == [] assert stats.complexity == 2
def test_lambdas(): code = dedent( """ incr = lambda x: x + 1 decr = lambda x: x - 1 def f(): incr = lambda x: x + 1 decr = lambda x: x - 1 """ ) stats = measure_complexity(code).flatStats incr, decr, f = stats.functions assert incr.complexity == 1 assert decr.complexity == 1
def test_class(): code = dedent( """ class A: if True: pass def f(self): if False: pass """ ) stats = measure_complexity(code).flatStats assert stats.name == "<module>" assert stats.classes[0].name == "A" assert stats.classes[0].complexity == 2
def test_def(): code = dedent( """ def f(a, b, c): if a: pass else: pass """ ) stats = measure_complexity(code).flatStats assert stats.classes == [] assert len(stats.functions) == 1 assert stats.functions[0].name == "f" assert stats.functions[0].complexity == 2
def test_nested_classes(): code = dedent( """ class A: if True: pass class Inner: if False: pass """ ) stats = measure_complexity(code).flatStats assert stats.classes[0].name == "A" assert stats.classes[0].complexity == 2 assert stats.classes[0].classes[0].name == "Inner" assert stats.classes[0].classes[0].complexity == 2
def test_loops(): code = dedent( """ def f(a): while a < 10: print a def g(a): for x in range(a): print a def h(a): while a < 10: for x in range(a): if x % 2: print 'odd' """ ) stats = measure_complexity(code).flatStats f, g, h = stats.functions assert f.complexity == 2 assert g.complexity == 2 assert h.complexity == 4
def _assert(expected_complexity, code): assert measure_complexity(code).flatStats[0][2] == expected_complexity