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_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))
Exemple #5
0
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')
Exemple #6
0
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')
Exemple #7
0
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)
Exemple #10
0
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')
Exemple #11
0
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
Exemple #13
0
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