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)