📄 testparsercategories.cxx
字号:
ParseBuffer pb(txt.data(), txt.size()); BranchParameter bpc(ParameterTypes::branch, pb, ";"); assert(bpc.hasMagicCookie()); assert(bpc.getTransactionId() == "jason.1.2.3"); Data o; { DataStream s(o); bpc.encode(s); } cerr << "!! " << o << endl; assert(o == "branch=z9hG4bK" RESIP_COOKIE "jason.1.2.3-14--" RESIP_COOKIE ""); } { TR _tr("Branch parameter 3"); Data txt("=z9hG4bK" RESIP_COOKIE "3e565-ef7w-17.1.2.3-14--" RESIP_COOKIE "foobie"); ParseBuffer pb(txt.data(), txt.size()); BranchParameter bpcc(ParameterTypes::branch, pb, ";"); assert(bpcc.hasMagicCookie()); assert(bpcc.getTransactionId() == "" RESIP_COOKIE "3e565-ef7w-17.1.2.3-14--" RESIP_COOKIE "foobie"); Data o; { DataStream s(o); bpcc.encode(s); } cerr << "!! " << o << endl; assert(o == "branch=z9hG4bK" RESIP_COOKIE "3e565-ef7w-17.1.2.3-14--" RESIP_COOKIE "foobie"); bpcc.reset("foobie"); o.clear(); { DataStream s(o); bpcc.encode(s); } cerr << "!! " << o << endl; assert(o == "branch=z9hG4bK" RESIP_COOKIE "foobie-1--" RESIP_COOKIE ""); } { TR _tr("Branch parameter 4"); Data txt("=z9hG4bK" RESIP_COOKIE "3e565-ef7w-17.1.2.3-14--" RESIP_COOKIE ""); ParseBuffer pb(txt.data(), txt.size()); BranchParameter bpcc(ParameterTypes::branch, pb, ";"); assert(bpcc.hasMagicCookie()); assert(bpcc.getTransactionId() == "3e565-ef7w-17.1.2.3"); Data o; { DataStream s(o); bpcc.encode(s); } cerr << "!! " << o << endl; assert(o == "branch=z9hG4bK" RESIP_COOKIE "3e565-ef7w-17.1.2.3-14--" RESIP_COOKIE ""); } { TR _tr("Branch parameter 5 externally spiralled branch returns"); Data txt("=z9hG4bK" RESIP_COOKIE "" RESIP_COOKIE "3e565-ef7w-17.1.2.3-14" RESIP_COOKIE "foobie-1--" RESIP_COOKIE ""); ParseBuffer pb(txt.data(), txt.size()); BranchParameter bpcc(ParameterTypes::branch, pb, ";"); assert(bpcc.hasMagicCookie()); assert(bpcc.getTransactionId() == "" RESIP_COOKIE "3e565-ef7w-17.1.2.3-14" RESIP_COOKIE "foobie"); Data o; { DataStream s(o); bpcc.encode(s); } cerr << "!! " << o << endl; assert(o == "branch=z9hG4bK" RESIP_COOKIE "" RESIP_COOKIE "3e565-ef7w-17.1.2.3-14" RESIP_COOKIE "foobie-1--" RESIP_COOKIE ""); } { TR _tr("Branch parameter 6 not one of ours"); Data txt("=z9hG4bK" RESIP_COOKIE ""); ParseBuffer pb(txt.data(), txt.size()); BranchParameter bpcc(ParameterTypes::branch, pb, ";"); assert(bpcc.hasMagicCookie()); assert(bpcc.getTransactionId() == "" RESIP_COOKIE ""); Data o; { DataStream s(o); bpcc.encode(s); } cerr << "!! " << o << endl; assert(o == "branch=z9hG4bK" RESIP_COOKIE ""); } { TR _tr("Branch parameter 7 empty ours"); Data txt("=z9hG4bK" RESIP_COOKIE "-1--" RESIP_COOKIE ""); ParseBuffer pb(txt.data(), txt.size()); BranchParameter bpcc(ParameterTypes::branch, pb, ";"); assert(bpcc.hasMagicCookie()); assert(bpcc.getTransactionId() == ""); Data o; { DataStream s(o); bpcc.encode(s); } cerr << "!! " << o << endl; assert(o == "branch=z9hG4bK" RESIP_COOKIE "-1--" RESIP_COOKIE ""); } { TR _tr("Branch parameter 8 badly formed ours"); Data txt("=z9hG4bK" RESIP_COOKIE "------" RESIP_COOKIE ""); ParseBuffer pb(txt.data(), txt.size()); try { BranchParameter bpcc(ParameterTypes::branch, pb, ";"); assert(bpcc.hasMagicCookie()); bpcc.getTransactionId(); assert(false); } catch (ParseException &e) { } } { TR _tr("Branch parameter 9"); Data txt("=z9hG4bK" RESIP_COOKIE "5b42cb698e8c6827790212ac5bdade1a-1-UEEzMjc2OA..-" RESIP_COOKIE ";rport;received=64.124.66.32"); ParseBuffer pb(txt.data(), txt.size()); BranchParameter bp(ParameterTypes::branch, pb, ";"); assert(bp.hasMagicCookie()); assert(bp.getTransactionId() == "5b42cb698e8c6827790212ac5bdade1a"); cerr << "!! " << bp.clientData() << endl; assert(bp.clientData() == "PA32768"); bp.encode(cerr); cerr << endl; } { TR _tr("Branch parameter 10; magic cookie case mismatch"); Data txt("=z9hG4bk15775865934415"); //little k ParseBuffer pb(txt.data(), txt.size()); BranchParameter bp(ParameterTypes::branch, pb, ";"); assert(bp.hasMagicCookie()); assert(bp.getTransactionId() == "15775865934415"); Data enc; { DataStream ds(enc); bp.encode(ds); } cout << "!! " << enc << endl; assert(enc == "branch=z9hG4bk15775865934415"); BranchParameter bpCopyCons(bp); Data encCopyCons; { DataStream ds(encCopyCons); bpCopyCons.encode(ds); } cout << "!! " << encCopyCons << endl; assert(bp == bpCopyCons); assert(encCopyCons == "branch=z9hG4bk15775865934415"); Data txt2("=z9hG4bk1577234fhg8df"); ParseBuffer pb2(txt2.data(), txt2.size()); BranchParameter bpAssignOp(ParameterTypes::branch, pb2, ";"); bpAssignOp = bp; Data encAssignOp; { DataStream ds(encAssignOp); bpAssignOp.encode(ds); } cout << "!! " << encAssignOp << endl; assert(bp == bpAssignOp); assert(encAssignOp == "branch=z9hG4bk15775865934415"); } { TR _tr("Branch testing 1"); char* viaString = "SIP/2.0/UDP ;branch=z9hG4bKwkl3lkjsdfjklsdjklfdsjlkdklj ;ttl=70"; HeaderFieldValue hfv(viaString, strlen(viaString)); Via via(&hfv, Headers::UNKNOWN); assert (via.param(p_branch).hasMagicCookie()); assert (via.param(p_branch).getTransactionId() == "wkl3lkjsdfjklsdjklfdsjlkdklj"); assert (via.param(p_ttl) == 70); assert (!via.exists(p_rport)); via.param(p_rport); assert (via.exists(p_rport)); assert (via.exists(p_rport)); assert (!via.param(p_rport).hasValue()); } { TR _tr("Branch testing 2"); char* viaString = "SIP/2.0/UDP ;branch=z9hG4bKwkl3lkjsdfjklsdjklfdsjlkdklj ;ttl=70;rport"; HeaderFieldValue hfv(viaString, strlen(viaString)); Via via(&hfv, Headers::UNKNOWN); assert (via.param(p_branch).hasMagicCookie()); assert (via.param(p_branch).getTransactionId() == "wkl3lkjsdfjklsdjklfdsjlkdklj"); assert (via.param(p_ttl) == 70); assert (via.exists(p_rport)); assert (!via.param(p_rport).hasValue()); } { TR _tr("Branch testing 3"); char* viaString = "SIP/2.0/UDP ;branch=z9hG4bKwkl3lkjsdfjklsdjklfdsjlkdklj ;ttl=70;rport=100"; HeaderFieldValue hfv(viaString, strlen(viaString)); Via via(&hfv, Headers::UNKNOWN); assert (via.param(p_branch).hasMagicCookie()); assert (via.param(p_branch).getTransactionId() == "wkl3lkjsdfjklsdjklfdsjlkdklj"); assert (via.param(p_ttl) == 70); assert (via.exists(p_rport)); assert (via.param(p_rport).hasValue()); assert (via.param(p_rport).port() == 100); } { TR _tr("Branch testing 4 with clientData"); Data txt("=z9hG4bK" RESIP_COOKIE "T-i-D-314-Q2xpZW50RGF0YQ..-" RESIP_COOKIE ""); ParseBuffer pb(txt.data(), txt.size()); BranchParameter bpcc(ParameterTypes::branch, pb, ";"); assert (bpcc.getTransactionId() == "T-i-D"); assert (bpcc.clientData() == "ClientData"); Data o; { DataStream s(o); bpcc.encode(s); } // cerr << "!! " << o << endl; assert(o == "branch=z9hG4bK" RESIP_COOKIE "T-i-D-314-Q2xpZW50RGF0YQ..-" RESIP_COOKIE ""); } { TR _tr("Branch testing 5 with sigcomp ID"); Data txt("=z9hG4bK" RESIP_COOKIE "T-i-D-314--PHVybjp1dWlkOmZhMzNjNzJkLTEyMWYtNDdlOC00MmUyLTFlYjZlMjRhYmE2ND4." RESIP_COOKIE ""); ParseBuffer pb(txt.data(), txt.size()); BranchParameter bpcc(ParameterTypes::branch, pb, ";"); assert (bpcc.getTransactionId() == "T-i-D"); assert (bpcc.clientData() == ""); assert (bpcc.getSigcompCompartment() == "<urn:uuid:fa33c72d-121f-47e8-42e2-1eb6e24aba64>"); bpcc.setSigcompCompartment("<urn:uuid:fa33c72d-121f-47e8-42e2-1eb6e24aba64>"); Data o; { DataStream s(o); bpcc.encode(s); }// cerr << "!! " << o << endl; assert(o == "branch=z9hG4bK" RESIP_COOKIE "T-i-D-314--PHVybjp1dWlkOmZhMzNjNzJkLTEyMWYtNDdlOC00MmUyLTFlYjZlMjRhYmE2ND4." RESIP_COOKIE ""); } { TR _tr("Branch testing 6 with sigcomp ID and Client Data"); Data txt("=z9hG4bK" RESIP_COOKIE "T-i-D-314-Q2xpZW50RGF0YQ..-PHVybjp1dWlkOmZhMzNjNzJkLTEyMWYtNDdlOC00MmUyLTFlYjZlMjRhYmE2ND4." RESIP_COOKIE ""); ParseBuffer pb(txt.data(), txt.size()); BranchParameter bpcc(ParameterTypes::branch, pb, ";"); assert (bpcc.getTransactionId() == "T-i-D"); assert (bpcc.clientData() == "ClientData"); assert (bpcc.getSigcompCompartment() == "<urn:uuid:fa33c72d-121f-47e8-42e2-1eb6e24aba64>"); bpcc.setSigcompCompartment("<urn:uuid:fa33c72d-121f-47e8-42e2-1eb6e24aba64>"); Data o; { DataStream s(o); bpcc.encode(s); } // cerr << "!! " << o << endl; assert(o == "branch=z9hG4bK" RESIP_COOKIE "T-i-D-314-Q2xpZW50RGF0YQ..-PHVybjp1dWlkOmZhMzNjNzJkLTEyMWYtNDdlOC00MmUyLTFlYjZlMjRhYmE2ND4." RESIP_COOKIE ""); } //3329 tests { TR _tr( "Token + parameters parse test 3329 "); char *org = "digest;d-alg=md5"; HeaderFieldValue hfv(org, strlen(org)); Token tok(&hfv, Headers::UNKNOWN); assert(tok.value() == "digest"); assert(tok.param(p_dAlg) == "md5"); } { TR _tr( "Token + parameters parse test"); char *org = "digest;d-qop=verify"; HeaderFieldValue hfv(org, strlen(org)); Token tok(&hfv, Headers::UNKNOWN); assert(tok.value() == "digest"); assert(tok.param(p_dQop) == "verify"); } { TR _tr( "Token + parameters parse test"); char *org = "digest;d-ver=\"0000000000000000000000000000abcd\""; HeaderFieldValue hfv(org, strlen(org)); Token tok(&hfv, Headers::UNKNOWN); assert(tok.value() == "digest"); assert(tok.param(p_dVer) == "0000000000000000000000000000abcd"); } { TR _tr( "Test CSeqCategory 1"); Data cseqString("1 INVITE"); HeaderFieldValue hfv(cseqString.data(), cseqString.size()); CSeqCategory str(&hfv, Headers::UNKNOWN); assert(str.sequence() == 1); assert(str.method() == INVITE); assert(Data::from(str) == cseqString); } { TR _tr( "Test CSeqCategory 2"); Data cseqString("4294967295 INVITE"); HeaderFieldValue hfv(cseqString.data(), cseqString.size()); CSeqCategory str(&hfv, Headers::UNKNOWN); assert(str.sequence() == 4294967295); assert(str.method() == INVITE); assert(Data::from(str) == cseqString); } { TR _tr( "Test RAckCategory 1"); Data rackString("1 2 INVITE"); HeaderFieldValue hfv(rackString.data(), rackString.size()); RAckCategory str(&hfv, Headers::UNKNOWN); assert(str.rSequence() == 1); assert(str.cSequence() == 2); assert(str.method() == INVITE); assert(Data::from(str) == rackString); } { TR _tr( "Test RAckCategory 2"); Data rackString("4294967294 4294967295 INVITE"); HeaderFieldValue hfv(rackString.data(), rackString.size()); RAckCategory str(&hfv, Headers::UNKNOWN); assert(str.rSequence() == 4294967294); assert(str.cSequence() == 4294967295); assert(str.method() == INVITE); assert(Data::from(str) == rackString); } cerr << "\nTEST OK" << endl; return 0;}/* ==================================================================== * The Vovida Software License, Version 1.0 * * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The names "VOCAL", "Vovida Open Communication Application Library", * and "Vovida Open Communication Application Library (VOCAL)" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact vocal@vovida.org. * * 4. Products derived from this software may not be called "VOCAL", nor * may "VOCAL" appear in their name, without prior written * permission of Vovida Networks, Inc. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA * NE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -