def test1(self): c = Calculator() self.assertEqual(c.calc("1+2"), 3) self.assertEqual(c.calc("1-2"), -1) self.assertEqual(c.calc("3^2"), 9) self.assertEqual(c.calc("5*4"), 20) self.assertEqual(c.calc("10/2"), 5) self.assertEqual(c.calc("(1+2)"), 3) self.assertEqual(c.calc("(1-2)"), -1) self.assertEqual(c.calc("(3^2)"), 9) self.assertEqual(c.calc("(5*4)"), 20) self.assertEqual(c.calc("(10/2)"), 5) self.assertEqual(c.calc("10/2+3"), 8) self.assertEqual(c.calc("10/(2+3)"), 2) self.assertEqual(c.calc("7-(1+1)"), 5)
def listenToClient(self, client, address): size = 1024 while True: try: data = client.recv(size) if data: # Set the response to echo back the recieved data uData = data.decode("utf-8") print("client", address[1], '>', uData) counts = str(uData) f = str(Calculator.calc(self, counts)) client.send(f.encode("utf-8")) except: print("client", address[1], "discontected") client.close() return False
def getResults(self, inputDataList, resultsList): if len(inputDataList) > 1: return text = inputDataList[0].getText() text = self.__prepareExpression(text) if not Calculator.isValidExpression(text): return try: ret = Calculator.calc(text, advanced=True) except: return log.debug('CalcyPy::getResults, text = {}, result = {}'.format( text, ret)) # full divide if isinstance(ret, float) and abs(ret - int(ret)) < 1e-15: ret = int(ret) log.debug( 'CalcyPy::getResults, transform float to int: {}'.format(ret)) if isinstance(ret, int): retInFloat = None # hexadecimal retInHex = self.__formatHexadecimal(ret) # decimal retInDec = self.__formatDecimal(ret) # octal retInOct = self.__formatOctal(ret) # binary retInBin = self.__formatBinary(ret) # size retInSize = self.__formatSize(ret) else: retInFloat = self.__formatFloat(ret) retInHex = None retInDec = None retInOct = None retInBin = None retInSize = None if retInFloat is not None: item = CatItem("float.calcypy", retInFloat, self.getName(), self.getIcon()) item.setUsage(50000) resultsList.append(item) if retInDec is not None: item = CatItem("dec.calcpy", retInDec, self.getName(), self.getIcon()) item.setUsage(50000) resultsList.append(item) if retInHex is not None: item = CatItem("hex.calcpy", retInHex, self.getName(), self.getIcon()) item.setUsage(40000) resultsList.append(item) if retInOct is not None: item = CatItem("oct.calcpy", retInOct, self.getName(), self.getIcon()) item.setUsage(30000) resultsList.append(item) if retInBin is not None: item = CatItem("bin.calcpy", retInBin, self.getName(), self.getIcon()) item.setUsage(20000) resultsList.append(item) if retInSize is not None: item = CatItem("size.calcpy", retInSize, self.getName(), self.getIcon()) item.setUsage(10000) resultsList.append(item)
def getResults(self, inputDataList, resultsList): if len(inputDataList) > 1: return text = inputDataList[0].getText() text = self.__prepareExpression(text) if not Calculator.isValidExpression(text): return try: ret = Calculator.calc(text, advanced=True) except: return print('CalcyPy, getResults,', text, ret) # full divide if isinstance(ret, float) and ret - int(ret) < 1e-15: ret = int(ret) if isinstance(ret, int): retInFloat = None # hexadecimal retInHex = self.__formatHexadecimal(ret) # decimal retInDec = self.__formatDecimal(ret) # octal retInOct = self.__formatOctal(ret) # binary retInBin = self.__formatBinary(ret) # size retInSize = self.__formatSize(ret) else: retInFloat = ("%%.%df" % self.settings['outputPrecision']) % ret retInHex = None retInDec = None retInOct = None retInBin = None retInSize = None if retInFloat is not None: item = CatItem("float.calcypy", retInFloat, self.getID(), self.getIcon()) item.setUsage(50000) resultsList.append(item) if retInDec is not None: item = CatItem("dec.calcpy", retInDec, self.getID(), self.getIcon()) item.setUsage(50000) resultsList.append(item) if retInHex is not None: item = CatItem("hex.calcpy", retInHex, self.getID(), self.getIcon()) item.setUsage(40000) resultsList.append(item) if retInOct is not None: item = CatItem("oct.calcpy", retInOct, self.getID(), self.getIcon()) item.setUsage(30000) resultsList.append(item) if retInBin is not None: item = CatItem("bin.calcpy", retInBin, self.getID(), self.getIcon()) item.setUsage(20000) resultsList.append(item) if retInSize is not None: item = CatItem("size.calcpy", retInSize, self.getID(), self.getIcon()) item.setUsage(10000) resultsList.append(item)
def runTest(self): calc = Calculator() self.assertEqual(calc.calc("6+9"), 15, 'wrong simple addition') self.assertEqual(calc.calc("6*9"), 54, 'wrong simple multiplication') self.assertEqual(calc.calc("(6*9)/2"), 27, 'wrong simple division') self.assertEqual(calc.calc("(6*9)/2 - 10"), 17)
def command_103_default(self, user, message, args): '''(calc)\s+(.*)''' print args[1] calc = Calculator() self.replyMessage(user, calc.calc(args[1]))