예제 #1
0
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)")
예제 #2
0
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)")
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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)
예제 #8
0
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
예제 #9
0
def test_issue_186():
    f = Feuille()
    f.executer("c=Cercle")
    assertRaises(NameError, f.executer, "C_'=_")
    assert(f.objets.has_key("c"))
예제 #10
0
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)))
예제 #11
0
 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)
예제 #12
0
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"
예제 #13
0
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))
예제 #14
0
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()
예제 #15
0
def test_issue_186():
    f = Feuille()
    f.executer("c=Cercle")
    assertRaises(NameError, f.executer, "C_'=_")
    assert(f.objets.has_key("c"))
예제 #16
0
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)))