def test_session(): i = Interprete(verbose = VERBOSE) i.evaluer("1+7") i.evaluer("x-3") i.evaluer("ans()+ans(1)") assertDernier(i, "x + 5") i.evaluer("f(x, y, z)=2x+3y-z") i.evaluer("f(-1, 5, a)") assertDernier(i, "-a + 13") i.evaluer("f(x)=x^2-7x+3") i.evaluer("f'(x)") assertDernier(i, "2*x - 7") # Noms réservés assertRaises(NameError, i.evaluer, "e=3") assertRaises(NameError, i.evaluer, "pi=3") assertRaises(NameError, i.evaluer, "i=3") assertRaises(NameError, i.evaluer, "oo=3") assertRaises(NameError, i.evaluer, "factorise=3") # Etc. # Test des générateurs i.evaluer('f(x)=x+3') i.evaluer('[f(j) for j in range(1, 11)]') assertDernier(i, '[4, 5, 6, 7, 8, 9, 10, 11, 12, 13]') i.evaluer('tuple(i for i in range(7))') assertDernier(i, '(0, 1, 2, 3, 4, 5, 6)') i.evaluer('[j for j in range(7)]') assertDernier(i, '[0, 1, 2, 3, 4, 5, 6]') # _11 is an alias for ans(11) i.evaluer('_11 == _') assertDernier(i, 'True') i.evaluer('_7') assertDernier(i, "2*x - 7") # _ is an alias for ans(-1), __ is an alias for ans(-2), and so on. i.evaluer('_ == -7 + 2*x') assertDernier(i, 'True') i.evaluer('__') assertDernier(i, "2*x - 7") i.evaluer('______') # ans(-6) assertDernier(i, '(0, 1, 2, 3, 4, 5, 6)') # Affichage des chaînes en mode text (et non math) i.evaluer('"Bonjour !"') assert i.latex_dernier_resultat == u'\u201CBonjour !\u201D' # Virgule comme séparateur décimal resultat, latex = i.evaluer('1,2') assert resultat == '1,2' assertAlmostEqual(i.derniers_resultats[-1], 1.2) # Avec un espace, c'est une liste (tuple) par contre resultat, latex = i.evaluer('1, 2') assertEqual(resultat, '(1 ; 2)') resultat, latex = i.evaluer('"1.2"') assert resultat == '"1.2"' i.evaluer('?aide') i.evaluer('aide?') i.evaluer('aide(aide)') msg_aide = u"\n== Aide sur aide ==\nRetourne (si possible) de l'aide sur la fonction saisie." resultats = i.derniers_resultats assert resultats[-3:] == [msg_aide, msg_aide, msg_aide] # LaTeX latex = i.evaluer("gamma(x)")[1] assertEqual(latex, r'$\mathrm{\Gamma}\left(x\right)$')
def test_erreurs_mathematiques(): u = Variable(randint(50) - randint(50)+random()) def diviser(x, y): return x/y assertRaises(ZeroDivisionError, diviser, u.val, 0) def puissance(x, y): return x**y assertRaises(OverflowError, puissance, Variable(25.17).val, 10000)
def test_session(): i = Interprete(verbose = VERBOSE) i.evaluer("1+7") i.evaluer("x-3") i.evaluer("ans()+ans(1)") assertDernier(i, "x + 5") i.evaluer("f(x, y, z)=2x+3y-z") i.evaluer("f(-1, 5, a)") assertDernier(i, "-a + 13") i.evaluer("f(x)=x^2-7x+3") i.evaluer("f'(x)") assertDernier(i, "2*x - 7") # Noms réservés assertRaises(NameError, i.evaluer, "e=3") assertRaises(NameError, i.evaluer, "pi=3") assertRaises(NameError, i.evaluer, "i=3") assertRaises(NameError, i.evaluer, "oo=3") assertRaises(NameError, i.evaluer, "factorise=3") # Etc. # Test des générateurs i.evaluer('f(x)=x+3') i.evaluer('[f(j) for j in range(1,11)]') assertDernier(i, '[4, 5, 6, 7, 8, 9, 10, 11, 12, 13]') i.evaluer('tuple(i for i in range(7))') assertDernier(i, '(0, 1, 2, 3, 4, 5, 6)') i.evaluer('[j for j in range(7)]') assertDernier(i, '[0, 1, 2, 3, 4, 5, 6]') # _11 is an alias for ans(11) i.evaluer('_11 == _') assertDernier(i, 'True') i.evaluer('_7') assertDernier(i, "2*x - 7") # _ is an alias for ans(-1), __ is an alias for ans(-2), and so on. i.evaluer('_ == -7 + 2*x') assertDernier(i, 'True') i.evaluer('__') assertDernier(i, "2*x - 7") i.evaluer('______') # ans(-6) assertDernier(i, '(0, 1, 2, 3, 4, 5, 6)') # Affichage des chaînes en mode text (et non math) i.evaluer('"Bonjour !"') assert i.latex_dernier_resultat == u'\u201CBonjour !\u201D' i.changer_separateurs = True resultat, latex = i.evaluer('1,2') assert resultat == '1,2' assertAlmostEqual(i.derniers_resultats[-1], 1.2) resultat, latex = i.evaluer('"1,2"') assert resultat == '"1,2"' i.evaluer('?aide') i.evaluer('aide?') i.evaluer('aide(aide)') msg_aide = u"\n== Aide sur aide ==\nRetourne (si possible) de l'aide sur la fonction saisie." resultats = i.derniers_resultats assert resultats[-3:] == [msg_aide, msg_aide, msg_aide] # LaTeX latex = i.evaluer("gamma(x)")[1] assert latex == r'$\mathrm{\Gamma}\left(x\right)$'
def test_erreurs_mathematiques(): u = Variable(randint(50) - randint(50) + random()) def diviser(x, y): return x / y assertRaises(ZeroDivisionError, diviser, u, 0) def puissance(x, y): return x**y assertRaises(OverflowError, puissance, Variable(25.17), 10000)
def test_Demidroite(): A = Point(4.5, 7.3) B = Point(4, 2.1) s = Demidroite(A, B) assert (isinstance(s.etiquette, Label_demidroite)) assertRaises(AttributeError, getattr, s, "longueur") I = Milieu(s.origine, s.point) assertEqual(I.coordonnees, ((A.x + B.x) / 2, (A.y + B.y) / 2)) M = Barycentre((A, 1), (B, -2)) N = Barycentre((A, -2), (B, 1)) assert (I in s) assert (M in s) assert (N not in s) assert (s.style("legende") == RIEN)
def test_Demidroite(): A = Point(4.5, 7.3) B = Point(4, 2.1) s = Demidroite(A, B) assert(isinstance(s.etiquette, Label_demidroite)) assertRaises(AttributeError, getattr, s, "longueur") I = Milieu(s.origine, s.point) assertEqual(I.coordonnees, ((A.x+B.x)/2, (A.y+B.y)/2)) M = Barycentre((A, 1), (B, -2)) N = Barycentre((A, -2), (B, 1)) assert(I in s) assert(M in s) assert(N not in s) assert(s.mode_affichage == RIEN)
def test_prime(): # Cf. issue 129 f = Feuille() f.executer('F = Fonction("2x+7")') assertRaises(NameError, f.executer, "F'' = (1, 4)") f.executer("G''' = (-3, 6)") assertRaises(NameError, f.executer, 'G = Fonction("3x+2")') assertRaises(NameError, f.executer, '''H' = Fonction("2x-4")''') assertRaises(NameError, f.executer, "f1' = (1, 2)")
def test_Droite(): A = Point(4.5, 7.3) B = Point(4, 2.1) d = Droite(A, B) assert (isinstance(d.etiquette, Label_droite)) assertRaises(AttributeError, getattr, d, "longueur") I = Milieu(d.point1, d.point2) assertEqual(I.coordonnees, ((A.x + B.x) / 2, (A.y + B.y) / 2)) M = Barycentre((A, 1), (B, -2)) N = Barycentre((A, -2), (B, 1)) assert (I in d) assert (M in d) assert (N in d) assert (isinstance(d.equation, tuple)) assert (d.style("legende") == RIEN) # Test du typage dynamique d = Droite("y=x+1") assert (Point(0, 1) in d) d = Droite(Point(1, 2), Vecteur_libre(1, 1)) assert (Point(1, 2) in d) assert (Point(2, 3) in d) d2 = Droite("y=-x+1") assert (Point(0, 1) in d2) assert (Point(1, 0) in d2)
def test_Droite(): A = Point(4.5, 7.3) B = Point(4, 2.1) d = Droite(A, B) assert(isinstance(d.etiquette, Label_droite)) assertRaises(AttributeError, getattr, d, "longueur") I = Milieu(d.point1, d.point2) assertEqual(I.coordonnees, ((A.x+B.x)/2, (A.y+B.y)/2)) M = Barycentre((A, 1), (B, -2)) N = Barycentre((A, -2), (B, 1)) assert(I in d) assert(M in d) assert(N in d) assert(isinstance(d.equation, tuple)) assert(d.mode_affichage == RIEN) # Test du typage dynamique d = Droite("y=x+1") assert(Point(0, 1) in d) d = Droite(Point(1, 2), Vecteur_libre(1, 1)) assert(Point(1, 2) in d) assert(Point(2, 3) in d) d2 = Droite("y=-x+1") assert(Point(0, 1) in d2) assert(Point(1, 0) in d2)
def test_issue_186(): f = Feuille() f.executer("c=Cercle") assertRaises(NameError, f.executer, "C_'=_") assert(f.objets.has_key("c"))