Ejemplo n.º 1
0
 def setUp(self):
     cells.reset()
     self.x = cells.InputCell(None, 4, name="x")
     self.a = cells.UntilAskedLazyCell(
         None, name="a", rule=lambda s, p: self.x.getvalue() + 1)
     self.a.getvalue(init=True)  # establish dependencies, a = 5
     self.x.set(42)  # cause propogation
Ejemplo n.º 2
0
 def setUp(self):
     cells.reset()
     self.x = cells.InputCell(None, 4, name="x")
     self.a = cells.UntilAskedLazyCell(None, name="a",
                                  rule=lambda s,p: self.x.getvalue() + 1)
     self.a.getvalue(init=True)          # establish dependencies, a = 5
     self.x.set(42)                 # cause propogation
Ejemplo n.º 3
0
 def setUp(self):
     cells.reset()
     self.x = cells.Cell(None, name="x", value=1)
     self.b = cells.Cell(None, name="b", rule=lambda s, p: (p or 40) + 2)
     self.a = cells.Cell(
         None,
         name="a",
         rule=lambda s, p: self.b.getvalue() * self.x.getvalue())
Ejemplo n.º 4
0
 def test_ObserverMultipleObjects(self):
     "Observers should act correctly with multiple instances of a MO"
     # this test is a little different than the others, so
     cells.reset()
     self.observerlog = []
     a = self.M()  # this should fire the model obs
     b = self.M()  # as should this
     self.failUnless(2 == self.observerlog.count("model"))
Ejemplo n.º 5
0
 def test_ObserverMultipleObjects(self):
     "Observers should act correctly with multiple instances of a MO"
     # this test is a little different than the others, so
     cells.reset()
     self.observerlog = []
     a = self.M()                    # this should fire the model obs
     b = self.M()                    # as should this
     self.failUnless(2 == self.observerlog.count("model"))
Ejemplo n.º 6
0
 def test_1b_RunRaisesAfterEval(self):
     """Rule 1: 1. Evaluates once at init, sets its value, and then
     acts like an InputCell.
     """
     cells.reset()
     x = cells.RuleThenInputCell(None, rule=lambda s,p: 0, name="x")
     x.getvalue()
     self.failUnlessRaises(cells.InputCellRunError, x.run)
Ejemplo n.º 7
0
 def test_1b_RunRaisesAfterEval(self):
     """Rule 1: 1. Evaluates once at init, sets its value, and then
     acts like an InputCell.
     """
     cells.reset()
     x = cells.RuleThenInputCell(None, rule=lambda s, p: 0, name="x")
     x.getvalue()
     self.failUnlessRaises(cells.InputCellRunError, x.run)
Ejemplo n.º 8
0
    def setUp(self):
        cells.reset()
        self.x = cells.InputCell(None, 4, name="x")
        self.a = cells.OnceAskedLazyCell(None, name="a",
                                         rule=lambda s,p: self.x.getvalue()+(p or 1))

        self.a.getvalue()                         # establish dependencies
        self.x.set(42)                       # cause propogation
Ejemplo n.º 9
0
    def setUp(self):
        cells.reset()
        self.x = cells.Cell(None, name="x", value=21)

        self.captured_notify_flag = None
        def a_rule(s, p):
            self.captured_notify_flag = self.x.notifying
            return self.x.getvalue() * 2
        self.a = cells.Cell(None, name="a", rule=a_rule)
Ejemplo n.º 10
0
    def setUp(self):
        cells.reset()
        self.x = cells.InputCell(None, 4, name="x")
        self.a = cells.OnceAskedLazyCell(None,
                                         name="a",
                                         rule=lambda s, p: self.x.getvalue() +
                                         (p or 1))

        self.a.getvalue()  # establish dependencies
        self.x.set(42)  # cause propogation
