Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 def command_103_default(self, user, message, args):
     '''(calc)\s+(.*)'''
     print args[1]
     calc = Calculator()
     self.replyMessage(user, calc.calc(args[1]))