def assert_resultat(s, resultat, latex = None, **parametres): i = Interprete(verbose = VERBOSE, **parametres) r, l = i.evaluer(s) if r != resultat: i = Interprete(verbose = True, **parametres) r, l = i.evaluer(s) print "ERREUR (" + s + "): ", r, " != ", resultat assert(r == resultat) if latex is not None: latex = "$" + latex + "$" if l != latex: print "ERREUR (" + s + "): ", l, " != ", latex assert(l == latex)
def test_systeme(): i = Interprete(verbose = VERBOSE, adapter_separateur=False) i.evaluer("g(x)=a x^3+b x^2 + c x + d") i.evaluer("resoudre(g(-3)=2 et g(1)=6 et g(5)=3 et g'(1)=0)") res = i.derniers_resultats[-1] assert isinstance(res, dict) assertEqual(res, {S('a'): S(1)/128, S('b'): -S(31)/128, S('c'): S(59)/128, S('d'): S(739)/128})
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_issue_206_ter(): i = Interprete(verbose = VERBOSE) etat_interne = \ u"""_ = 0 @derniers_resultats = [ 'atan2(x, y)', ]""" i.load_state(etat_interne) i.evaluer('ln(9)-2ln(3)') assertDernier(i, '0')
def test_issue_206_bis(): i = Interprete(verbose = VERBOSE) etat_interne = \ u"""_ = 0 @derniers_resultats = [ 'Abs(x)', ]""" i.load_state(etat_interne) i.evaluer('abs(-24/5 - 2 i/5)') assertDernier(i, '2*145**(1/2)/5')
def test_issue_206(): i = Interprete(verbose = VERBOSE) etat_interne = \ u"""_ = 0 @derniers_resultats = [ 're(x)', ]""" i.load_state(etat_interne) i.evaluer("-1+\i\sqrt{3}") assertDernier(i, '-1 + 3**(1/2)*I') i.evaluer('-x**2 + 2*x - 3>>factor') assertDernier(i, '-x**2 + 2*x - 3')
def _eval2latex(code): print("code::" + repr(code)) return Interprete(**kw).evaluer(code.strip())[1]
def test_issue_185(): i = Interprete(verbose = VERBOSE) i.evaluer("a=1+I") i.evaluer("a z") assertDernier(i, 'z*(1 + I)')