📄 testparsercategories.cxx
字号:
NameAddr to;
to.parse(pb);
Uri& uri = to.uri();
assert(uri.scheme() == "sips");
assert(uri.user() == "bob;param=gargle");
assert(uri.password() == "password");
assert(uri.host() == "foo.com");
}
{
TR _tr( "URI parse, parameters, port");
Data uriString = "sips:bob;param=gargle:password@foo.com:6000";
ParseBuffer pb(uriString.data(), uriString.size());
NameAddr to;
to.parse(pb);
Uri& uri = to.uri();
assert(uri.scheme() == "sips");
assert(uri.user() == "bob;param=gargle");
assert(uri.password() == "password");
assert(uri.host() == "foo.com");
assert(uri.port() == 6000);
}
{
TR _tr( "URI parse, parameters, correct termination check");
Data uriString = "sips:bob;param=gargle:password@foo.com notHost";
ParseBuffer pb(uriString.data(), uriString.size());
NameAddr to;
to.parse(pb);
Uri& uri = to.uri();
assert(uri.scheme() == "sips");
assert(uri.user() == "bob;param=gargle");
assert(uri.password() == "password");
cerr << "Uri:" << uri.host() << endl;
assert(uri.host() == "foo.com");
}
{
TR _tr( "URI parse, transport parameter");
Data uriString = "sip:bob@biloxi.com;transport=udp";
ParseBuffer pb(uriString.data(), uriString.size());
NameAddr to;
to.parse(pb);
Uri& uri = to.uri();
assert(uri.param(p_transport) == "udp");
}
cerr << "URI comparison tests" << endl;
{
Data uriStringA("sip:carol@chicago.com");
Data uriStringB("sip:carol@chicago.com;newparam=5");
Data uriStringC("sip:carol@chicago.com;security=on");
ParseBuffer pa(uriStringA.data(), uriStringA.size());
ParseBuffer pb(uriStringB.data(), uriStringB.size());
ParseBuffer pc(uriStringC.data(), uriStringC.size());
NameAddr nA, nB, nC;
nA.parse(pa);
nB.parse(pb);
nC.parse(pc);
Uri& uA = nA.uri();
Uri& uB = nB.uri();
Uri& uC = nC.uri();
assert(uA == uB);
assert(uB == uC);
assert(uA == uC);
}
{
Data uriStringA = "sip:biloxi.com;transport=tcp;method=REGISTER";
Data uriStringB = "sip:biloxi.com;method=REGISTER;transport=tcp";
ParseBuffer pa(uriStringA.data(), uriStringA.size());
ParseBuffer pb(uriStringB.data(), uriStringB.size());
NameAddr nA, nB;
nA.parse(pa);
nB.parse(pb);
Uri& uA = nA.uri();
Uri& uB = nB.uri();
assert(uA == uB);
}
{
Data uriStringA = "sip:alice@atlanta.com";
Data uriStringB = "sip:alice@atlanta.com";
ParseBuffer pa(uriStringA.data(), uriStringA.size());
ParseBuffer pb(uriStringB.data(), uriStringB.size());
NameAddr nA, nB;
nA.parse(pa);
nB.parse(pb);
Uri& uA = nA.uri();
Uri& uB = nB.uri();
assert(uA == uB);
}
{
Data uriStringA = "sip:alice@AtLanTa.CoM;Transport=UDP";
Data uriStringB = "SIP:ALICE@AtLanTa.CoM;Transport=udp";
ParseBuffer pa(uriStringA.data(), uriStringA.size());
ParseBuffer pb(uriStringB.data(), uriStringB.size());
NameAddr nA, nB;
nA.parse(pa);
nB.parse(pb);
Uri& uA = nA.uri();
Uri& uB = nB.uri();
assert(uA != uB);
}
{
Data uriStringA = "sip:bob@192.0.2.4";
Data uriStringB = "sip:bob@phone21.boxesbybob.com";
ParseBuffer pa(uriStringA.data(), uriStringA.size());
ParseBuffer pb(uriStringB.data(), uriStringB.size());
NameAddr nA, nB;
nA.parse(pa);
nB.parse(pb);
Uri& uA = nA.uri();
Uri& uB = nB.uri();
assert(uA != uB);
}
{
Data uriStringA = "sip:bob@biloxi.com:6000;transport=tcp";
Data uriStringB = "sip:bob@biloxi.com";
ParseBuffer pa(uriStringA.data(), uriStringA.size());
ParseBuffer pb(uriStringB.data(), uriStringB.size());
NameAddr nA, nB;
nA.parse(pa);
nB.parse(pb);
Uri& uA = nA.uri();
Uri& uB = nB.uri();
assert(uA != uB);
}
{
Data uriStringA = "sip:bob@biloxi.com;transport=udp";
Data uriStringB = "sip:bob@biloxi.com";
ParseBuffer pa(uriStringA.data(), uriStringA.size());
ParseBuffer pb(uriStringB.data(), uriStringB.size());
NameAddr nA, nB;
nA.parse(pa);
nB.parse(pb);
Uri& uA = nA.uri();
Uri& uB = nB.uri();
cerr << "A: " << uA << endl;
cerr << "B: " << uB << endl;
cerr << "A:exists(transport) " << uA.exists(p_transport) << endl;
assert(uA != uB);
}
{ //embedded header comparison, not supported yet
// char *uriStringA = "sip:carol@chicago.com?Subject=next%20meeting";
// char *uriStringB = "sip:carol@chicago.com";
// ParseBuffer pa(uriStringA, strlen(uriStringA));
// ParseBuffer pb(uriStringB, strlen(uriStringB));
// Uri uA, uB;
// uA.parse(uriStringA);
// uB.parse(uriStringB);
// assert(uA != uB);
}
{
TR _tr( "Request Line parse");
Data requestLineString("INVITE sips:bob@foo.com SIP/2.0");
HeaderFieldValue hfv(requestLineString.data(), requestLineString.size());
RequestLine requestLine(&hfv, Headers::UNKNOWN);
assert(requestLine.uri().scheme() == "sips");
assert(requestLine.uri().user() == "bob");
cerr << requestLine.uri().host() << endl;
assert(requestLine.uri().host() == "foo.com");
assert(requestLine.getMethod() == INVITE);
assert(requestLine.getSipVersion() == "SIP/2.0");
}
{
TR _tr( "Request Line parse tel");
Data requestLineString("INVITE tel:4153331212 SIP/2.0");
HeaderFieldValue hfv(requestLineString.data(), requestLineString.size());
RequestLine requestLine(&hfv, Headers::UNKNOWN);
assert(requestLine.uri().scheme() == "tel");
assert(requestLine.uri().user() == "4153331212");
assert(requestLine.getMethod() == INVITE);
assert(requestLine.getSipVersion() == "SIP/2.0");
}
{
TR _tr( "Request Line parse, parameters");
Data requestLineString("INVITE sips:bob@foo.com;maddr=1.2.3.4 SIP/2.0");
HeaderFieldValue hfv(requestLineString.data(), requestLineString.size());
RequestLine requestLine(&hfv, Headers::UNKNOWN);
assert(requestLine.uri().scheme() == "sips");
assert(requestLine.uri().user() == "bob");
cerr << requestLine.uri().host() << endl;
assert(requestLine.uri().host() == "foo.com");
assert(requestLine.getMethod() == INVITE);
assert(requestLine.uri().param(p_maddr) == "1.2.3.4");
cerr << requestLine.getSipVersion() << endl;
assert(requestLine.getSipVersion() == "SIP/2.0");
}
{
TR _tr( "NameAddr parse");
Data nameAddrString("sips:bob@foo.com");
HeaderFieldValue hfv(nameAddrString.data(), nameAddrString.size());
NameAddr nameAddr(&hfv, Headers::UNKNOWN);
assert(nameAddr.uri().scheme() == "sips");
assert(nameAddr.uri().user() == "bob");
assert(nameAddr.uri().host() == "foo.com");
}
{
TR _tr( "NameAddr parse, displayName");
Data nameAddrString("Bob<sips:bob@foo.com>");
HeaderFieldValue hfv(nameAddrString.data(), nameAddrString.size());
NameAddr nameAddr(&hfv, Headers::UNKNOWN);
assert(nameAddr.displayName() == "Bob");
assert(nameAddr.uri().scheme() == "sips");
assert(nameAddr.uri().user() == "bob");
assert(nameAddr.uri().host() == "foo.com");
}
{
TR _tr( "NameAddr parse, quoted displayname");
Data nameAddrString = "\"Bob\"<sips:bob@foo.com>";
HeaderFieldValue hfv(nameAddrString.data(), nameAddrString.size());
NameAddr nameAddr(&hfv, Headers::UNKNOWN);
assert(nameAddr.displayName() == "Bob");
assert(nameAddr.uri().scheme() == "sips");
assert(nameAddr.uri().user() == "bob");
assert(nameAddr.uri().host() == "foo.com");
}
{
TR _tr( "NameAddr parse, quoted displayname, embedded quotes");
Data nameAddrString("\"Bob \\\" asd \"<sips:bob@foo.com>");
HeaderFieldValue hfv(nameAddrString.data(), nameAddrString.size());
NameAddr nameAddr(&hfv, Headers::UNKNOWN);
assert(nameAddr.displayName() == "Bob \\\" asd ");
assert(nameAddr.uri().scheme() == "sips");
assert(nameAddr.uri().user() == "bob");
assert(nameAddr.uri().host() == "foo.com");
}
{
TR _tr( "NameAddr parse, unquoted displayname, paramterMove");
Data nameAddrString("Bob<sips:bob@foo.com>;tag=456248;mobility=\"hobble\"");
HeaderFieldValue hfv(nameAddrString.data(), nameAddrString.size());
NameAddr nameAddr(&hfv, Headers::UNKNOWN);
assert(nameAddr.displayName() == "Bob");
assert(nameAddr.uri().scheme() == "sips");
assert(nameAddr.uri().user() == "bob");
assert(nameAddr.uri().host() == "foo.com");
cerr << "Uri params: ";
nameAddr.uri().encodeParameters(cerr) << endl;
cerr << "Header params: ";
nameAddr.encodeParameters(cerr) << endl;
assert(nameAddr.param(p_tag) == "456248");
assert(nameAddr.param(p_mobility) == "hobble");
assert(nameAddr.uri().exists(p_tag) == false);
assert(nameAddr.uri().exists(p_mobility) == false);
}
{
TR _tr( "NameAddr parse, quoted displayname, parameterMove");
Data nameAddrString("\"Bob\"<sips:bob@foo.com>;tag=456248;mobility=\"hobble\"");
HeaderFieldValue hfv(nameAddrString.data(), nameAddrString.size());
NameAddr nameAddr(&hfv, Headers::UNKNOWN);
assert(nameAddr.displayName() == "Bob");
assert(nameAddr.uri().scheme() == "sips");
assert(nameAddr.uri().user() == "bob");
assert(nameAddr.uri().host() == "foo.com");
cerr << "Uri params: ";
nameAddr.uri().encodeParameters(cerr) << endl;
cerr << "Header params: ";
nameAddr.encodeParameters(cerr) << endl;
assert(nameAddr.param(p_tag) == "456248");
assert(nameAddr.param(p_mobility) == "hobble");
assert(nameAddr.uri().exists(p_tag) == false);
assert(nameAddr.uri().exists(p_mobility) == false);
}
{
TR _tr( "NameAddr parse, unquoted displayname, paramterMove");
Data nameAddrString("Bob<sips:bob@foo.com;tag=456248;mobility=\"hobble\">");
HeaderFieldValue hfv(nameAddrString.data(), nameAddrString.size());
NameAddr nameAddr(&hfv, Headers::UNKNOWN);
assert(nameAddr.displayName() == "Bob");
assert(nameAddr.uri().scheme() == "sips");
assert(nameAddr.uri().user() == "bob");
assert(nameAddr.uri().host() == "foo.com");
cerr << "Uri params: ";
nameAddr.uri().encodeParameters(cerr) << endl;
cerr << "Header params: ";
nameAddr.encodeParameters(cerr) << endl;
assert(nameAddr.uri().param(p_tag) == "456248");
assert(nameAddr.uri().param(p_mobility) == "hobble");
assert(nameAddr.exists(p_tag) == false);
assert(nameAddr.exists(p_mobility) == false);
}
{
TR _tr( "NameAddr parse, unquoted displayname, paramterMove");
Data nameAddrString("Bob<sips:bob@foo.com;mobility=\"hobb;le\";tag=\"true;false\">");
HeaderFieldValue hfv(nameAddrString.data(), nameAddrString.size());
NameAddr nameAddr(&hfv, Headers::UNKNOWN);
assert(nameAddr.displayName() == "Bob");
assert(nameAddr.uri().scheme() == "sips");
assert(nameAddr.uri().user() == "bob");
assert(nameAddr.uri().host() == "foo.com");
cerr << "Uri params: ";
nameAddr.uri().encodeParameters(cerr) << endl;
cerr << "Header params: ";
nameAddr.encodeParameters(cerr) << endl;
assert(nameAddr.uri().param(p_mobility) == "hobb;le");
assert(nameAddr.uri().param(p_tag) == "true;false");
// assert("true;false" == nameAddr.uri().param(Data("useless")));
assert(nameAddr.exists(p_mobility) == false);
}
{
TR _tr( "NameAddr parse");
Data nameAddrString("sip:101@localhost:5080;transport=UDP");
HeaderFieldValue hfv(nameAddrString.data(), nameAddrString.size());
NameAddr nameAddr(&hfv, Headers::UNKNOWN);
assert(nameAddr.displayName() == "");
assert(nameAddr.uri().scheme() == "sip");
assert(nameAddr.uri().user() == "101");
}
{
TR _tr( "NameAddr parse, no user in uri");
Data nameAddrString("sip:localhost:5070");
HeaderFieldValue hfv(nameAddrString.data(), nameAddrString.size());
NameAddr nameAddr(&hfv, Headers::UNKNOWN);
assert(nameAddr.displayName() == "");
assert(nameAddr.uri().scheme() == "sip");
assert(nameAddr.uri().host() == "localhost");
assert(nameAddr.uri().user() == "");
assert(nameAddr.uri().port() == 5070);
}
{
TR _tr( "StatusLine, no reason code");
Data statusLineString("SIP/2.0 100 ");
HeaderFieldValue hfv(statusLineString.data(), statusLineString.size());
StatusLine statusLine(&hfv, Headers::UNKNOWN);
assert(statusLine.responseCode() == 100);
assert(statusLine.reason() == "");
assert(statusLine.getSipVersion() == "SIP/2.0");
}
{
TR _tr( "StatusLine, no reason code");
Data statusLineString("SIP/2.0 100");
HeaderFieldValue hfv(statusLineString.data(), statusLineString.size());
StatusLine statusLine(&hfv, Headers::UNKNOWN);
assert(statusLine.responseCode() == 100);
assert(statusLine.reason() == "");
assert(statusLine.getSipVersion() == "SIP/2.0");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -