#!/usr/bin/env python
#*-* coding:utf-8 *-*
import unittest
import mathPlotting
import numpy as np
class Test_Function(unittest.TestCase):
def setUp(self):
self.f1=mathPlotting.Function('f(x)=x**2')
self.f2=mathPlotting.Function('g(x, y)=x*2-y+6')
def test_get_formula(self):
"""
questo test serve a validare
la funzione get_formula
"""
#f1 function
self.assertEqual(self.f1.get_formula(), "x**2")
self.assertNotEqual(self.f1.get_formula(), "=x**2")
self.assertEqual(self.f1.get_formula(), self.f1.formula)
self.assertEqual(self.f1.get_formula('g(x)=x+2-3'), "x+2-3")
#f2 function
self.assertEqual(self.f2.get_formula(), "x*2-y+6")
self.assertNotEqual(self.f2.get_formula(), "x**2")
self.assertEqual(self.f2.get_formula(), self.f2.formula)
def test_get_parameters(self):
"""
questo test serve a validare
la funzione get_parameters
"""
#f1 function
self.assertEqual(self.f1.get_parameters(), ['x'])
self.assertNotEqual(self.f1.get_parameters(), ["=x"])
self.assertEqual(self.f1.get_parameters(), self.f1.parameters)
self.assertEqual(self.f1.get_parameters('g(x)=x+2-3'), ['x'])
self.assertNotEqual(self.f1.get_parameters('g(x)=x+2-3'), ["(x"])
#f2 function
self.assertEqual(self.f2.get_parameters(), ['x', 'y'])
self.assertNotEqual(self.f2.get_parameters(), ["=x"])
self.assertEqual(self.f2.get_parameters(), self.f2.parameters)
self.assertEqual(self.f2.get_parameters('g(x, z)=x+2-3'), ['x', 'z'])
self.assertNotEqual(self.f2.get_parameters('g(x, z)=x+2-3'), ["(x", 'z'])
def test_get_name(self):
"""
questo test serve a validare
la funzione get_name
"""
#f1 function
self.assertEqual(self.f1.get_name(), 'f')
self.assertNotEqual(self.f1.get_name(), 'x')
self.assertEqual(self.f1.get_name(), self.f1.name)
self.assertEqual(self.f1.get_name('g(x)=x+2-3'), 'g')
self.assertNotEqual(self.f1.get_name('g(x)=x+2-3'), 'f')
#f2 function
self.assertEqual(self.f2.get_name(), 'g')
self.assertNotEqual(self.f2.get_name(), 'x')
self.assertEqual(self.f2.get_name(), self.f2.name)
self.assertEqual(self.f2.get_name('j(x)=x+2-3'), 'j')
self.assertNotEqual(self.f2.get_name('j(x)=x+2-3'), 'f')
def test_evaluate_with_parameters(self):
"""
questo test serve a validare
la funzione evaluate_with_parameters
"""
#f1 function
self.assertEqual(self.f1.evaluate_with_parameters([3]), 9)
self.assertEqual(self.f1.evaluate_with_parameters([8]), 64)
self.assertNotEqual(self.f1.evaluate_with_parameters([3]), 12)
self.assertNotEqual(self.f1.evaluate_with_parameters([8]), 81)
#f2 function
self.assertEqual(self.f2.evaluate_with_parameters([3, 2]), 10)
self.assertEqual(self.f2.evaluate_with_parameters([8, 8]), 14)
self.assertNotEqual(self.f2.evaluate_with_parameters([3, 2]), 12)
self.assertNotEqual(self.f2.evaluate_with_parameters([8, 8]), 81)
#if f2.eval_with_parameters is called with minus params than needed, it
#raises NameError
def test_evaluate(self):
"""
funzione che testa Function.evaluate()
(attualmente non funziona in caso di 2+ parametri)
"""
#f1 function
self.assertNotEqual(self.f1.evaluate(), None)
for n in [1, 8, 25, 85, 100, 150, 253]:
self.assertEqual(len(self.f1.evaluate(valueNumber=n)), n)
self.assertEqual(self.f1.evaluate()[0], 100)
self.assertEqual(round(self.f1.evaluate()[-1], 2), 96.04)
self.assertEqual(round(self.f1.evaluate()[50], 2), 0)
#f2 function
self.assertNotEqual(self.f2.evaluate(), None)
for n in [1, 8, 25, 85, 100, 150, 253]:
self.assertEqual(len(self.f2.evaluate(valueNumber=n)), n)
if __name__=="__main__":
unittest.main()