Example #1
0
 def testLn(self):
     self.assertEqual(vimcalc.vimcalc_parse("ln(0)"),
                      "Parse error: math domain error", 'test ln(x)')
     self.assertEqual(vimcalc.vimcalc_parse("ln(1)"), "ans = 0.0",
                      'test ln(x)')
     self.assertEqual(vimcalc.vimcalc_parse("ln(e)"), "ans = 1.0",
                      'test ln(x)')
Example #2
0
 def testModAssign(self):
     vimcalc.vimcalc_parse("x = 4")
     vimcalc.vimcalc_parse("y = 5")
     self.assertEqual(vimcalc.vimcalc_parse("let x %= y"), "x = 4.0")
     vimcalc.vimcalc_parse("x = 4")
     vimcalc.vimcalc_parse("y = 5")
     self.assertEqual(vimcalc.vimcalc_parse("let y %= x"), "y = 1.0")
Example #3
0
 def testXorAssign(self):
     vimcalc.vimcalc_parse("x = 5")
     vimcalc.vimcalc_parse("y = 3")
     self.assertEqual(vimcalc.vimcalc_parse("let x ^= y"), "x = 6")
     vimcalc.vimcalc_parse("x = 2")
     vimcalc.vimcalc_parse("y = 10")
     self.assertEqual(vimcalc.vimcalc_parse("let x ^= y"), "x = 8")
Example #4
0
 def testSqrt(self):
     self.assertEqual(vimcalc.vimcalc_parse("sqrt(64)"), "ans = 8.0",
                      'test sqrt(x)')
     self.assertEqual(vimcalc.vimcalc_parse("sqrt(0)"), "ans = 0.0",
                      'test sqrt(x)')
     self.assertEqual(vimcalc.vimcalc_parse("sqrt(2)"),
                      "ans = 1.4142135623730951", 'test sqrt(x)')
Example #5
0
 def testLg(self):
     self.assertEqual(vimcalc.vimcalc_parse("lg(0)"),
                      "Parse error: math domain error", 'test lg(x)')
     self.assertEqual(vimcalc.vimcalc_parse("lg(1)"), "ans = 0.0",
                      'test lg(x)')
     self.assertEqual(vimcalc.vimcalc_parse("lg(4)"), "ans = 2.0",
                      'test lg(x)')
Example #6
0
 def testRad(self):
     self.assertEqual(vimcalc.vimcalc_parse("rad(0)"), "ans = 0.0",
                      'test rad(x)')
     self.assertEqual(vimcalc.vimcalc_parse("rad(180)"),
                      "ans = 3.141592653589793", 'test rad(x)')
     self.assertEqual(vimcalc.vimcalc_parse("rad(360)"),
                      "ans = 6.283185307179586", 'test rad(x)')
Example #7
0
 def testAlignment(self):
     self.assertEqual(vimcalc.vimcalc_parse("let reallyLongName = 2"),
                      "reallyLongName = 2.0")
     self.assertEqual(
         vimcalc.vimcalc_parse(":vars"),
         "VARIABLES:\n----------\n ans            : 0\n e              : 2.718281828459045\n phi            : 1.618033988749895\n pi             : 3.141592653589793\n reallyLongName : 2.0\n"
     )
Example #8
0
 def testAnd(self):
     self.assertEqual(vimcalc.vimcalc_parse("5&3"), "ans = 1",
                      'bitwise and')
     self.assertEqual(vimcalc.vimcalc_parse("3&2"), "ans = 2",
                      'bitwise and')
     self.assertEqual(vimcalc.vimcalc_parse("6&13"), "ans = 4",
                      'bitwise and')
Example #9
0
 def testLog10(self):
     self.assertEqual(vimcalc.vimcalc_parse("log10(100)"), "ans = 2.0",
                      'test log10(x)')
     self.assertEqual(vimcalc.vimcalc_parse("log10(1)"), "ans = 0.0",
                      'test log10(x)')
     self.assertEqual(vimcalc.vimcalc_parse("log10(0)"),
                      "Parse error: math domain error", 'test log10(x)')
Example #10
0
 def testLog(self):
     self.assertEqual(vimcalc.vimcalc_parse("log(9,3)"), "ans = 2.0",
                      'test log(x,b)')
     self.assertEqual(vimcalc.vimcalc_parse("log(1,3)"), "ans = 0.0",
                      'test log(x,b)')
     self.assertEqual(vimcalc.vimcalc_parse("log(0,3)"),
                      "Parse error: math domain error", 'test log(x,b)')
