def testEachForm(self): eq_(eval(tag_loop_label(EachForm(i, range(3), [prin(i)]))), None)
def testEachForm2(self): eq_(eval(tag_loop_label(EachForm((i, j), zip(range(3), range(3)), [prin(i, j)]))), None)
def testLoopWhen(self): eq_(eval(tag_loop_label(let([(i,3)], LoopWhenForm((set(i, sub(i, 1)), prin(i)), gt(i,0))))), None)
def testLoopUntil(self): eq_(eval(tag_loop_label(let([(i,3)], LoopUntilForm((set(i, sub(i, 1)), prin(i)), eq(i,0))))), None)
def eval(code): code = preparse(code) code = tag_loop_label(code) return dao_eval(code)
def testLoopTimes(self): eq_(eval(tag_loop_label(let([(i,3)], LoopTimesForm(3, (set(i, sub(i, 1)), prin(i)))))), None)
def test_loop2(self): print tag_loop_label(LoopTimesForm(3, (1, next(), 2)))
def preprocess(self): return special.begin(*tag_loop_label(preparse(self.code)))
def test_loop1(self): print tag_loop_label(LoopTimesForm(3, (write(i), exit())))
def test_loop2(self): eq_(tag_loop_label(LoopForm((1, next(), 2))), block("$1", 1, continue_block("$1"), 2, continue_block("$1")))
def test_loop1(self): eq_(tag_loop_label(LoopForm((1, 2, exit()))), block("$1", 1, 2, exit_block("$1"), continue_block("$1")))