Exemplo n.º 1
0
class ConditionalTemplate(_Template):

    has_length = False
    type = 'Conditional'

    def __init__(self, condition, name, parent):
        self.condition = ConditionParser(condition)
        _Template.__init__(self, name, parent)

    def encode(self, message_params, parent=None, name=None, little_endian=False):
        conditional = self._get_struct(name, parent)
        if conditional.exists:
            self._encode_fields(conditional,
                                self._get_params_sub_tree(message_params, name),
                                little_endian=little_endian)
        return conditional

    def decode(self, data, parent=None, name=None, little_endian=False):
        if self.condition.evaluate(parent):
            return _Template.decode(self, data, parent, name, little_endian)
        else:
            return self._get_struct(name, parent)

    def validate(self, parent, message_fields, name=None):
        name = name or self.name
        message = parent[name]
        if message.exists:
            return _Template.validate(self, message, self._get_params_sub_tree(message_fields, name))
        return []

    def _get_struct(self, name, parent):
        conditional = Conditional(name or self.name)
        conditional._parent = parent
        conditional.exists = self.condition.evaluate(parent)
        return conditional
 def condition_evaluate_exception(self, cond, msg_param):
     parent = create_message(msg_param)
     conditionparser = ConditionParser(cond)
     self.assertRaises(IllegalConditionException, conditionparser.evaluate,
                       parent)
 def condition(self, cond, msg_param, status):
     parent = create_message(msg_param)
     conditionparser = ConditionParser(cond)
     condition = conditionparser.evaluate(parent)
     self.assertEquals(condition, status)
Exemplo n.º 4
0
 def __init__(self, condition, name, parent):
     self.condition = ConditionParser(condition)
     _Template.__init__(self, name, parent)
Exemplo n.º 5
0
 def __init__(self, condition, name, parent):
     self.condition = ConditionParser(condition)
     _Template.__init__(self, name, parent)
Exemplo n.º 6
0
 def condition(self, cond, msg_param, status):
     parent = create_message(msg_param)
     conditionparser = ConditionParser(cond)
     condition = conditionparser.evaluate(parent)
     self.assertEquals(condition, status)