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_feuille_modifiee(): f = Feuille() f.modifiee = True f.executer('A=(1,2)') assert(f.modifiee) f.modifiee = False f.executer('A.x = 3') assert(f.modifiee) f.modifiee = False f.historique.annuler() assert(f.modifiee)
def test_noms_aleatoires(): f = Feuille() f.executer('A1=(1,2)') f.executer('A2=(1,0)') M = Point() s = Segment() g = Fonction('2x+7') assert f.nom_aleatoire(M) == 'M1' assert f.nom_aleatoire(s) == 's1' assert f.nom_aleatoire(g) == 'f1' assert f.nom_aleatoire(M, prefixe='A') == 'A3' # f0, f1, etc. sont réservés aux fonctions nom = f.nom_aleatoire(M, prefixe='f') assert re.match('[A-Za-z]{8}[0-9]+$', nom)
def test_noms_aleatoires(): f = Feuille() f.executer("A1=(1,2)") f.executer("A2=(1,0)") M = Point() s = Segment() g = Fonction("2x+7") assert f.nom_aleatoire(M) == "M1" assert f.nom_aleatoire(s) == "s1" assert f.nom_aleatoire(g) == "f1" assert f.nom_aleatoire(M, prefixe="A") == "A3" # f0, f1, etc. sont réservés aux fonctions nom = f.nom_aleatoire(M, prefixe="f") assert re.match("[A-Za-z]{8}[0-9]+$", nom)
def test_issue_227_bis(): f = Feuille() f.executer('F = (1;0)') f.executer('O = (0;0)') f.executer('ABCDEF = Polygone_regulier_centre(n=6,centre=O,sommet=F)') f.executer('S5.renommer("A", afficher_nom=True)') f.executer('A.renommer("B", afficher_nom=True)') assert 'S5' not in f.objets assert 'A' not in f.objets
def test_issue_186(): f = Feuille() f.executer("c=Cercle") assertRaises(NameError, f.executer, "C_'=_") assert(f.objets.has_key("c"))
def test_executer(): f = Feuille() o = f.objets f.executer("A = (1, 2)") f.executer("A.x += 1") assert(o.A.x == 2) f.executer("A' = 3, 4") f.executer("s = [A A']") f.executer("I = Milieu(s)") assertAlmostEqual(o.I.xy, (2.5, 3)) f.executer("del") assert("I" not in o.noms) assert("A_prime" in o.noms) f.executer("del") f.executer("del") assert("A_prime" not in o.noms) f.executer("= (1, 2)") assert(o.M1.coordonnees == (1, 2)) f.executer("txt0 = `Bonjour !`") f.executer(r"txt1 = `$P\`ere et m\`ere ont un accent grave.$`") f.executer("chaine_vide = ``") assert(o.txt0.texte == "Bonjour !") assert(o.txt1.texte == r"$P\`ere et m\`ere ont un accent grave.$") assert(o.chaine_vide.texte == "") f.executer("M = (5, 7)") f.executer("C = _") assert(o.C.x == 5) f.executer("=((i,sqrt(i)) for i in (3,4,5,6))") assert(o.M2.xy == (3, sqrt(3))) assert(o.M3.xy == (4, sqrt(4))) assert(o.M4.xy == (5, sqrt(5))) assert(o.M5.xy == (6, sqrt(6)))
def _eval2latex(code): print("code::" + repr(code)) feuille = Feuille(**kw) for commande in code.split("\n"): feuille.executer(commande) return feuille.exporter("tikz", echelle=scale)
def test_issue_250(): # «'» transformé en «_prime» f = Feuille() f.executer("txt=`prix unitaire en milliers d'euros`") assert f.objets.txt.texte == "prix unitaire en milliers d'euros"
def test_issue_252(): # Test de la conversion intelligente des virgules en points # dans l'interpréteur de commandes de geolib. # 1er cas : conserver les virgules # Par exemple, 'A=(1,2)' signifie 'A=(1, 2)' f = Feuille() f.executer("A=(1,5)") f.executer("B = (-2,3)") assert f.objets.A.xy == (1, 5) assert f.objets.B.xy == (-2, 3) # 2e cas : transformer les virgules en point (séparateur décimal) # Par exemple, 'g(1,3)' signifie 'g(1.3)' f.executer('g = Fonction("2x+3")') f.executer("a = g(5,3)") assertAlmostEqual(f.objets.a, 13.6) f.executer("=Point(1,5 ; g(1,5))") assertAlmostEqual(f.objets.M1.xy, (1.5, 6.)) f.executer('g2 = Fonction("3x+1")') f.executer("a = g2(-1,2)") assertAlmostEqual(f.objets.a, -2.6) f.executer("=Point(-1,5 ; g2(-1,5))") assertAlmostEqual(f.objets.M2.xy, (-1.5, -3.5))
def test_issue_227(): f = Feuille() f.executer('F = (1;0)') f.executer('O = (0;0)') f.executer('ABCDEF = Polygone_regulier_centre(n=6,centre=O,sommet=F)') try: f.executer('ABCDEF = Polygone_regulier_centre(n=6,centre=O,sommet=F)') except NameError: pass f.executer('S5.renommer("A", afficher_nom=True)') f.executer('S4.renommer("B", afficher_nom=True)') f.executer('S3.renommer("C", afficher_nom=True)') f.executer('S2.renommer("D", afficher_nom=True)') f.executer('S1.renommer("E", afficher_nom=True)') assert 'S1' not in f.objets assert 'S2' not in f.objets assert 'S3' not in f.objets assert 'S4' not in f.objets assert 'S5' not in f.objets f.executer('O = (-1;0)') f.historique.annuler() f.historique.refaire()