Ejemplo n.º 11
0
    def setUp(self):
        cells.reset()
        self.x = cells.Cell(None, name="x", value=21)

        self.captured_notify_flag = None

        def a_rule(s, p):
            self.captured_notify_flag = self.x.notifying
            return self.x.getvalue() * 2

        self.a = cells.Cell(None, name="a", rule=a_rule)
Ejemplo n.º 12
0
    def setUp(self):
        cells.reset()
        
        class K(cells.Family):
            x = cells.makecell(value=1)
            model_value = cells.makecell(rule=lambda s,p: s.x * 3)
            
        class F(cells.Family):
            kid_slots = cells.makecell(value=K)

        self.F = F
        self.K = K
Ejemplo n.º 13
0
    def setUp(self):
        cells.reset()

        class K(cells.Family):
            x = cells.makecell(value=1)
            model_value = cells.makecell(rule=lambda s, p: s.x * 3)

        class F(cells.Family):
            kid_slots = cells.makecell(value=K)

        self.F = F
        self.K = K
Ejemplo n.º 14
0
    def test_1_NoEvalOnPropogation(self):
        "Always Lazy 1: Always lazys never evaluate on change propogation"
        cells.reset()
        x = cells.InputCell(None, 4, name="x")
        a = cells.AlwaysLazyCell(None, name="a",
                                 rule=lambda s,p: x.getvalue() + (p or 1))

        a.getvalue()                         # establish dependencies
        x.set(42)                       # cause propogation
        self.failUnless(a.value == 5)   # sneaky exam doesn't cause lazy eval
        self.failUnless(a.getvalue() == 47)  # standard eval causes lazy eval
        x.set(5)                        # cause another propogation
        self.failUnless(a.value == 47)  # yadda yadda...
        self.failUnless(a.getvalue() == 52)
Ejemplo n.º 15
0
    def test_1_NoEvalOnPropogation(self):
        "Always Lazy 1: Always lazys never evaluate on change propogation"
        cells.reset()
        x = cells.InputCell(None, 4, name="x")
        a = cells.AlwaysLazyCell(None,
                                 name="a",
                                 rule=lambda s, p: x.getvalue() + (p or 1))

        a.getvalue()  # establish dependencies
        x.set(42)  # cause propogation
        self.failUnless(a.value == 5)  # sneaky exam doesn't cause lazy eval
        self.failUnless(a.getvalue() == 47)  # standard eval causes lazy eval
        x.set(5)  # cause another propogation
        self.failUnless(a.value == 47)  # yadda yadda...
        self.failUnless(a.getvalue() == 52)
Ejemplo n.º 16
0
    def test_2_NoEvalOnInit(self):
        "Always Lazy 2: Does not evaluate during model init"
        cells.reset()
        ran_flag = False

        def a_rule(self, prev):
            ran_flag = True
            return self.x + 2

        class M(cells.Model):
            x = cells.makecell(value=3)
            a = cells.makecell(rule=a_rule, celltype=cells.AlwaysLazyCell)

        m = M()
        self.failIf(ran_flag)
        self.failUnless(m.a == 5)
Ejemplo n.º 17
0
    def test_2_NoEvalOnInit(self):
        "Always Lazy 2: Does not evaluate during model init"
        cells.reset()
        ran_flag = False

        def a_rule(self, prev):
            ran_flag = True
            return self.x + 2

        class M(cells.Model):
            x = cells.makecell(value=3)
            a = cells.makecell(rule=a_rule, celltype=cells.AlwaysLazyCell)

        m = M()
        self.failIf(ran_flag)
        self.failUnless(m.a == 5)
Ejemplo n.º 18
0
    def setUp(self):
        cells.reset()
        self.a_ran = False

        class MyModel(cells.Model):
            x = cells.makecell(value=5)

            @cells.fun2cell()
            def a(modelself, prev):
                self.a_ran = True
                return modelself.x + modelself.offset

            def __init__(self, *args, **kwargs):
                self.offset = 1
                cells.Model.__init__(self, *args, **kwargs)

        self.M = MyModel
Ejemplo n.º 19
0
    def setUp(self):
        cells.reset()
        self.a_ran = False
        
        class MyModel(cells.Model):
            x = cells.makecell(value=5)

            @cells.fun2cell()
            def a(modelself, prev):
                self.a_ran = True
                return modelself.x + modelself.offset

            def __init__(self, *args, **kwargs):
                self.offset = 1
                cells.Model.__init__(self, *args, **kwargs)

        self.M = MyModel
Ejemplo n.º 20
0
    def setUp(self):
        #    h     i     j
        #    |     |     |
        #    v     v     v
        #    a --> b --> c
        #    |           |
        #    \-- > x <---/
        cells.reset()
        self.runlog = []

        self.x = cells.Cell(None, name="x", value=5)

        def anon_rule(name, getfrom):
            def rule(s, p):
                self.runlog.append(name)
                return getfrom.getvalue() + (p or 0)

            return rule

        self.c = cells.Cell(None, name="c", rule=anon_rule('c', self.x))
        self.b = cells.Cell(None, name="b", rule=anon_rule('b', self.c))

        def a_rule(s, p):
            self.runlog.append("a")
            return self.b.getvalue() + self.x.getvalue() + (p or 0)

        self.a = cells.Cell(None, name="a", rule=a_rule)

        self.h = cells.Cell(None, name="h", rule=anon_rule('h', self.a))
        self.i = cells.Cell(None, name="i", rule=anon_rule('i', self.b))
        self.j = cells.Cell(None, name="j", rule=anon_rule('j', self.c))

        # build dependencies
        self.h.getvalue()
        self.i.getvalue()
        self.j.getvalue()

        self.runlog = []

        # run an x.set(3) in the desired order:
        self.x.propogation_list = lambda s, e: [self.a, self.c]
        self.c.propogation_list = lambda s, e: [self.b, self.j]
        self.b.propogation_list = lambda s, e: [self.a, self.i]

        self.x.set(3)
Ejemplo n.º 21
0
    def setUp(self):
        #    h     i     j
        #    |     |     |
        #    v     v     v
        #    a --> b --> c
        #    |           |
        #    \-- > x <---/
        cells.reset()
        self.runlog = []
        
        self.x = cells.Cell(None, name="x", value=5)

        def anon_rule(name, getfrom):
            def rule(s,p):
                self.runlog.append(name)
                return getfrom.getvalue() + (p or 0)
            return rule

        self.c = cells.Cell(None, name="c", rule=anon_rule('c', self.x))
        self.b = cells.Cell(None, name="b", rule=anon_rule('b', self.c))

        def a_rule(s,p):
            self.runlog.append("a")
            return self.b.getvalue() + self.x.getvalue() + (p or 0)
        self.a = cells.Cell(None, name="a", rule=a_rule)

        self.h = cells.Cell(None, name="h", rule=anon_rule('h', self.a))
        self.i = cells.Cell(None, name="i", rule=anon_rule('i', self.b))
        self.j = cells.Cell(None, name="j", rule=anon_rule('j', self.c))

        # build dependencies
        self.h.getvalue()
        self.i.getvalue()
        self.j.getvalue()

        self.runlog = []

        # run an x.set(3) in the desired order:
        self.x.propogation_list = lambda s,e: [ self.a, self.c ]
        self.c.propogation_list = lambda s,e: [ self.b, self.j ]
        self.b.propogation_list = lambda s,e: [ self.a, self.i ]

        self.x.set(3)
