Source code for tests.abstract.test_math

#!/usr/bin/env python
# encoding: utf-8
#
# Copyright SAS Institute
#
#  Licensed under the Apache License, Version 2.0 (the License);
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#

"""
Unit tests for math functions.
"""

import unittest
import warnings
from inspect import cleandoc

import sasoptpy as so
import sasoptpy.abstract.math as sm
import math


[docs]class TestAbstractMath(unittest.TestCase): """ Unit tests for mathematical functions """ def setUp(self): so.reset() def test_warn(self): def regular_import(): import sasoptpy.math self.assertWarns(DeprecationWarning, regular_import) def test_functions(self): x = so.Variable(name='x') x.set_value(2) def check_value(expression, value, exp_str): self.assertEqual(expression.get_value(), value) self.assertEqual(so.to_expression(expression), exp_str) check_value(sm.abs(-x), 2, 'abs(- x)') check_value(sm.log(x/2), 0, 'log(0.5 * x)') check_value(sm.log2(2*x), 2, 'log2(2 * x)') check_value(sm.log10(5*x), 1, 'log10(5 * x)') check_value(sm.exp(x), math.exp(2), 'exp(x)') check_value(sm.sqrt(x**2), 2, 'sqrt((x) ^ (2))') check_value(sm.mod(5*x, 3), 1, 'mod(5 * x , 3)') check_value(sm.int(x+0.5), 2, 'int(x + 0.5)') check_value(sm.sign(-2 * x), -1, 'sign(- 2 * x)') check_value(sm.tan(x), math.tan(2), 'tan(x)') check_value(sm.sinh(x), math.sinh(2), 'sinh(x)') check_value(sm.cosh(x), math.cosh(2), 'cosh(x)') check_value(sm.tanh(x), math.tanh(2), 'tanh(x)')