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
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