Ejemplo n.º 1
0
    def buy(self, txn, quantity: tc.Number):
        producer = tc.use(Producer)

        return self.grant(
            SCOPE,
            {"/state/scalar/op/post": [("buy_result", producer.buy(quantity=quantity))]},
            {"quantity": quantity},
        )
Ejemplo n.º 2
0
    def weigh(self, txn, key: tc.Nil, new_value: tc.Number):
        left = tc.use(Left)

        txn.total = CONSERVED
        txn.current = self.weight.subject()
        txn.update = tc.After(self.weight.set(new_value),
                              left.weigh(None, txn.total - new_value))

        return tc.If(txn.current == new_value, None, txn.update)
Ejemplo n.º 3
0
 def room_area(self, txn, dimensions: tc.Tuple) -> Meters:
     area_service = tc.use(AreaService)
     txn.length = area_service.Meters(dimensions[0])
     txn.width = area_service.Meters(dimensions[1])
     return area_service.area(length=txn.length, width=txn.width)
Ejemplo n.º 4
0
 def testAreaService(self):
     service = tc.use(AreaService)
     params = {"length": service.Meters(5), "width": service.Meters(2)}
     self.assertEqual(self.host.post("/app/area/area", params), 10)
Ejemplo n.º 5
0
 def weigh(self, txn, key: tc.Nil, weight: tc.Number):
     left = tc.use(Left)
     txn.total = CONSERVED
     txn.update = tc.After(left.weigh(None, txn.total - weight),
                           self.weight.set(weight))
     return tc.If(self.weight.subject() == weight, None, txn.update)