Esempio n. 1
0
    def setUp(self):
        # pylint: disable=invalid-name

        self.model = TestEquation.MockModel()
        self.model.variables['x'] = Variable('x')
        self.model.variables['y'] = Variable('y')
        self.model.variables['z'] = Variable('z')
        self.x = self.model.variables['x']
        self.x.model = self.model
        self.y = self.model.variables['y']
        self.y.model = self.model
        self.z = self.model.variables['z']
        self.z.model = self.model

        self.model.parameters['a'] = Parameter('a')
        self.model.parameters['b'] = Parameter('b')
        self.a = self.model.parameters['a']
        self.a.model = self.model
        self.b = self.model.parameters['b']
        self.b.model = self.model

        for var in self.model.variables.values():
            _add_var_to_context(self.model._local_context, var)
        for param in self.model.parameters.values():
            _add_param_to_context(self.model._local_context, param)
        _add_functions(self.model._local_context)
Esempio n. 2
0
    def var(self, name, desc=None, default=None):
        """ Creates a variable for use within the model.

            Arguments:
                name: The name of the variable.  This is the symbol
                    used in the equations.
                desc: A longer description of the variable.
                default: The default value of the variable, if the
                    value is not set.

            Returns: a Variable

            Raises:
                DuplicateNameError:
        """
        if default is None:
            default = self._var_default
        if name in self.variables or name in self.parameters:
            raise DuplicateNameError('Name already in use: ' + name)
        var = Variable(name, desc=desc, default=default)
        self.variables[name] = var
        var.model = self

        _add_var_to_context(self._local_context, var)
        self._need_function_update = True
        return var
Esempio n. 3
0
    def var(self, name, desc=None, default=None):
        """ Creates a variable for use within the model.

            Arguments:
                name: The name of the variable.  This is the symbol
                    used in the equations.
                desc: A longer description of the variable.
                default: The default value of the variable, if the
                    value is not set.

            Returns: a Variable

            Raises:
                DuplicateNameError:
        """
        if default is None:
            default = self._var_default
        if name in self.variables or name in self.parameters:
            raise DuplicateNameError('Name already in use: ' + name)
        var = Variable(name, desc=desc, default=default)
        self.variables[name] = var
        var.model = self

        _add_var_to_context(self._local_context, var)
        self._need_function_update = True
        return var
Esempio n. 4
0
    def test_equation_rewrite(self):
        """ Test the equation rewriting function """
        variables = dict()
        variables['x'] = Variable('x')
        variables['y'] = Variable('y')
        self.assertEquals('x - y', _rewrite(variables, {}, 'x - y'))
        self.assertEquals('xx - y', _rewrite(variables, {}, 'xx - y'))
        self.assertEquals('xx - yx', _rewrite(variables, {}, 'xx - yx'))
        self.assertEquals('xx(0) - yx', _rewrite(variables, {}, 'xx(0) - yx'))
        self.assertEquals('_series_acc(x,-1)',
                          _rewrite(variables, {}, 'x(-1)'))
        self.assertEquals('_series_acc(x,-t)',
                          _rewrite(variables, {}, 'x(-t)'))

        parameters = dict()
        parameters['a'] = Parameter('a')
        parameters['b'] = Parameter('b')
        self.assertEquals('_series_acc(a,-1)', _rewrite({}, parameters,
                                                        'a(-1)'))
Esempio n. 5
0
    def test_seriesparameter_access(self):
        """ Test get/set access of value attribute """
        model = TestSeriesParameter.MockModel()

        varx = Variable('x', default=-1)
        varx.model = model

        param = SeriesParameter('a', variable=varx, iteration=-1)
        self.assertEquals(-1, param.value)
        self.assertEquals(model.last_variable, varx)
        self.assertEquals(model.last_iteration, -1)

        param = SeriesParameter('a', variable=varx, iteration=2)
        self.assertEquals(2, param.value)
        self.assertEquals(model.last_variable, varx)
        self.assertEquals(model.last_iteration, 2)

        with self.assertRaises(AttributeError):
            param.value = 4
Esempio n. 6
0
 def test_illegal_names(self):
     """ Test for illeagl name handling """
     for name in Variable.ILLEGAL_NAMES:
         with self.assertRaises(InvalidNameError) as context:
             Variable(name)
         self.assertEquals(name, context.exception.name)