Ejemplo n.º 22
0
    def setUp(self):
        cells.reset()
        self.observerlog = []
        
        class MyModel(cells.Model):
            x = cells.makecell(value=5)
            a = cells.makecell(rule=lambda s,p: int(s.x) + s.offset)
            offset = 2

        # observes whole model
        @MyModel.observer()
        def model_obs(model):
            self.observerlog.append("model")

        # observes an input cell instance
        @MyModel.observer(attrib="x")
        def incell_obs(model):
            self.observerlog.append("x")

        # observes a rule cell instance
        @MyModel.observer(attrib="a")
        def rulecell_obs(model):
            self.observerlog.append("a")

        # observes a non-cell instance
        @MyModel.observer(attrib="offset")
        def noncell_obs(model):
            self.observerlog.append("offset")

        # observe an old value type
        @MyModel.observer(oldvalue=lambda v: type(v) == type(1))
        def oldval_obs(model):
            self.observerlog.append("oldval")
                
        # observe a new value type
        @MyModel.observer(newvalue=lambda v: type(v) == type(1.0))
        def newval_obs(model):
            self.observerlog.append("newval")
            
        self.M = MyModel
        self.m = MyModel()            # this will test the very basics
Ejemplo n.º 23
0
    def setUp(self):
        cells.reset()
        self.observerlog = []

        class MyModel(cells.Model):
            x = cells.makecell(value=5)
            a = cells.makecell(rule=lambda s, p: int(s.x) + s.offset)
            offset = 2

        # observes whole model
        @MyModel.observer()
        def model_obs(model):
            self.observerlog.append("model")

        # observes an input cell instance
        @MyModel.observer(attrib="x")
        def incell_obs(model):
            self.observerlog.append("x")

        # observes a rule cell instance
        @MyModel.observer(attrib="a")
        def rulecell_obs(model):
            self.observerlog.append("a")

        # observes a non-cell instance
        @MyModel.observer(attrib="offset")
        def noncell_obs(model):
            self.observerlog.append("offset")

        # observe an old value type
        @MyModel.observer(oldvalue=lambda v: type(v) == type(1))
        def oldval_obs(model):
            self.observerlog.append("oldval")

        # observe a new value type
        @MyModel.observer(newvalue=lambda v: type(v) == type(1.0))
        def newval_obs(model):
            self.observerlog.append("newval")

        self.M = MyModel
        self.m = MyModel()  # this will test the very basics
Ejemplo n.º 24
0
 def setUp(self):
     cells.reset()
     self.x = cells.Cell(None, name="x", value=1)
     self.b = cells.Cell(None, name="b", rule=lambda s,p: (p or 40) + 2)
     self.a = cells.Cell(None, name="a",
                         rule=lambda s,p: self.b.getvalue() * self.x.getvalue())
Ejemplo n.º 25
0
 def setUp(self):
     cells.reset()
Ejemplo n.º 26
0
 def test_1a_Nonsettability(self):
     "Rule 1: Rule cells may not be set"
     cells.reset()
     x = cells.RuleCell(None, lambda s,p: 0, name="x")
     self.failUnlessRaises(cells.RuleCellSetError, x.set, 5)
Ejemplo n.º 27
0
 def setUp(self):
     cells.reset()
     self.x = cells.InputCell(None, 5, name="x")
Ejemplo n.º 28
0
 def setUp(self):
     cells.reset()
     self.x = cells.DictCell(None, name="x")
Ejemplo n.º 29
0
 def setUp(self):
     cells.reset()
     self.x = cells.InputCell(None, 5, name="x")
Ejemplo n.º 30
0
 def test_1a_Nonsettability(self):
     "Rule 1: Rule cells may not be set"
     cells.reset()
     x = cells.RuleCell(None, lambda s, p: 0, name="x")
     self.failUnlessRaises(cells.RuleCellSetError, x.set, 5)
Ejemplo n.º 31
0
 def setUp(self):
     cells.reset()
     self.x = cells.Cell(None, name="x", value=21)
Ejemplo n.º 32
0
 def setUp(self):
     cells.reset()
Ejemplo n.º 33
0
 def setUp(self):
     cells.reset()
     self.x = cells.Cell(None, name="x", value=21)
Ejemplo n.º 34
0
 def setUp(self):
     cells.reset()
     self.x = cells.DictCell(None, name="x")