⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 string_test.cpp

📁 著名的 helix realplayer 基于手机 symbian 系统的 播放器全套源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
        ret = false;
    }
    else if (!UTParamUtil::GetUInt(info[3], field))
    {
	DPRINTF(D_ERROR, ("Failed to convert parameters\n"));
        ret = false;
    }
    else
    {
        CHXString got = pStr->NthField(*((const char*)info[2]),
                                       (ULONG32)field);
        const char* expected = (const char*)info[4];

        if (strcmp(got, expected) != 0)
        {
            DPRINTF(D_ERROR, ("Got \"%s\" expected \"%s\"\n",
                              (const char*)got, expected));
            ret = false;
        }
    }

    return ret;
}


bool HLXStringTest::HandleResetNthFieldStateCmd(const UTVector<UTString>& info)
{
    bool ret = true;
    CHXString* pStr = GetStringObj(info[1]);

    // XXXSAB: Should we have a way to set this NthFieldState thing to garbage???

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
        ret = false;
    }
    else
    {
        if (pStr == m_pA) m_ANthFieldState = 0;
        else if (pStr == m_pB) m_BNthFieldState = 0;
    }

    return ret;
}

bool HLXStringTest::HandleGetNthFieldCmd(const UTVector<UTString>& info)
{
    bool ret = true;
    CHXString* pStr = GetStringObj(info[1]);
    unsigned int field;

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
        ret = false;
    }
    else if (!UTParamUtil::GetUInt(info[3], field))
    {
	DPRINTF(D_ERROR, ("Failed to convert parameters\n"));
        ret = false;
    }
    else
    {
        UINT64& state = (pStr == m_pA) ? m_ANthFieldState : m_BNthFieldState;

        CHXString got = pStr->GetNthField(*((const char*)info[2]),
                                          (ULONG32)field,
                                          state);
        const char* expected = (const char*)info[4];

        if (strcmp(got, expected) != 0)
        {
            DPRINTF(D_ERROR, ("Got \"%s\" expected \"%s\"\n",
                              (const char*)got, expected));
            ret = false;
        }
    }

    return ret;
}


bool HLXStringTest::HandleSpanIncludingCmd(const UTVector<UTString>& info)
{
    bool ret = false;
    CHXString* pStr = GetStringObj(info[1]);

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
    }
    else
    {
        CHXString got = pStr->SpanIncluding((const char*)info[2]);
        if (strcmp(got, (const char*)info[3]) == 0) ret = true;
        else DPRINTF(D_ERROR, ("Got \"%s\" expected \"%s\"\n",
                               (const char*)got, (const char*)info[3]));
    }

    return ret;
}

bool HLXStringTest::HandleSpanExcludingCmd(const UTVector<UTString>& info)
{
    bool ret = false;
    CHXString* pStr = GetStringObj(info[1]);

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
    }
    else
    {
        CHXString got = pStr->SpanExcluding((const char*)info[2]);
        if (strcmp(got, (const char*)info[3]) == 0) ret = true;
        else DPRINTF(D_ERROR, ("Got \"%s\" expected \"%s\"\n",
                               (const char*)got, (const char*)info[3]));
    }

    return ret;
}

bool HLXStringTest::HandleMakeUpperCmd(const UTVector<UTString>& info)
{
    bool ret = false;
    CHXString* pStr = GetStringObj(info[1]);

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
    }
    else
    {
        ret = true;
        pStr->MakeUpper();
    }

    return ret;
}

bool HLXStringTest::HandleMakeLowerCmd(const UTVector<UTString>& info)
{
    bool ret = false;
    CHXString* pStr = GetStringObj(info[1]);

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
    }
    else
    {
        ret = true;
        pStr->MakeLower();
    }

    return ret;
}

bool HLXStringTest::HandleTrimRightCmd(const UTVector<UTString>& info)
{
    bool ret = false;
    CHXString* pStr = GetStringObj(info[1]);

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
    }
    else
    {
        ret = true;
        pStr->TrimRight();
    }

    return ret;
}

bool HLXStringTest::HandleTrimLeftCmd(const UTVector<UTString>& info)
{
    bool ret = false;
    CHXString* pStr = GetStringObj(info[1]);

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
    }
    else
    {
        ret = true;
        pStr->TrimLeft();
    }


    return ret;
}

bool HLXStringTest::HandleFind1Cmd(const UTVector<UTString>& info)
{
    bool ret = false;
    CHXString* pStr = GetStringObj(info[1]);
    int expected;

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
    }
    else if (!UTParamUtil::GetInt(info[3], expected))
    {
	DPRINTF(D_ERROR, ("Failed to convert parameters\n"));
    }
    else
    {
        INT32 got = pStr->Find(*((const char*)info[2]));
        if (got == expected) ret = true;
        else DPRINTF(D_ERROR, ("Got %ld expected %ld\n",
                               (long)got, (long)expected));
    }

    return ret;
}

bool HLXStringTest::HandleFind2Cmd(const UTVector<UTString>& info)
{
    bool ret = false;
    CHXString* pStr = GetStringObj(info[1]);
    int expected;

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
    }
    else if (!UTParamUtil::GetInt(info[3], expected))
    {
	DPRINTF(D_ERROR, ("Failed to convert parameters\n"));
    }
    else
    {
        INT32 got = pStr->Find((const char*)info[2]);
        if (got == expected) ret = true;
        else DPRINTF(D_ERROR, ("Got %ld expected %ld\n",
                               (long)got, (long)expected));
    }

    return ret;
}