Example #11
0
 def testDeg(self):
     self.assertEqual(vimcalc.vimcalc_parse("deg(pi)"), "ans = 180.0",
                      'test deg(x)')
     self.assertEqual(vimcalc.vimcalc_parse("deg(pi/2)"), "ans = 90.0",
                      'test deg(x)')
     self.assertEqual(vimcalc.vimcalc_parse("deg(2*pi)"), "ans = 360.0",
                      'test deg(x)')
     self.assertEqual(vimcalc.vimcalc_parse("deg(2*pi+1)"),
                      "ans = 417.2957795130823", 'test deg(x)')
Example #12
0
 def testUnmatchedParens(self):
     self.assertEqual(
         vimcalc.vimcalc_parse("(5"),
         "Parse error: missing matching parenthesis in expression.")
     self.assertEqual(
         vimcalc.vimcalc_parse("((5)"),
         "Parse error: missing matching parenthesis in expression.")
     self.assertEqual(vimcalc.vimcalc_parse("(()"),
                      "Parse error: the expression is invalid.")
Example #13
0
 def testAddVars(self):
     #tests they get added and alphabetically
     self.assertEqual(vimcalc.vimcalc_parse("x = 2"), "x = 2.0")
     self.assertEqual(
         vimcalc.vimcalc_parse(":vars"),
         "VARIABLES:\n----------\n ans : 0\n e   : 2.718281828459045\n phi : 1.618033988749895\n pi  : 3.141592653589793\n x   : 2.0\n"
     )
     self.assertEqual(vimcalc.vimcalc_parse("a = 2"), "a = 2.0")
     self.assertEqual(
         vimcalc.vimcalc_parse(":vars"),
         "VARIABLES:\n----------\n a   : 2.0\n ans : 0\n e   : 2.718281828459045\n phi : 1.618033988749895\n pi  : 3.141592653589793\n x   : 2.0\n"
     )
Example #14
0
 def testChangeMode(self):
     vimcalc.vimcalc_parse(":dec")
     self.assertEqual(
         vimcalc.vimcalc_parse(":vars"),
         "VARIABLES:\n----------\n ans : 0\n e   : 2.718281828459045\n phi : 1.618033988749895\n pi  : 3.141592653589793\n"
     )
     vimcalc.vimcalc_parse(":hex")
     self.assertEqual(
         vimcalc.vimcalc_parse(":vars"),
         "VARIABLES:\n----------\n ans : 0x0\n e   : 0x2\n phi : 0x1\n pi  : 0x3\n"
     )
     vimcalc.vimcalc_parse(":oct")
     self.assertEqual(
         vimcalc.vimcalc_parse(":vars"),
         "VARIABLES:\n----------\n ans : 00\n e   : 02\n phi : 01\n pi  : 03\n"
     )
Example #15
0
 def testHexadecimal(self):
     self.assertEqual(vimcalc.vimcalc_parse(":hex"),
                      "CHANGED OUTPUT BASE TO HEXADECIMAL.")
     self.assertEqual(vimcalc.vimcalc_parse("10"), "ans = 0xa")
     self.assertEqual(vimcalc.vimcalc_parse("0x10"), "ans = 0x10")
     self.assertEqual(vimcalc.vimcalc_parse("0X10"), "ans = 0x10")
     self.assertEqual(vimcalc.vimcalc_parse("010"), "ans = 0x8")
     self.assertEqual(vimcalc.vimcalc_parse("0b10"), "ans = 0x2")
     self.assertEqual(vimcalc.vimcalc_parse("0B10"), "ans = 0x2")
Example #16
0
 def testBinary(self):
     self.assertEqual(vimcalc.vimcalc_parse(":bin"),
                      "CHANGED OUTPUT BASE TO BINARY.")
     self.assertEqual(vimcalc.vimcalc_parse("10"), "ans = 0b1010")
     self.assertEqual(vimcalc.vimcalc_parse("0x10"), "ans = 0b10000")
     self.assertEqual(vimcalc.vimcalc_parse("0X10"), "ans = 0b10000")
     self.assertEqual(vimcalc.vimcalc_parse("010"), "ans = 0b1000")
     self.assertEqual(vimcalc.vimcalc_parse("0b10"), "ans = 0b10")
     self.assertEqual(vimcalc.vimcalc_parse("0B10"), "ans = 0b10")
Example #17
0
 def testOctal(self):
     self.assertEqual(vimcalc.vimcalc_parse(":oct"),
                      "CHANGED OUTPUT BASE TO OCTAL.")
     self.assertEqual(vimcalc.vimcalc_parse("10"), "ans = 012")
     self.assertEqual(vimcalc.vimcalc_parse("0x10"), "ans = 020")
     self.assertEqual(vimcalc.vimcalc_parse("0X10"), "ans = 020")
     self.assertEqual(vimcalc.vimcalc_parse("010"), "ans = 010")
     self.assertEqual(vimcalc.vimcalc_parse("0b10"), "ans = 02")
     self.assertEqual(vimcalc.vimcalc_parse("0B10"), "ans = 02")
Example #18
0
 def testDecimal(self):
     self.assertEqual(vimcalc.vimcalc_parse(":dec"),
                      "CHANGED OUTPUT BASE TO DECIMAL.")
     self.assertEqual(vimcalc.vimcalc_parse("10"), "ans = 10.0")
     self.assertEqual(vimcalc.vimcalc_parse("0x10"), "ans = 16")
     self.assertEqual(vimcalc.vimcalc_parse("0X10"), "ans = 16")
     self.assertEqual(vimcalc.vimcalc_parse("010"), "ans = 8")
     self.assertEqual(vimcalc.vimcalc_parse("0b10"), "ans = 2")
     self.assertEqual(vimcalc.vimcalc_parse("0B10"), "ans = 2")
Example #19
0
 def testChangePrecision(self):
     vimcalc.vimcalc_parse(":float")
     self.assertEqual(
         vimcalc.vimcalc_parse(":vars"),
         "VARIABLES:\n----------\n ans : 0\n e   : 2.718281828459045\n phi : 1.618033988749895\n pi  : 3.141592653589793\n"
     )
     vimcalc.vimcalc_parse(":int")
     self.assertEqual(
         vimcalc.vimcalc_parse(":vars"),
         "VARIABLES:\n----------\n ans : 0\n e   : 2\n phi : 1\n pi  : 3\n")
Example #20
0
 def testParseError(self):
     self.assertEqual(vimcalc.vimcalc_parse("9**5/)"),
                      "Parse error: the expression is invalid.")
     self.assertEqual(vimcalc.vimcalc_parse("4//5"),
                      "Parse error: the expression is invalid.")
     self.assertEqual(vimcalc.vimcalc_parse("--1"),
                      "Parse error: the expression is invalid.")
     self.assertEqual(vimcalc.vimcalc_parse("!4"),
                      "Parse error: the expression is invalid.")
     self.assertEqual(vimcalc.vimcalc_parse("2***3"),
                      "Parse error: the expression is invalid.")
     #self.assertEqual(vimcalc.vimcalc_parse("sin(2,)"),  "Parse error: apply() arg 2 expected sequence, found int")
     #TODO: where this message comes from??? O_o
     self.assertEqual(
         vimcalc.vimcalc_parse("sin(2,)"),
         "Parse error: sin() argument after * must be an iterable, not int")
Example #21
0
 def testModulo(self):
     self.assertEqual(vimcalc.vimcalc_parse("(5%4)%3"), "ans = 1.0")
     self.assertEqual(vimcalc.vimcalc_parse("5%(4%3)"), "ans = 0.0")
     self.assertEqual(vimcalc.vimcalc_parse("5%4%3"), "ans = 1.0")
Example #22
0
 def testDivision(self):
     self.assertEqual(vimcalc.vimcalc_parse("(2/2)/3"),
                      "ans = 0.3333333333333333")
     self.assertEqual(vimcalc.vimcalc_parse("2/(2/3)"), "ans = 3.0")
     self.assertEqual(vimcalc.vimcalc_parse("2/2/3"),
                      "ans = 0.3333333333333333")
Example #23
0
 def testMultiplication(self):
     self.assertEqual(vimcalc.vimcalc_parse("2*2*2"), "ans = 8.0")
     self.assertEqual(vimcalc.vimcalc_parse("(2*2)*2"), "ans = 8.0")
     self.assertEqual(vimcalc.vimcalc_parse("2*(2*2)"), "ans = 8.0")
Example #24
0
 def testAllPrecedenceAtOnce(self):
     self.assertEqual(vimcalc.vimcalc_parse("5*4+2/sin(pi/2)**2+-1"),
                      "ans = 21.0")
Example #25
0
 def testFloatFormats(self):
     self.assertEqual(vimcalc.vimcalc_parse(".5"), "ans = 0.5")
Example #26
0
 def testComplicatedNested(self):
     self.assertEqual(
         vimcalc.vimcalc_parse("sin(sqrt(((pi/2)*2)**2)/2-(3-3))"),
         "ans = 1.0")
Example #27
0
 def testTanh(self):
     self.assertEqual(vimcalc.vimcalc_parse("tanh(0)"), "ans = 0.0",
                      'test tanh(x)')
Example #28
0
 def testSinh(self):
     self.assertEqual(vimcalc.vimcalc_parse("sinh(0)"), "ans = 0.0",
                      'test sinh(x)')
Example #29
0
 def testFactorial(self):
     self.assertEqual(vimcalc.vimcalc_parse("5!"), "ans = 120", 'factorial')
Example #30
0
 def testSin(self):
     self.assertEqual(vimcalc.vimcalc_parse("sin(pi/2)"), "ans = 1.0",
                      'test sin.')
     self.assertEqual(vimcalc.vimcalc_parse("sin(0)"), "ans = 0.0",
                      'test sin.')