void testAccessors() { const char* name = "xxx"; const char* name_different_case = "XXX"; const char* value = "xxx-value"; const char* valueRef; NameValuePairInsensitive* nv = new NameValuePairInsensitive(name); NameValuePairInsensitive* nv_different_case = new NameValuePairInsensitive(name_different_case); valueRef = nv->getValue(); CPPUNIT_ASSERT_MESSAGE("value should be null", NULL == valueRef); nv->setValue(value); valueRef = nv->getValue(); ASSERT_STR_EQUAL_MESSAGE("incorrect value retrieved", value, valueRef); nv->setValue(name); valueRef = nv->getValue(); ASSERT_STR_EQUAL_MESSAGE("incorrect value retrieved", valueRef, name); CPPUNIT_ASSERT_MESSAGE("nv should be == nv", nv->compareTo(nv) == 0); CPPUNIT_ASSERT_MESSAGE("nv should be == nv_different_case", nv->compareTo(nv_different_case) == 0); delete nv; }
void testHash() { const char* name = "eventtype"; const char* name_different_case = "eventType"; NameValuePairInsensitive* nv = new NameValuePairInsensitive(name); NameValuePairInsensitive* nv_different_case = new NameValuePairInsensitive(name_different_case); CPPUNIT_ASSERT_MESSAGE("values do not compare equal", nv->isEqual(nv_different_case) ); CPPUNIT_ASSERT_MESSAGE("hash values do not match", nv->hash() == nv_different_case->hash() ); }
void Dialog::getBytes(UtlString& b, ssize_t& l) { b.remove(0); b.append(BEGIN_DIALOG); UtlString singleLine; singleLine = DOUBLE_QUOTE; XmlEscape(singleLine, mId); singleLine += DOUBLE_QUOTE; b += singleLine; if (!mCallId.isNull()) { b.append(CALL_ID_EQUAL); singleLine = DOUBLE_QUOTE; XmlEscape(singleLine, mCallId); singleLine += DOUBLE_QUOTE; b += singleLine; } if (!mLocalTag.isNull()) { b.append(LOCAL_TAG_EQUAL); // mLocalTag is a token singleLine = DOUBLE_QUOTE + mLocalTag + DOUBLE_QUOTE; b += singleLine; } if (!mRemoteTag.isNull()) { b.append(REMOTE_TAG_EQUAL); // mRemoteTag is a token singleLine = DOUBLE_QUOTE + mRemoteTag + DOUBLE_QUOTE; b += singleLine; } if (!mDirection.isNull()) { b.append(DIRECTION_EQUAL); // mDirection is a token singleLine = DOUBLE_QUOTE + mDirection + DOUBLE_QUOTE; b += singleLine; } b.append(END_LINE); // State element b.append(BEGIN_STATE); if (!mEvent.isNull()) { b.append(EVENT_EQUAL); // mEvent is a token singleLine = DOUBLE_QUOTE + mEvent + DOUBLE_QUOTE; b += singleLine; } if (!mCode.isNull()) { b.append(CODE_EQUAL); // mCode is a token singleLine = DOUBLE_QUOTE + mCode + DOUBLE_QUOTE; b += singleLine; } // End of state element singleLine = END_BRACKET + mState + END_STATE; b += singleLine; // Duration element if (mDuration !=0) { b += BEGIN_DURATION; b.appendNumber((Int64) OsDateTime::getSecsSinceEpoch() - mDuration); b += END_DURATION; } // Local element b.append(BEGIN_LOCAL); if (!mLocalIdentity.isNull()) { b.append(BEGIN_IDENTITY); if (!mLocalDisplay.isNull()) { UtlString displayName = mLocalDisplay; NameValueTokenizer::frontBackTrim(&displayName, "\""); b.append(DISPLAY_EQUAL); singleLine = DOUBLE_QUOTE; XmlEscape(singleLine, displayName); singleLine += DOUBLE_QUOTE; b += singleLine; } singleLine = END_BRACKET; XmlEscape(singleLine, mLocalIdentity); singleLine += END_IDENTITY; b += singleLine; } if (!mLocalTarget.isNull() && mLocalTarget.compareTo("sip:") != 0) { singleLine = BEGIN_TARGET; XmlEscape(singleLine, mLocalTarget); singleLine += DOUBLE_QUOTE END_LINE; b += singleLine; // add optional parameters UtlDListIterator* iterator = getLocalParameterIterator(); NameValuePairInsensitive* nvp; while ((nvp = (NameValuePairInsensitive*) (*iterator)())) { singleLine = BEGIN_DIALOG_PARAM; singleLine += PNAME; XmlEscape(singleLine, nvp->data()); singleLine += PVALUE; XmlEscape(singleLine, nvp->getValue()); singleLine += END_DIALOG_PARAM; b += singleLine; } delete iterator; singleLine = END_TARGET; b += singleLine; } // End of local element b.append(END_LOCAL); // Remote element b.append(BEGIN_REMOTE); if (!mRemoteIdentity.isNull()) { b.append(BEGIN_IDENTITY); if (!mRemoteDisplay.isNull()) { UtlString displayName = mRemoteDisplay; NameValueTokenizer::frontBackTrim(&displayName, "\""); b.append(DISPLAY_EQUAL); singleLine = DOUBLE_QUOTE; XmlEscape(singleLine, displayName); singleLine += DOUBLE_QUOTE; b += singleLine; } singleLine = END_BRACKET; XmlEscape(singleLine, mRemoteIdentity); singleLine += END_IDENTITY; b += singleLine; } if (!mRemoteTarget.isNull() && mRemoteTarget.compareTo("sip:") != 0) { singleLine = BEGIN_TARGET; XmlEscape(singleLine, mRemoteTarget); singleLine += DOUBLE_QUOTE END_LINE; b += singleLine; // add optional parameters UtlDListIterator* iterator = getRemoteParameterIterator(); NameValuePairInsensitive* nvp; while ((nvp = (NameValuePairInsensitive*) (*iterator)())) { singleLine = BEGIN_DIALOG_PARAM; singleLine += PNAME; XmlEscape(singleLine, nvp->data()); singleLine += PVALUE; XmlEscape(singleLine, nvp->getValue()); singleLine += END_DIALOG_PARAM; b += singleLine; } delete iterator; singleLine = END_TARGET; b += singleLine; } // End of remote element b.append(END_REMOTE); // End of dialog element b.append(END_DIALOG); l = b.length(); }
void Url::getUri(UtlString& urlString) { // Insert the scheme urlString = schemeName(mScheme); urlString.append(":",1); switch(mScheme) { case FileUrlScheme: case FtpUrlScheme: case HttpUrlScheme: case HttpsUrlScheme: case RtspUrlScheme: urlString.append("//",2); break; case SipUrlScheme: case SipsUrlScheme: case MailtoUrlScheme: default: break; } // Add the user if (FileUrlScheme != mScheme) // no user defined in a file url { if(!mUserId.isNull()) { urlString.append(mUserId); if(!mPassword.isNull() || mPasswordSet) { urlString.append(":", 1); urlString.append(mPassword); } urlString.append("@", 1); } } // Add the host urlString.append(mHostAddress); if(mHostPort > 0) { char portBuffer[20]; sprintf(portBuffer, ":%d", mHostPort); urlString.append(portBuffer); } // Add the path switch(mScheme) { case FileUrlScheme: case FtpUrlScheme: case HttpUrlScheme: case HttpsUrlScheme: case RtspUrlScheme: if(!mPath.isNull()) { urlString.append(mPath); } break; case SipUrlScheme: case SipsUrlScheme: case MailtoUrlScheme: default: break; } // Add the URL parameters if ( ( mpUrlParameters || const_cast<Url*>(this)->parseUrlParameters() ) && mpUrlParameters->entries() ) { UtlDListIterator urlParamIterator(*mpUrlParameters); NameValuePair* urlParam = NULL; UtlString urlParamValue; while ((urlParam = (NameValuePair*) urlParamIterator())) { urlString.append(";", 1); urlString.append(*urlParam); urlParamValue = urlParam->getValue(); if(!urlParamValue.isNull()) { urlString.append("=", 1); HttpMessage::escape(urlParamValue); urlString.append(urlParamValue); } } } // Add the header parameters if ( ( mpHeaderOrQueryParameters || const_cast<Url*>(this)->parseHeaderOrQueryParameters() ) && mpHeaderOrQueryParameters->entries() ) { UtlDListIterator headerParamIterator(*mpHeaderOrQueryParameters); NameValuePairInsensitive* headerParam = NULL; UtlString headerParamValue; UtlBoolean firstHeader = TRUE; while ((headerParam = static_cast<NameValuePairInsensitive*>(headerParamIterator()))) { // Add separator for first header parameter if(firstHeader) { urlString.append("?", 1); firstHeader = FALSE; } else { urlString.append("&", 1); } urlString.append(*headerParam); headerParamValue = headerParam->getValue(); if(!headerParamValue.isNull()) { urlString.append("=", 1); HttpMessage::escape(headerParamValue); urlString.append(headerParamValue); } } } }