bool HLXStringTest::HandleReverseFindCmd(const UTVector<UTString>& info)
{
    bool ret = false;
    CHXString* pStr = GetStringObj(info[1]);
    int expected;

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
    }
    else if (!UTParamUtil::GetInt(info[3], expected))
    {
	DPRINTF(D_ERROR, ("Failed to convert parameters\n"));
    }
    else
    {
        INT32 got = pStr->ReverseFind(*((const char*)info[2]));
        if (got == expected) ret = true;
        else DPRINTF(D_ERROR, ("Got %ld expected %ld\n",
                               (long)got, (long)expected));
    }

    return ret;
}

bool HLXStringTest::HandleFindAndReplaceCmd(const UTVector<UTString>& info)
{
    bool ret = false;
    CHXString* pStr = GetStringObj(info[1]);
    bool expected, bReplaceAll;

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
    }
    else if (!UTParamUtil::GetBool(info[4], bReplaceAll) ||
             !UTParamUtil::GetBool(info[5], expected))
    {
	DPRINTF(D_ERROR, ("Failed to convert parameters\n"));
    }
    else
    {
        bool got = pStr->FindAndReplace((const char*)info[2],
                                        (const char*)info[3],
                                        bReplaceAll) ? true : false;
        if (got == expected) ret = true;
        else DPRINTF(D_ERROR, ("Got %s expected %s\n",
                               got ? "TRUE" : "FALSE",
                               expected ? "TRUE" : "FALSE"));
    }

    return ret;
}

namespace
{
    inline bool
    GetCharStar (const char* strRep, const char*& value)
    {
        value = strRep;
        return true;
    }

    inline bool
    GetPtr (const char* strRep, void*& value)
    {
        unsigned long iValue;
        bool ret = UTParamUtil::GetULong(strRep, iValue);
        if (ret) value = (void*)iValue;
        return ret;
    }

    template <class T>
    bool HandleFormat (CHXString& str, const UTVector<UTString>& info,
                       bool (*GetValue)(const char* strRep, T& retValue))
    {
        const char* fmt = (const char*)info[2];
        T* values = new T[info.Nelements() - 3];
        
        int beginData = 3;
        int endData = info.Nelements();

        int infoIdx = beginData;
        int valIdx = 0;

        for (; infoIdx < endData; ++infoIdx, ++valIdx)
        {
            if (!GetValue(info[infoIdx], values[valIdx]))
            {
                DPRINTF(D_ERROR, ("Failed to convert arg \"%s\"\n",
                                  (const char*)info[infoIdx]));
                return false;
            }
        }

        switch (valIdx)
        {
            case 1:
                str.Format(fmt, values[0]);
                break;
            case 2:
                str.Format(fmt, values[0], values[1]);
                break;
            case 3:
                str.Format(fmt, values[0], values[1], values[2]);
                break;
            case 4:
                str.Format(fmt, values[0], values[1], values[2], values[3]);
                break;
            case 5:
                str.Format(fmt, values[0], values[1], values[2], values[3],
                           values[4]);
                break;
            case 6:
                str.Format(fmt, values[0], values[1], values[2], values[3],
                           values[4], values[5]);
                break;
            case 7:
                str.Format(fmt, values[0], values[1], values[2], values[3],
                           values[4], values[5], values[6]);
                break;
            case 8:
                str.Format(fmt, values[0], values[1], values[2], values[3],
                           values[4], values[5], values[6], values[7]);
                break;
            case 9:
                str.Format(fmt, values[0], values[1], values[2], values[3],
                           values[4], values[5], values[6], values[7],
                           values[8]);
                break;
            case 10:
                str.Format(fmt, values[0], values[1], values[2], values[3],
                           values[4], values[5], values[6], values[7],
                           values[8], values[9]);
                break;
            default:
                DPRINTF(D_ERROR, ("Unsupported num of data values (%d)\n",
                                  valIdx));
                return false;
                break;
        }

	delete [] values;
        return true;
    }
};

bool HLXStringTest::HandleFormatIntCmd(const UTVector<UTString>& info)
{
    bool ret = false;
    CHXString* pStr = GetStringObj(info[1]);

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
    }
    else ret = HandleFormat<int>(*pStr, info, UTParamUtil::GetInt);

    return ret;
}

bool HLXStringTest::HandleFormatLongCmd(const UTVector<UTString>& info)
{
    bool ret = false;
    CHXString* pStr = GetStringObj(info[1]);

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
    }
    else ret = HandleFormat<long int>(*pStr, info, UTParamUtil::GetLong);

    return ret;
}

bool HLXStringTest::HandleFormatUIntCmd(const UTVector<UTString>& info)
{
    bool ret = false;
    CHXString* pStr = GetStringObj(info[1]);

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
    }
    else ret = HandleFormat<unsigned int>(*pStr, info, UTParamUtil::GetUInt);

    return ret;
}

bool HLXStringTest::HandleFormatULongCmd(const UTVector<UTString>& info)
{
    bool ret = false;
    CHXString* pStr = GetStringObj(info[1]);

    if (!pStr)
    {
	DPRINTF(D_ERROR, ("Failed to get the string object '%s'\n", 
			  (const char*)info[1]));
    }
    else ret = HandleFormat<unsigned long int>(*pStr, info, 
					       UTParamUtil::GetULong);

    return ret;
}

bool HLXStringTest::HandleFormatCharCmd(const UTVector<UTString>& info)
{
    bool ret = false;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -