Пример #1
0
def testBasics():
    assertEqual(Basics.toFloat(5), 5.0)
    assertEqual(Basics.round(8.2), 8)
    assertEqual(Basics.round(8.8), 9)
    assertEqual(Basics.round(-8.8), -9)
    assertEqual(Basics.floor(8.8), 8)
    assertEqual(Basics.floor(-8.8), -9)
    assertEqual(Basics.ceiling(8.8), 9)
    assertEqual(Basics.ceiling(-8.8), -8)
    assertEqual(Basics.truncate(8.8), 8)
    assertEqual(Basics.truncate(-8.8), -8)
    assertEqual(Basics.min(5, 3), 3)
    assertEqual(Basics.max(5, 3), 5)

    assertEqual(
            Basics.compare(4, 3),
            Order.GT
            )

    assertEqual(
            Basics.compare(4, 4),
            Order.EQ
            )

    assertEqual(
            Basics.compare(4, 8),
            Order.LT
            )

    assertEqual(Basics.xor(True, False), True)
    assertEqual(Basics.xor(False, True), True)
    assertEqual(Basics.xor(True, True), False)
    assertEqual(Basics.xor(False, False), False)

    assertEqual(Basics.modBy(3, 0), 0)
    assertEqual(Basics.modBy(3, 6), 0)
    assertEqual(Basics.modBy(3, 7), 1)

    assertEqual(Basics.modBy(3, -8), 1)
    assertEqual(Basics.modBy(3, -7), 2)
    assertEqual(Basics.modBy(3, -6), 0)

    assertEqual(Basics.modBy(-3, 7), -2)

    assertEqual(Basics.remainderBy(3, 0), 0)
    assertEqual(Basics.remainderBy(3, 3), 0)
    assertEqual(Basics.remainderBy(3, 6), 0)
    assertEqual(Basics.remainderBy(3, 7), 1)

    assertEqual(Basics.remainderBy(3, -6), 0)
    assertEqual(Basics.remainderBy(3, -7), -1)
    assertEqual(Basics.remainderBy(3, -8), -2)

    assertEqual(Basics.remainderBy(-3, -7), -1)
    assertEqual(Basics.remainderBy(-3, 7), 1)

    assertEqual(Basics.negate(5), -5)
    assertEqual(Basics.negate(-5), 5)

    assertEqual(Basics.abs(5), 5)
    assertEqual(Basics.abs(-5), 5)

    assertEqual(Basics.clamp(100, 200, 80), 100)
    assertEqual(Basics.clamp(100, 200, 150), 150)
    assertEqual(Basics.clamp(100, 200, 220), 200)

    assertEqual(Basics.sqrt(81), 9)

    assertFloat(Basics.logBase(10, 100), 2)
    assertFloat(Basics.logBase(10, 1000), 3)
    assertFloat(Basics.logBase(2, 256), 8)

    assertFloat(Basics.e, 2.718281828459045)
    assertFloat(Basics.pi, 3.141592653589793)

    pi = Basics.pi

    assertFloat(Basics.degrees(180), pi)
    assertFloat(Basics.radians(2), 2)
    assertFloat(Basics.turns(1/2), pi)

    assertFloat(Basics.cos(pi/3), 0.5)
    assertFloat(Basics.sin(pi/6), 0.5)
    assertFloat(Basics.tan(pi/4), 1)

    assertFloat(Basics.acos(0.5), pi/3)
    assertFloat(Basics.asin(0.5), pi/6)

    assertFloat(Basics.atan(1), pi/4)
    assertFloat(Basics.atan(-1), -1 * pi/4)

    assertFloat(Basics.atan2(1, 1), pi/4)
    assertFloat(Basics.atan2(1, -1), 3 * pi/4)
    assertFloat(Basics.atan2(-1, -1), -3 * pi/4)
    assertFloat(Basics.atan2(-1, 1), -1 * pi/4)

    assertFloat(Basics.toPolar((3, 4)), ( 5, 0.9272952180016122))
    assertFloat(Basics.toPolar((5,12)), (13, 1.1760052070951352))

    assertFloat(Basics.fromPolar(Basics.toPolar((-3, -4))), (-3, -4))


    assertFloat(Basics.div(7, 2), 3.5)

    assertTrue(Basics.isNaN(Basics.sqrt(-1)))
    assertTrue(Basics.isNaN(Basics.div(0, 0)))
    assertFalse(Basics.isNaN(Basics.div(1, 0)))
    assertFalse(Basics.isNaN(42))

    assertFalse(Basics.isInfinite(Basics.div(0, 0)))
    assertFalse(Basics.isInfinite(Basics.sqrt(-1)))
    assertTrue(Basics.isInfinite(Basics.div(1, 0)))
    assertFalse(Basics.isInfinite(42))

    assertEqual(Basics.identity(42), 42)
    assertEqual(Basics.always(42, 99), 42)

    assertTrue(hasattr(Basics, 'never'))

    # The following are << and >> in Basics.elm, but we put them
    # in Elm.py.
    assertEqual(Elm.lcompose(Basics.sqrt, double)(50), 10)
    assertEqual(Elm.rcompose(Basics.sqrt, double)(49), 14)