Ejemplo n.º 1
0
    def testGetCryptoPriceRealTime(self):
        now = DateTimeUtil.localNow('Europe/Zurich')
        crypto = 'BTC'
        fiat = 'USD'
        exchange = 'bittrex'
        day = 0
        month = 0
        year = 0
        hour = 1
        minute = 1

        resultData = ResultData()

        nowMinute = now.minute

        if nowMinute < 10:
            if nowMinute > 0:
                nowMinuteStr = '0' + str(nowMinute)
            else:
                nowMinuteStr = '00'
        else:
            nowMinuteStr = str(nowMinute)

        nowHour = now.hour

        if nowHour < 10:
            if nowHour > 0:
                nowHourStr = '0' + str(nowHour)
            else:
                nowHourStr = '00'
        else:
            nowHourStr = str(nowHour)

        nowDay = now.day

        if nowDay < 10:
            nowDayStr = '0' + str(nowDay)
        else:
            nowDayStr = str(nowDay)

        #rt price not provided here !
        resultData.setValue(resultData.RESULT_KEY_ERROR_MSG, None)
        resultData.setValue(resultData.RESULT_KEY_CRYPTO, crypto)
        resultData.setValue(resultData.RESULT_KEY_FIAT, fiat)
        resultData.setValue(resultData.RESULT_KEY_EXCHANGE, 'BitTrex')
        resultData.setValue(resultData.RESULT_KEY_PRICE_TYPE,
                            resultData.PRICE_TYPE_RT)
        dateTimeString = '{}/{}/{} {}:{}'.format(nowDayStr, now.month,
                                                 now.year - 2000, nowHourStr,
                                                 nowMinuteStr)
        resultData.setValue(resultData.RESULT_KEY_PRICE_DATE_TIME_STRING,
                            dateTimeString)

        stdout = sys.stdout
        capturedStdout = StringIO()
        sys.stdout = capturedStdout

        self.printer.printDataToConsole(resultData)
        sys.stdout = stdout
        self.assertEqual('BTC/USD on BitTrex: {}R \n'.format(dateTimeString),
                         capturedStdout.getvalue())
Ejemplo n.º 2
0
    def testGetCryptoPriceRealTimeWithValueFlag(self):
        #correspond to command btc usd 0 bittrex -v0.01btc
        now = DateTimeUtil.localNow('Europe/Zurich')
        crypto = 'BTC'
        fiat = 'USD'
        exchange = 'bittrex'
        day = 0
        month = 0
        year = 0
        hour = 1
        minute = 1

        resultData = ResultData()

        nowMinute = now.minute

        if nowMinute < 10:
            if nowMinute > 0:
                nowMinuteStr = '0' + str(nowMinute)
            else:
                nowMinuteStr = '00'
        else:
            nowMinuteStr = str(nowMinute)

        nowHour = now.hour

        if nowHour < 10:
            if nowHour > 0:
                nowHourStr = '0' + str(nowHour)
            else:
                nowHourStr = '00'
        else:
            nowHourStr = str(nowHour)

        nowDay = now.day

        if nowDay < 10:
            nowDayStr = '0' + str(nowDay)
        else:
            nowDayStr = str(nowDay)

        #rt price not provided here !
        resultData.setValue(resultData.RESULT_KEY_ERROR_MSG, None)
        resultData.setValue(resultData.RESULT_KEY_CRYPTO, crypto)
        resultData.setValue(resultData.RESULT_KEY_FIAT, fiat)
        resultData.setValue(resultData.RESULT_KEY_EXCHANGE, 'BitTrex')
        resultData.setValue(resultData.RESULT_KEY_PRICE_TYPE,
                            resultData.PRICE_TYPE_RT)
        dateTimeString = '{}/{}/{} {}:{}'.format(nowDayStr, now.month,
                                                 now.year - 2000, nowHourStr,
                                                 nowMinuteStr)
        resultData.setValue(resultData.RESULT_KEY_PRICE_DATE_TIME_STRING,
                            dateTimeString)
        resultData.setValue(resultData.RESULT_KEY_PRICE_VALUE_CRYPTO, '0.01')
        resultData.setValue(resultData.RESULT_KEY_PRICE_VALUE_FIAT, '160')
        resultData.setValue(
            resultData.RESULT_KEY_INITIAL_COMMAND_PARMS, {
                'CRYPTO': 'btc',
                'FIAT': 'usd',
                'EXCHANGE': 'bittrex',
                'DAY': '0',
                'MONTH': '0',
                'YEAR': '0',
                'HOUR': None,
                'MINUTE': None,
                'DMY': None,
                'HM': None,
                'PRICE_TYPE': 'REAL_TIME',
                'PRICE_VAL_DATA': None,
                'PRICE_VAL_AMOUNT': '0.01',
                'PRICE_VAL_SYMBOL': 'btc',
                'PRICE_VAL_SAVE': False
            })

        stdout = sys.stdout
        capturedStdout = StringIO()
        sys.stdout = capturedStdout

        self.printer.printDataToConsole(resultData)
        sys.stdout = stdout
        self.assertEqual(
            '0.01 BTC/160 USD on BitTrex: {}R \n'.format(dateTimeString),
            capturedStdout.getvalue())
        fullCommandString, fullCommandStrWithOptions, fullCommandStrWithSaveModeOptions = self.printer.getFullCommandString(
            resultData)
        self.assertEqual(None, fullCommandStrWithSaveModeOptions)
        self.assertEqual('btc usd 0 bittrex', fullCommandString)
Ejemplo n.º 3
0
                return match.group(1)

        return ()

    @staticmethod
    def removeAllPricesFromCommandValueResult(resultStr):
        '''
        Used to remove multiple prices from RT request results or variable date/time price request results
        :param resultStr:
        :return:
        '''
        patternNoWarning = r"(?:[\d\.]*) (\w*/)(?:[\d\.]*) (.*) (?:[\d\.]*)"
        patternOneWarning = r"(?:[\d\.]*) (\w*/)(?:[\d\.]*) (.*) (?:[\d\.]*(\n.*))"
        match = re.match(patternOneWarning, resultStr)

        if match != None:
            if len(match.groups()) == 3:
                return match.group(1) + match.group(2) + match.group(3)

        match = re.match(patternNoWarning, resultStr)

        if len(match.groups()) == 2:
            return match.group(1) + match.group(2)
        else:
            return ()


if __name__ == '__main__':
    now = DateTimeUtil.localNow('Europe/Zurich')
    nowMonthStr, nowDayStr, nowHourStr, nowMinuteStr = UtilityForTest.getFormattedDateTimeComponentsForArrowDateTimeObj(now)
    print("{}/{} {}:{}".format(nowDayStr, nowMonthStr, nowHourStr, nowMinuteStr))