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)')
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")
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")
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)')
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)')
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)')
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" )
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')
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)')
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)')
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)')
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.")
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" )
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" )
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")
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")
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")
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")
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")
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")
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")
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")
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")
def testAllPrecedenceAtOnce(self): self.assertEqual(vimcalc.vimcalc_parse("5*4+2/sin(pi/2)**2+-1"), "ans = 21.0")
def testFloatFormats(self): self.assertEqual(vimcalc.vimcalc_parse(".5"), "ans = 0.5")
def testComplicatedNested(self): self.assertEqual( vimcalc.vimcalc_parse("sin(sqrt(((pi/2)*2)**2)/2-(3-3))"), "ans = 1.0")
def testTanh(self): self.assertEqual(vimcalc.vimcalc_parse("tanh(0)"), "ans = 0.0", 'test tanh(x)')
def testSinh(self): self.assertEqual(vimcalc.vimcalc_parse("sinh(0)"), "ans = 0.0", 'test sinh(x)')
def testFactorial(self): self.assertEqual(vimcalc.vimcalc_parse("5!"), "ans = 120", 'factorial')
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.')