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

📄 testparsercategories.cxx

📁 这是国外的resip协议栈
💻 CXX
📖 第 1 页 / 共 5 页
字号:
   }   {      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");   }   {      TR _tr("Auth Schemes");      char* authorizationString = "Digest realm=\"66.100.107.120\", username=\"1234\", nonce=\"1011235448\"   , uri=\"sip:66.100.107.120\"   , algorithm=MD5, response=\"8a5165b024fda362ed9c1e29a7af0ef2\"";      HeaderFieldValue hfv(authorizationString, strlen(authorizationString));            Auth auth(&hfv, Headers::UNKNOWN);      cerr << "Auth scheme: " <<  auth.scheme() << endl;      assert(auth.scheme() == "Digest");      cerr << "   realm: " <<  auth.param(p_realm) << endl;      assert(auth.param(p_realm) == "66.100.107.120");       assert(auth.param(p_username) == "1234");       assert(auth.param(p_nonce) == "1011235448");       assert(auth.param(p_uri) == "sip:66.100.107.120");       assert(auth.param(p_algorithm) == "MD5");       assert(auth.param(p_response) == "8a5165b024fda362ed9c1e29a7af0ef2");       stringstream s;      auth.encode(s);      cerr << s.str() << endl;            assert(s.str() == "Digest realm=\"66.100.107.120\",username=\"1234\",nonce=\"1011235448\",uri=\"sip:66.100.107.120\",algorithm=MD5,response=\"8a5165b024fda362ed9c1e29a7af0ef2\"");   }   {      TR _tr("More Auth");      char* authorizationString = "realm=\"66.100.107.120\", username=\"1234\", nonce=\"1011235448\"   , uri=\"sip:66.100.107.120\"   , algorithm=MD5, response=\"8a5165b024fda362ed9c1e29a7af0ef2\"";      HeaderFieldValue hfv(authorizationString, strlen(authorizationString));            Auth auth(&hfv, Headers::UNKNOWN);      cerr << "Auth scheme: " <<  auth.scheme() << endl;      assert(auth.scheme() == "");      cerr << "   realm: " <<  auth.param(p_realm) << endl;      assert(auth.param(p_realm) == "66.100.107.120");       assert(auth.param(p_username) == "1234");       assert(auth.param(p_nonce) == "1011235448");       assert(auth.param(p_uri) == "sip:66.100.107.120");       assert(auth.param(p_algorithm) == "MD5");       assert(auth.param(p_response) == "8a5165b024fda362ed9c1e29a7af0ef2");       stringstream s;      auth.encode(s);      cerr << s.str() << endl;            assert(s.str() == "realm=\"66.100.107.120\",username=\"1234\",nonce=\"1011235448\",uri=\"sip:66.100.107.120\",algorithm=MD5,response=\"8a5165b024fda362ed9c1e29a7af0ef2\"");   }

⌨️ 快捷键说明

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