import py import math def test_simple(): s = Spreadsheet() s["a1"] = 5 s["a5"] = 16 s["a6"] = "a1 * a5" assert s["a6"] == 80 s["a7"] = "a6 + 1" assert s["a7"] == 81 def test_recursive(): py.test.skip("fix recursive formulas") s = Spreadsheet() s["a1"] = "a1" value = s["a1"] class Spreadsheet(object): def __init__(self): self.cells = {} def __getitem__(self, cell): value = self.cells[cell] if isinstance(value, str): return eval(value, math.__dict__, self) else: return value def __setitem__(self, cell, value): self.cells[cell] = value