mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-23 06:08:07 +00:00
Renamed content_manager_tester + improved header parsing + new tests
This commit is contained in:
parent
af2a607014
commit
ee88045383
9 changed files with 73 additions and 19 deletions
|
|
@ -82,7 +82,6 @@ ContentType::ContentType (const string &contentType) : Header(*new ContentTypePr
|
|||
params.erase(0, posParam + 1);
|
||||
} while (posParam != std::string::npos);
|
||||
}
|
||||
setValue(d->type + "/" + d->subType);
|
||||
}
|
||||
|
||||
ContentType::ContentType (const string &type, const string &subType) : Header(*new ContentTypePrivate) {
|
||||
|
|
|
|||
|
|
@ -213,6 +213,15 @@ const list<Header> &Content::getHeaders () const {
|
|||
return d->headers;
|
||||
}
|
||||
|
||||
const Header &Content::getHeader (const string &headerName) const {
|
||||
L_D();
|
||||
list<Header>::const_iterator it = findHeader(headerName);
|
||||
if (it != d->headers.cend()) {
|
||||
return *it;
|
||||
}
|
||||
return Utils::getEmptyConstRefObject<Header>();
|
||||
}
|
||||
|
||||
void Content::removeHeader (const string &headerName) {
|
||||
L_D();
|
||||
auto it = findHeader(headerName);
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@ public:
|
|||
virtual bool isFileTransfer () const;
|
||||
|
||||
const std::list<Header> &getHeaders () const;
|
||||
const Header &getHeader (const std::string &headerName) const;
|
||||
void addHeader (const std::string &headerName, const std::string &headerValue);
|
||||
void addHeader (const Header &header);
|
||||
void removeHeader (const std::string &headerName);
|
||||
|
|
|
|||
|
|
@ -33,13 +33,34 @@ LINPHONE_BEGIN_NAMESPACE
|
|||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
Header::Header(HeaderPrivate &p) : ClonableObject(p) {
|
||||
Header::Header(HeaderPrivate &p) : ClonableObject(p) {}
|
||||
|
||||
}
|
||||
Header::Header() : ClonableObject(*new HeaderPrivate) {}
|
||||
|
||||
Header::Header (const string &name, const string &value) : ClonableObject(*new HeaderPrivate) {
|
||||
setName(name);
|
||||
setValue(value);
|
||||
|
||||
size_t posParam = value.find(";");
|
||||
if (posParam == string::npos) {
|
||||
setValue(value);
|
||||
return;
|
||||
}
|
||||
|
||||
string parsedValue = value.substr(0, posParam);
|
||||
string params = value.substr(posParam + 1);
|
||||
string token;
|
||||
do {
|
||||
posParam = params.find(";");
|
||||
if (posParam == string::npos) {
|
||||
token = params;
|
||||
} else {
|
||||
token = params.substr(0, posParam);
|
||||
}
|
||||
addParameter(HeaderParam(token));
|
||||
params.erase(0, posParam + 1);
|
||||
} while (posParam != std::string::npos);
|
||||
|
||||
setValue(parsedValue);
|
||||
}
|
||||
|
||||
Header::Header (const string &name, const string &value, const list<HeaderParam> ¶ms) : Header(name, value) {
|
||||
|
|
@ -93,12 +114,12 @@ void Header::cleanParameters () {
|
|||
d->parameters.clear();
|
||||
}
|
||||
|
||||
const std::list<HeaderParam> &Header::getParameters () const {
|
||||
const list<HeaderParam> &Header::getParameters () const {
|
||||
L_D();
|
||||
return d->parameters;
|
||||
}
|
||||
|
||||
void Header::addParameter (const std::string ¶mName, const std::string ¶mValue) {
|
||||
void Header::addParameter (const string ¶mName, const string ¶mValue) {
|
||||
addParameter(HeaderParam(paramName, paramValue));
|
||||
}
|
||||
|
||||
|
|
@ -108,14 +129,14 @@ void Header::addParameter (const HeaderParam ¶m) {
|
|||
d->parameters.push_back(param);
|
||||
}
|
||||
|
||||
void Header::addParameters(const std::list<HeaderParam> ¶ms) {
|
||||
void Header::addParameters(const list<HeaderParam> ¶ms) {
|
||||
for (auto it = std::begin(params); it!=std::end(params); ++it) {
|
||||
HeaderParam param = *it;
|
||||
addParameter(param.getName(), param.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
void Header::removeParameter (const std::string ¶mName) {
|
||||
void Header::removeParameter (const string ¶mName) {
|
||||
L_D();
|
||||
auto it = findParameter(paramName);
|
||||
if (it != d->parameters.cend())
|
||||
|
|
@ -126,16 +147,16 @@ void Header::removeParameter (const HeaderParam ¶m) {
|
|||
removeParameter(param.getName());
|
||||
}
|
||||
|
||||
std::list<HeaderParam>::const_iterator Header::findParameter (const std::string ¶mName) const {
|
||||
list<HeaderParam>::const_iterator Header::findParameter (const string ¶mName) const {
|
||||
L_D();
|
||||
return findIf(d->parameters, [¶mName](const HeaderParam ¶m) {
|
||||
return param.getName() == paramName;
|
||||
});
|
||||
}
|
||||
|
||||
const HeaderParam &Header::getParameter (const std::string ¶mName) const {
|
||||
const HeaderParam &Header::getParameter (const string ¶mName) const {
|
||||
L_D();
|
||||
std::list<HeaderParam>::const_iterator it = findParameter(paramName);
|
||||
list<HeaderParam>::const_iterator it = findParameter(paramName);
|
||||
if (it != d->parameters.cend()) {
|
||||
return *it;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ class HeaderParam;
|
|||
|
||||
class LINPHONE_PUBLIC Header : public ClonableObject {
|
||||
public:
|
||||
Header ();
|
||||
Header (const std::string &name, const std::string &value);
|
||||
Header (const std::string &name, const std::string &value, const std::list<HeaderParam> ¶ms);
|
||||
Header (const Header &other);
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ set(SOURCE_FILES_C
|
|||
set(SOURCE_FILES_CXX
|
||||
clonable-object-tester.cpp
|
||||
conference-event-tester.cpp
|
||||
content-manager-tester.cpp
|
||||
contents-tester.cpp
|
||||
cpim-tester.cpp
|
||||
main-db-tester.cpp
|
||||
multipart-tester.cpp
|
||||
|
|
|
|||
|
|
@ -298,6 +298,7 @@ void multipart_to_list () {
|
|||
ms_message("\n\n----- Original part 3 -----");
|
||||
ms_message("%s", originalStr3.c_str());
|
||||
BC_ASSERT_TRUE(originalStr3 == generatedStr3);
|
||||
BC_ASSERT_TRUE(content3.getHeader("Content-Encoding").getValue() == "b64");
|
||||
|
||||
Content content4 = contents.front();
|
||||
contents.pop_front();
|
||||
|
|
@ -316,6 +317,10 @@ void multipart_to_list () {
|
|||
ms_message("\n\n----- Original part 4 -----");
|
||||
ms_message("%s", originalStr4.c_str());
|
||||
BC_ASSERT_TRUE(originalStr4 == generatedStr4);
|
||||
BC_ASSERT_TRUE(content4.getHeader("Content-Id").getValue() == "toto");
|
||||
BC_ASSERT_TRUE(content4.getHeader("Content-Id").getParameter("param1").getValue() == "value1");
|
||||
BC_ASSERT_TRUE(content4.getHeader("Content-Id").getParameter("param2").getValue().empty());
|
||||
BC_ASSERT_TRUE(content4.getHeader("Content-Id").getParameter("param3").getValue() == "value3");
|
||||
}
|
||||
|
||||
void list_to_multipart () {
|
||||
|
|
@ -396,17 +401,35 @@ static void content_type_parsing(void) {
|
|||
BC_ASSERT_TRUE(type == contentType.asString());
|
||||
}
|
||||
|
||||
test_t content_manager_tests[] = {
|
||||
static void content_header_parsing(void) {
|
||||
string value = "toto;param1=value1;param2;param3=value3";
|
||||
Header header = Header("Content-Id", value);
|
||||
BC_ASSERT_TRUE(header.getValue() == "toto");
|
||||
BC_ASSERT_TRUE(header.getParameter("param1").getValue() == "value1");
|
||||
BC_ASSERT_TRUE(header.getParameter("param2").getValue().empty());
|
||||
BC_ASSERT_TRUE(header.getParameter("param3").getValue() == "value3");
|
||||
BC_ASSERT_EQUAL(3, header.getParameters().size(), int, "%d");
|
||||
BC_ASSERT_STRING_EQUAL("", header.getParameter("encoding").getValue().c_str());
|
||||
|
||||
value = "b64";
|
||||
header = Header("Content-Encoding", value);
|
||||
BC_ASSERT_TRUE(header.getValue() == value);
|
||||
BC_ASSERT_EQUAL(0, header.getParameters().size(), int, "%d");
|
||||
BC_ASSERT_STRING_EQUAL("", header.getParameter("access-type").getValue().c_str());
|
||||
}
|
||||
|
||||
test_t contents_tests[] = {
|
||||
TEST_NO_TAG("Multipart to list", multipart_to_list),
|
||||
TEST_NO_TAG("List to multipart", list_to_multipart),
|
||||
TEST_NO_TAG("Content type parsing", content_type_parsing)
|
||||
TEST_NO_TAG("Content type parsing", content_type_parsing),
|
||||
TEST_NO_TAG("Content header parsing", content_header_parsing)
|
||||
};
|
||||
|
||||
test_suite_t content_manager_test_suite = {
|
||||
"Content manager",
|
||||
test_suite_t contents_test_suite = {
|
||||
"Contents",
|
||||
nullptr,
|
||||
nullptr,
|
||||
liblinphone_tester_before_each,
|
||||
liblinphone_tester_after_each,
|
||||
sizeof(content_manager_tests) / sizeof(content_manager_tests[0]), content_manager_tests
|
||||
sizeof(contents_tests) / sizeof(contents_tests[0]), contents_tests
|
||||
};
|
||||
|
|
@ -45,7 +45,7 @@ extern test_suite_t call_video_test_suite;
|
|||
extern test_suite_t clonable_object_test_suite;
|
||||
extern test_suite_t conference_event_test_suite;
|
||||
extern test_suite_t conference_test_suite;
|
||||
extern test_suite_t content_manager_test_suite;
|
||||
extern test_suite_t contents_test_suite;
|
||||
extern test_suite_t cpim_test_suite;
|
||||
extern test_suite_t dtmf_test_suite;
|
||||
extern test_suite_t event_test_suite;
|
||||
|
|
|
|||
|
|
@ -604,7 +604,7 @@ void liblinphone_tester_add_suites() {
|
|||
bc_tester_add_suite(&stun_test_suite);
|
||||
bc_tester_add_suite(&event_test_suite);
|
||||
bc_tester_add_suite(&conference_event_test_suite);
|
||||
bc_tester_add_suite(&content_manager_test_suite);
|
||||
bc_tester_add_suite(&contents_test_suite);
|
||||
bc_tester_add_suite(&flexisip_test_suite);
|
||||
bc_tester_add_suite(&remote_provisioning_test_suite);
|
||||
bc_tester_add_suite(&quality_reporting_test_suite);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue