def test_info(): a = Angle_libre(u"30°") assert str(a.deg) == '30' with contexte(unite_angle='d'): assert a.info == u'Angle de valeur 30°' with contexte(unite_angle='r'): assert a.info == u'Angle de valeur pi/6 rad' with contexte(unite_angle='g'): assert a.info == u'Angle de valeur 100/3 grad'
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))) with contexte(unite_angle='d'): t2.point3.xy = (0, 9) assertAlmostEqual(t2.point3.xy, (0, 2)) with contexte(unite_angle='r'): t2.point3.xy = (0, 9) assertAlmostEqual(t2.point3.xy, (0, 2))
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))) with contexte(unite_angle='d'): t2.point3.xy = (0, 9) assertAlmostEqual(t2.point3.xy, (0, 2)) with contexte(unite_angle='r'): t2.point3.xy = (0, 9) assertAlmostEqual(t2.point3.xy, (0, 2))
def test_formules(): f = Feuille() o = f.objets o.A = Point(e, 3) o.M = Point() o.M.label(u'{1/ln(A.x) + A.y}', mode='formule') # Détails d'implémentation (peut être modifié par la suite) assert o.M.mode_affichage == 'formule' assertEqual(o.M.etiquette.texte, u'{1/ln(A.x)+A.y}') assert isinstance(o.M.etiquette.formule, Formule) # Par contre, ceci doit rester valable quelle que soit l'implémentation ! assertAlmostEqual(float(o.M.label()), 4.) o.A.x = e**2 with contexte(separateur_decimal='.'): assertEqual(o.M.label(), '3.5') with contexte(separateur_decimal=','): assertEqual(o.M.label(), '3,5')
def test_info(): f = Feuille() o = f.objets with contexte(decimales = 2): A = o.A = Point(5, 7) assert(A.info == u"Point A de coordonnées (5, 7)") B = o.B = Point(6.5, 9.3) assert(B.info == u"Point B de coordonnées (6.5, 9.3)") s = o.s = Segment(A, B) assert(s.info == u"Segment s de longueur 2.75") c = o.c = Cercle(s) assert(c.info == u"Cercle c de rayon 1.37") d = o.d = Droite(A, B) assert(d.info == u"Droite d d'équation -2.3 x + 1.5 y + 1 = 0") C = o.C = Point(-1.5, 2.7) a = o.a = Arc_cercle(A, B, C) assert(a.info == u'Arc a de longueur 7.5') alpha = o.alpha = Angle(A, B, C) assert(alpha.info == u'Angle alpha de valeur 0.3') with contexte(decimales = 3): assert(a.info == u'Arc a de longueur 7.505')
def test_info(): f = Feuille() o = f.objets with contexte(decimales=2): A = o.A = Point(5, 7) assert A.info == u"Point A de coordonnées (5 ; 7)" B = o.B = Point(6.5, 9.3) assert B.info == u"Point B de coordonnées (6,5 ; 9,3)" s = o.s = Segment(A, B) assert s.info == u"Segment s de longueur 2,75" c = o.c = Cercle(s) assert c.info == u"Cercle c de rayon 1,37" d = o.d = Droite(A, B) assert d.info == u"Droite d d'équation -2,3 x + 1,5 y + 1 = 0" C = o.C = Point(-1.5, 2.7) a = o.a = Arc_cercle(A, B, C) assert a.info == u"Arc a de longueur 7,5" alpha = o.alpha = Angle(A, B, C) assertEqual(alpha.info, u"Angle alpha de valeur 0,3 rad") with contexte(decimales=3): assert a.info == u"Arc a de longueur 7,505"
def test_contexte_degre(): with contexte(unite_angle='d'): a = Angle_libre('pi rad') assertAlmostEqual(a.deg, 180) a = Angle_libre('100 grad') assertAlmostEqual(a.deg, 90) b = Angle_libre(30) assertAlmostEqual(b.rad, math.pi / 6) # En interne, tout doit être stocké en radians assert float(b.val) == float(b.rad) # On doit avoir eval(repr(b)) == b assertAlmostEqual(eval(repr(b)).deg, 30)
def test_contexte_degre(): with contexte(unite_angle='d'): a = Angle_libre('pi rad') assertAlmostEqual(a.deg, 180) a = Angle_libre('100 grad') assertAlmostEqual(a.deg, 90) b = Angle_libre(30) assertAlmostEqual(b.rad, math.pi/6) # En interne, tout doit être stocké en radians assert float(b.val) == float(b.rad) # On doit avoir eval(repr(b)) == b assertAlmostEqual(eval(repr(b)).deg, 30)
def assert_eq(*args): assert len(args) > 2 locals_ = args[-1] expected = S(args[-2]) args = args[:-2] for exact in (True, False): if not exact: expected = tofloat(expected) with contexte(exact=exact): for arg in args: val = eval(arg, locals_) TEST = (allsym(val) if exact else allnum(val)) if not TEST: print(repr(val) + ' should only contain %s.' %('exact values' if exact else 'floats')) assert TEST TEST = eq(val, expected) if not TEST: print("'%s' equals to '%s', not '%s'." %(arg, repr(val), repr(expected))) assert TEST
def assert_eq(*args): assert len(args) > 2 locals_ = args[-1] expected = S(args[-2]) args = args[:-2] for exact in (True, False): if not exact: expected = tofloat(expected) with contexte(exact=exact): for arg in args: val = eval(arg, locals_) TEST = (allsym(val) if exact else allnum(val)) if not TEST: print( repr(val) + ' should only contain %s.' % ('exact values' if exact else 'floats')) assert TEST TEST = eq(val, expected) if not TEST: print("'%s' equals to '%s', not '%s'." % (arg, repr(val), repr(expected))) assert TEST
def test_issue_215(): # Quand les angles sont en degré, les valeurs par défaut des triangles isocèles sont incorrectes with contexte(unite_angle='d'): for i in range(10): t = Triangle_isocele() assert abs(t.angle.rad) > pi/6
def test_issue_215(): # Quand les angles sont en degré, les valeurs par défaut des triangles isocèles sont incorrectes with contexte(unite_angle='d'): for i in range(10): t = Triangle_isocele() assert abs(t.angle.rad) > pi / 6