def test_Quadrilatere(): A = rand_pt() B = rand_pt() C = rand_pt() D = rand_pt() p = Quadrilatere(A, B, C, D) assertAlmostEqual(p.centre.coordonnees, Barycentre(A, B, C, D).coordonnees)
def test_Glisseur_segment(): A = rand_pt() B = rand_pt() s = Segment(A, B) M = Glisseur_segment(s) assert(M in s) M.k = 0 assertEqual(M.k, 0) assertAlmostEqual(M.coordonnees, A.coordonnees) P = Point(*M.coordonnees) M.k = 1 assertEqual(M.k, 1) assertAlmostEqual(M.coordonnees, B.coordonnees) M.k = 2 assertEqual(M.k, 1) # 0<=k<=1 pour un segment assert(M in s) M.k = -1 assertEqual(M.k, 0) # 0<=k<=1 pour un segment assert(M in s) M.k = 1 Q = Point(*M.coordonnees) assertAlmostEqual(Droite(P, Q).equation_reduite, s.equation_reduite) M.k = 1.7 M(*M.coordonnees) assertAlmostEqual(M.k, 1)
def test_Orthocentre(): A, B, C = rand_pt(), rand_pt(), rand_pt() p = Polygone(A, B, C) H = Orthocentre(p) assert(Droite(A, H).perpendiculaire(Droite(B, C))) assert(Droite(B, H).perpendiculaire(Droite(A, C))) assert(Droite(C, H).perpendiculaire(Droite(B, A)))
def test_Carre_centre(): O = rand_pt() M = rand_pt() p = Carre_centre(O, M) assert(p.centre.existe and p.centre is O) assert(len(p.cotes) == 4) assertAlmostEqual(p.aire, p.cotes[0].longueur**2)
def test_Glisseur_segment(): A = rand_pt() B = rand_pt() s = Segment(A, B) M = Glisseur_segment(s) assert (M in s) M.k = 0 assertEqual(M.k, 0) assertAlmostEqual(M.coordonnees, A.coordonnees) P = Point(*M.coordonnees) M.k = 1 assertEqual(M.k, 1) assertAlmostEqual(M.coordonnees, B.coordonnees) M.k = 2 assertEqual(M.k, 1) # 0<=k<=1 pour un segment assert (M in s) M.k = -1 assertEqual(M.k, 0) # 0<=k<=1 pour un segment assert (M in s) M.k = 1 Q = Point(*M.coordonnees) assertAlmostEqual(Droite(P, Q).equation_reduite, s.equation_reduite) M.k = 1.7 M(*M.coordonnees) assertAlmostEqual(M.k, 1)
def test_Triangle(): A = rand_pt() B = rand_pt() C = rand_pt() t = Triangle(A, B, C) O = t.centre_cercle_circonscrit assertAlmostEqual(Segment(O, A).longueur, Segment(O, C).longueur)
def test_Parallelogramme(): A = rand_pt() B = rand_pt() C = rand_pt() p = Parallelogramme(A, B, C) D = p.sommets[3] assertEqual(Vecteur(A, B), Vecteur(D, C))
def test_Orthocentre(): A, B, C = rand_pt(), rand_pt(), rand_pt() p = Polygone(A, B, C) H = Orthocentre(p) assert (Droite(A, H).perpendiculaire(Droite(B, C))) assert (Droite(B, H).perpendiculaire(Droite(A, C))) assert (Droite(C, H).perpendiculaire(Droite(B, A)))
def test_Point_equidistant(): A = rand_pt() B = rand_pt() C = rand_pt() P = Point_equidistant(A, B, C) assertAlmostEqual(Segment(A, P).longueur, Segment(B, P).longueur) assertAlmostEqual(Segment(A, P).longueur, Segment(C, P).longueur) assert(P in Mediatrice(A, B))
def test_Point_equidistant(): A = rand_pt() B = rand_pt() C = rand_pt() P = Point_equidistant(A, B, C) assertAlmostEqual(Segment(A, P).longueur, Segment(B, P).longueur) assertAlmostEqual(Segment(A, P).longueur, Segment(C, P).longueur) assert (P in Mediatrice(A, B))
def test_Pentagone(): A = rand_pt() B = rand_pt() C = rand_pt() D = rand_pt() E = rand_pt() p = Pentagone(A, B, C, D, E) assertAlmostEqual(p.centre.coordonnees, Barycentre(A, B, C, D, E).coordonnees)
def test_Glisseur_arc_cercle(): A = rand_pt() B = rand_pt() C = rand_pt() a = Arc_cercle(A, B, C) M = Glisseur_arc_cercle(a) assert(M in a) O = a.centre M.coordonnees = O.coordonnees
def test_Centre_cercle_inscrit(): A, B, C = rand_pt(), rand_pt(), rand_pt() p = Polygone(A, B, C) I = Centre_cercle_inscrit(p) P = Projete_segment(I, Segment(B, C)) Q = Projete_segment(I, Segment(A, C)) R = Projete_segment(I, Segment(A, B)) c = Cercle(I, P) assert(P in c and Q in c and R in c)
def test_Centre_cercle_inscrit(): A, B, C = rand_pt(), rand_pt(), rand_pt() p = Polygone(A, B, C) I = Centre_cercle_inscrit(p) P = Projete_segment(I, Segment(B, C)) Q = Projete_segment(I, Segment(A, C)) R = Projete_segment(I, Segment(A, B)) c = Cercle(I, P) assert (P in c and Q in c and R in c)
def test_Glisseur_arc_cercle(): A = rand_pt() B = rand_pt() C = rand_pt() a = Arc_cercle(A, B, C) M = Glisseur_arc_cercle(a) assert (M in a) O = a.centre M.coordonnees = O.coordonnees
def test_Label_point(): A = rand_pt() B = rand_pt() A.label("Position de l'hirondelle d'Afrique.") B.label(u"Position de l'hirondelle européenne.") assert(A.label() == "Position de l'hirondelle d'Afrique.") assert(B.label() == u"Position de l'hirondelle européenne.") A.style(legende = NOM) assert(A.label() == "")
def test_Triangle_equilateral(): O = rand_pt() M = rand_pt() p = Triangle_equilateral(O, M) assert(p.centre.existe) assert(p.centre_cercle_circonscrit.existe) assert(p.centre_cercle_inscrit.existe) assert(p.orthocentre.existe) assert(p.orthocentre == p.centre == p.centre_cercle_circonscrit == p.centre_cercle_inscrit)
def test_Triangle_equilateral_centre(): O = rand_pt() M = rand_pt() p = Triangle_equilateral_centre(O, M) assert(p.centre.existe and p.centre is O) assert(p.centre_cercle_circonscrit.existe) assert(p.centre_cercle_inscrit.existe) assert(p.orthocentre.existe) assert p.orthocentre.confondu(p.centre, p.centre_cercle_circonscrit, p.centre_cercle_inscrit)
def test_Losange(): A = rand_pt() B = rand_pt() l = Losange(A, B) M, N, O, P = l.sommets diagonale1 = Droite(M, O) diagonale2 = Droite(N, P) assert(diagonale1.perpendiculaire(diagonale2)) cote = Droite(M, N) cote_oppose = Droite(O, P) assert(cote.parallele(cote_oppose))
def test_Rectangle(): A = rand_pt() B = rand_pt() r = Rectangle(A, B) M, N, O, P = r.sommets diagonale1 = Segment(M, O) diagonale2 = Segment(N, P) assertAlmostEqual(diagonale1.longueur, diagonale2.longueur) cote = Droite(M, N) cote_oppose = Droite(O, P) assert(cote.parallele(cote_oppose))
def test_Centre_alias(): u"Centre et Centre_gravite sont interchangeables." A = rand_pt() B = rand_pt() C = rand_pt() G = Centre(Triangle(A, B, C)) assertAlmostEqual(G.x, (A.x + B.x + C.x)/3) assertAlmostEqual(G.y, (A.y + B.y + C.y)/3) ce = Cercle(A, 1) G = Centre_gravite(ce) assertAlmostEqual(G.xy, A.xy)
def test_Centre_gravite(): A = rand_pt() B = rand_pt() C = rand_pt() I = Milieu(B, C) J = Milieu(A, C) K = Milieu(A, B) G = Centre_gravite(Triangle(A, B, C)) assertAlmostEqual(Segment(A, G).longueur, 2*Segment(I, G).longueur) assertAlmostEqual(Segment(B, G).longueur, 2*Segment(J, G).longueur) assertAlmostEqual(Segment(C, G).longueur, 2*Segment(K, G).longueur)
def test_Centre_gravite(): A = rand_pt() B = rand_pt() C = rand_pt() I = Milieu(B, C) J = Milieu(A, C) K = Milieu(A, B) G = Centre_gravite(Triangle(A, B, C)) assertAlmostEqual(Segment(A, G).longueur, 2 * Segment(I, G).longueur) assertAlmostEqual(Segment(B, G).longueur, 2 * Segment(J, G).longueur) assertAlmostEqual(Segment(C, G).longueur, 2 * Segment(K, G).longueur)
def test_Triangle_isocele(): A = rand_pt() B = rand_pt() tri = Triangle_isocele(A, B, 2*pi/13) C = tri.point3 a = Angle(B, A, C) assertAlmostEqual(a.radian, 2*pi/13) assertAlmostEqual(Segment(A, B).longueur, Segment(A, C).longueur) t1 = Triangle_isocele((0, 0), (1, 1), u'90°') assertAlmostEqual(t1.point3.xy, (-1, 1)) t2 = Triangle_isocele((0, 0), (2, 0), pi/3) assertAlmostEqual(t2.point3.xy, (2*cos(pi/3), 2*sin(pi/3)))
def test_Nuage(): A = rand_pt() B = rand_pt() C = rand_pt() D = rand_pt() while D in (A, B, C): D = rand_pt() n = Nuage(A, B, C) assert n.points == (A, B, C) assert A in n assert B in n assert C in n assert D not in n
def test_polygones_et_representants_de_vecteurs(): f = Feuille() f.objets.A = A = rand_pt() f.objets.B = B = rand_pt() f.objets.C = C = rand_pt() f.objets.p = Parallelogramme(A, B, C) f.objets.S1.renommer("D") s = repr(f.objets.p) del f.objets.p assert("D" not in f.objets) exec("p=" + s, f.objets) assert("D" in f.objets) assert(f.objets.D is f.objets.p.sommets[3])
def test_polygones_et_representants_de_vecteurs(): f = Feuille() f.objets.A = A = rand_pt() f.objets.B = B = rand_pt() f.objets.C = C = rand_pt() f.objets.p = Parallelogramme(A, B, C) f.objets.S1.renommer("D") s = repr(f.objets.p) del f.objets.p assert("D" not in f.objets) exec("p=" + s, f.objets) assert("D" in f.objets) assert(f.objets.D is f.objets.p.sommets[3])
def test_Polygone_regulier(): O = rand_pt() M = rand_pt() p = Polygone_regulier(O, M, 15) assert(len(p.cotes) == 15) assert(p.centre in Mediatrice(O, M)) for i in xrange(15): assertAlmostEqual(Segment(p.sommets[i%15], p.sommets[(i+1)%15]).longueur, Segment(p.sommets[(i+2)%15], p.sommets[(i+3)%15]).longueur) p = Polygone_regulier(O, M, 3) assert(isinstance(p, Triangle)) p = Polygone_regulier(O, M, 4) assert(isinstance(p, Quadrilatere)) # Test de régression : # la taille de str(p.points) croissait exponentiellement. assert(len(str(p.points)) < 30000)
def test_Projete_demidroite(): d = Demidroite(rand_pt(), rand_pt()) M = rand_pt() assert(Projete_demidroite(M, d) in d) A = Point(0, 1) B = Point(2, 1) s = Demidroite(A, B) M = Point(1, 7.15) P = Projete_demidroite(M, s) assertAlmostEqual(Milieu(A, B).coordonnees, P.coordonnees) M.x = .5 assertAlmostEqual(Barycentre((A, 3), (B, 1)).coordonnees, P.coordonnees) M.x = -1 assertAlmostEqual(A.coordonnees, P.coordonnees) M.x = 3 assertAlmostEqual(Barycentre((A, -1), (B, 3)).coordonnees, P.coordonnees)
def test_Projete_segment(): s = Segment(rand_pt(), rand_pt()) M = rand_pt() assert (Projete_segment(M, s) in s) A = Point(0, 1) B = Point(2, 1) s = Segment(A, B) M = Point(1, 7.15) P = Projete_segment(M, s) assertAlmostEqual(Milieu(A, B).coordonnees, P.coordonnees) M.x = .5 assertAlmostEqual(Barycentre((A, 3), (B, 1)).coordonnees, P.coordonnees) M.x = -1 assertAlmostEqual(A.coordonnees, P.coordonnees) M.x = 3 assertAlmostEqual(B.coordonnees, P.coordonnees)
def test_Projete_segment(): s = Segment(rand_pt(), rand_pt()) M = rand_pt() assert(Projete_segment(M, s) in s) A = Point(0, 1) B = Point(2, 1) s = Segment(A, B) M = Point(1, 7.15) P = Projete_segment(M, s) assertAlmostEqual(Milieu(A, B).coordonnees, P.coordonnees) M.x = .5 assertAlmostEqual(Barycentre((A, 3), (B, 1)).coordonnees, P.coordonnees) M.x = -1 assertAlmostEqual(A.coordonnees, P.coordonnees) M.x = 3 assertAlmostEqual(B.coordonnees, P.coordonnees)
def test_Projete_demidroite(): d = Demidroite(rand_pt(), rand_pt()) M = rand_pt() assert (Projete_demidroite(M, d) in d) A = Point(0, 1) B = Point(2, 1) s = Demidroite(A, B) M = Point(1, 7.15) P = Projete_demidroite(M, s) assertAlmostEqual(Milieu(A, B).coordonnees, P.coordonnees) M.x = .5 assertAlmostEqual(Barycentre((A, 3), (B, 1)).coordonnees, P.coordonnees) M.x = -1 assertAlmostEqual(A.coordonnees, P.coordonnees) M.x = 3 assertAlmostEqual(Barycentre((A, -1), (B, 3)).coordonnees, P.coordonnees)
def test_Carre(): O = rand_pt() M = rand_pt() p = Carre(O, M) A, B, C, D = p.sommets assert(p.centre == Milieu(A, C) == Milieu(B, D)) assert(A == O and B == M) assert(len(p.cotes) == 4) assertAlmostEqual(p.aire, p.cotes[0].longueur**2) # Test redéfinition d'un sommet c = Carre((3, 2), (7, 2)) M = Point(0, 2) c.point1 = M assert(c.point1 is M) assert(c.regulier) assertAlmostEqual(c.aire, 49) assertAlmostEqual(c.point4.coordonnees, (0, 9))
def test_Polygone_regulier_centre(): O = rand_pt() M = rand_pt() p = Polygone_regulier_centre(O, M, 15) assert(len(p.cotes) == 15) assert(p.centre is O) for Mi in p.sommets: assertAlmostEqual(Segment(O, Mi).longueur, Segment(O, M).longueur) for i in xrange(10): coeffs = tuple(random() for i in xrange(15)) G = Barycentre(*zip(p.sommets, coeffs)) assert(G in p) # cas particuliers : p = Polygone_regulier_centre(O, M, 3) assert(isinstance(p, Triangle)) p = Polygone_regulier_centre(O, M, 4) assert(isinstance(p, Quadrilatere)) assert(len(str(p.points)) < 30000)
def test_Droite_vectorielle(): v = Vecteur_libre(1, 7) A = Point(-2, 3) d = Droite_vectorielle(A, v) assert (d.vecteur is v and d.point is A) assertAlmostEqual(v.y / v.x, -d.equation[0] / d.equation[1]) B = rand_pt() d1 = Droite_vectorielle(B, v) assert (d.parallele(d1))
def test_Droite_vectorielle(): v = Vecteur_libre(1, 7) A = Point(-2, 3) d = Droite_vectorielle(A, v) assert(d.vecteur is v and d.point is A) assertAlmostEqual(v.y/v.x, -d.equation[0]/d.equation[1]) B = rand_pt() d1 = Droite_vectorielle(B, v) assert(d.parallele(d1))
def test_Octogone(): A = rand_pt() B = rand_pt() C = rand_pt() D = rand_pt() E = rand_pt() F = rand_pt() G = rand_pt() H = rand_pt() p = Octogone(A, B, C, D, E, F, G, H) assertAlmostEqual(p.centre.coordonnees, Barycentre(A, B, C, D, E, F, G, H).coordonnees)
def test_latex_incorrect(): u"On teste le comportement en cas de code LaTeX incorrect." A = rand_pt() A.label('2$') assertEqual(A.label(), r'2\$') A.label('US$2.50') assertEqual(A.label(), r'US\$2.50') A.label('$M__i$') assertEqual(A.label(), r'\$M__i\$') A.label('2$')
def test_Polygone_regulier_centre(): O = rand_pt() M = rand_pt() p = Polygone_regulier_centre(O, M, 15) assert(len(p.cotes) == 15) assert(p.centre is O) for Mi in p.sommets: assertAlmostEqual(Segment(O, Mi).longueur, Segment(O, M).longueur) for i in xrange(10): coeffs = tuple(random() for i in xrange(15)) G = Barycentre(*zip(p.sommets, coeffs)) assert(G in p) G.points_ponderes[randint(11)].coefficient = -5 assert(G not in p) # cas particuliers : p = Polygone_regulier_centre(O, M, 3) assert(isinstance(p, Triangle)) p = Polygone_regulier_centre(O, M, 4) assert(isinstance(p, Quadrilatere)) assert(len(str(p.points)) < 30000)
def test_Heptagone(): A = rand_pt() B = rand_pt() C = rand_pt() D = rand_pt() E = rand_pt() F = rand_pt() G = rand_pt() p = Heptagone(A, B, C, D, E, F, G) assertAlmostEqual(p.centre.coordonnees, Barycentre(A, B, C, D, E, F, G).coordonnees)
def test_Point(): A = Point(1, 2) assert (isinstance(A.etiquette, Label_point)) assertEqual(A.x, 1) assertEqual(A.y, 2) assertEqual(type(A.coordonnees), tuple) A.x = 5 A.y = 7 assertEqual(A.coordonnees, (5, 7)) assert (A.style("legende") == NOM) # Test du typage dynamique d = Droite(rand_pt(), rand_pt()) B = Point(d) assert (isinstance(B, Glisseur_droite)) c = Cercle(A, 3) C = Point(c) assert (isinstance(C, Glisseur_cercle)) d = Demidroite(rand_pt(), rand_pt()) B = Point(d) assert (isinstance(B, Glisseur_demidroite)) s = Segment(rand_pt(), rand_pt()) B = Point(s) assert (isinstance(B, Glisseur_segment)) a = Arc_points(Point(), Point(1, 1), Point(1, 2)) B = Point(a) assert (isinstance(B, Glisseur_arc_cercle))
def test_Point(): A = Point(1, 2) assert(isinstance(A.etiquette, Label_point)) assertEqual(A.x, 1) assertEqual(A.y, 2) assertEqual(type(A.coordonnees), tuple) A.x = 5 A.y = 7 assertEqual(A.coordonnees, (5, 7)) assert(A.mode_affichage == NOM) # Test du typage dynamique d = Droite(rand_pt(), rand_pt()) B = Point(d) assert(isinstance(B, Glisseur_droite)) c = Cercle(A, 3) C = Point(c) assert(isinstance(C, Glisseur_cercle)) d = Demidroite(rand_pt(), rand_pt()) B = Point(d) assert(isinstance(B, Glisseur_demidroite)) s = Segment(rand_pt(), rand_pt()) B = Point(s) assert(isinstance(B, Glisseur_segment)) a = Arc_points(Point(), Point(1, 1), Point(1, 2)) B = Point(a) assert(isinstance(B, Glisseur_arc_cercle))
def test_Glisseur_droite(): A = rand_pt() B = rand_pt() d = Droite(A, B) M = Glisseur_droite(d) assert (M in d) M.k = 0 assertEqual(M.k, 0) assertAlmostEqual(M.coordonnees, A.coordonnees) P = Point(*M.coordonnees) M.k = 1 assertEqual(M.k, 1) assertAlmostEqual(M.coordonnees, B.coordonnees) M.k = 2 assertEqual(M.k, 2) M.k = -1 assertEqual(M.k, -1) Q = Point(*M.coordonnees) assertAlmostEqual(Droite(P, Q).equation_reduite, d.equation_reduite) M.k = 1.7 M(*M.coordonnees) assertAlmostEqual(M.k, 1.7)
def test_Projete_arc_cercle(): O = Point(23.15, -12.75) A = Point(-12.5, 7.14) B = Point(7.15, 8.64) a = Arc_cercle(O, A, B) M = rand_pt() P = Projete_arc_cercle(M, a) assert (P in a) M.coordonnees = a.centre.coordonnees assert (not P.existe) M.coordonnees = -17.826266675199999, 11.760911186 assert (type(P.coordonnees) is tuple) assertAlmostEqual(A.coordonnees, P.coordonnees) assertEqual(A, P)
def test_Intersection_droites(): d1 = rand_dte() d2 = rand_dte() A = Intersection_droites(d1, d2) if not d1.parallele(d2): assert (A in d1 and A in d2) d3 = Parallele(d1, rand_pt()) assert (not Intersection_droites(d1, d3).existe) D = Point(-14.201335283549275, 1.5093204196583834) U = Point(-14.201335283549273, 17.644024286752096) d = Droite(U, D) s = Segment(U, D) V = Point(1.933368583544437, 7.5065025053891166) W = Point(7.1347038670937115, 8.3895493390615954) d2 = Droite(W, V) M1 = Intersection_droites(s, d2) M2 = Intersection_droites(d, d2) assert (M1.existe) assert (M2.existe)
def test_Triangle_rectangle(): t = Triangle_rectangle(rand_pt(), rand_pt(), pi/7) a = Angle(t.point1, t.point3, t.point2) assertAlmostEqual(a.degre, 90)
def test_Centre_cercle_circonscrit(): A, B, C = rand_pt(), rand_pt(), rand_pt() p = Polygone(A, B, C) O = Centre_cercle_circonscrit(p) assert (O == Point_equidistant(A, B, C))