DataVerify.cxx
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:12k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. /* ====================================================================
  2.  * The Vovida Software License, Version 1.0 
  3.  * 
  4.  * Copyright (c) 2000 Vovida Networks, Inc.  All rights reserved.
  5.  * 
  6.  * Redistribution and use in source and binary forms, with or without
  7.  * modification, are permitted provided that the following conditions
  8.  * are met:
  9.  * 
  10.  * 1. Redistributions of source code must retain the above copyright
  11.  *    notice, this list of conditions and the following disclaimer.
  12.  * 
  13.  * 2. Redistributions in binary form must reproduce the above copyright
  14.  *    notice, this list of conditions and the following disclaimer in
  15.  *    the documentation and/or other materials provided with the
  16.  *    distribution.
  17.  * 
  18.  * 3. The names "VOCAL", "Vovida Open Communication Application Library",
  19.  *    and "Vovida Open Communication Application Library (VOCAL)" must
  20.  *    not be used to endorse or promote products derived from this
  21.  *    software without prior written permission. For written
  22.  *    permission, please contact vocal@vovida.org.
  23.  *
  24.  * 4. Products derived from this software may not be called "VOCAL", nor
  25.  *    may "VOCAL" appear in their name, without prior written
  26.  *    permission of Vovida Networks, Inc.
  27.  * 
  28.  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
  29.  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  30.  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
  31.  * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL VOVIDA
  32.  * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
  33.  * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
  34.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  35.  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  36.  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  37.  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  38.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
  39.  * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  40.  * DAMAGE.
  41.  * 
  42.  * ====================================================================
  43.  * 
  44.  * This software consists of voluntary contributions made by Vovida
  45.  * Networks, Inc. and many individuals on behalf of Vovida Networks,
  46.  * Inc.  For more information on Vovida Networks, Inc., please see
  47.  * <http://www.vovida.org/>.
  48.  *
  49.  */
  50. static const char* const DataVerify_cxx_Version =
  51.     "$Id: DataVerify.cxx,v 1.4 2001/07/25 21:06:31 bko Exp $";
  52. #include "Data.hxx"
  53. #include "Verify.hxx"
  54. void test()
  55. {
  56.     {
  57. Data xyz("AllCaps");
  58. xyz.uppercase();
  59. test_verify(xyz == "ALLCAPS");
  60. xyz.lowercase();
  61. test_verify(xyz == "allcaps");
  62.     }
  63.     {
  64. Data xyz("allcaps");
  65. test_verify("allcaps" == xyz);
  66. test_verify("allCaps" != xyz);
  67.     }
  68.     /// test parseOutsideQuotes
  69.     {
  70. Data test(""Ogawa, Bryan" <sip:bko@cisco.com,foo,bar,city>,"Doe, John" <sip:johnd@test.com,,>,Test Person <sip:test@test.com>");
  71. bool fail;
  72. Data a = test.parseOutsideQuotes(",", true, true, &fail);
  73. test_verify(fail == false);
  74. Data b = test.parseOutsideQuotes(",", true, true, &fail);
  75. test_verify(a == ""Ogawa, Bryan" <sip:bko@cisco.com,foo,bar,city>");
  76. test_verify(b == ""Doe, John" <sip:johnd@test.com,,>");
  77. test_verify(test == "Test Person <sip:test@test.com>");
  78. test_verify(fail == false);
  79. // cout << a << endl;
  80. // cout << b << endl;
  81.     }
  82.     {
  83. Data test("",,," <,,,,>,",," <,,>,",,,"<,,,>");
  84. bool fail;
  85. Data a = test.parseOutsideQuotes(",", true, false, &fail);
  86. test_verify(a == "",,," <");
  87. test = "<,,,,> ",," <,,>,",,,"<,,,>";
  88. Data b = test.parseOutsideQuotes(",", false, true, &fail);
  89. test_verify(b == "<,,,,> "");
  90. test = "<<,<,<,,,<,<,<,   ,,,, , ,  >,>  ";
  91. Data c = test.parseOutsideQuotes(",", false, true, &fail);
  92. test_verify(c == "<<,<,<,,,<,<,<,   ,,,, , ,  >");
  93.     }
  94.     /// test parse
  95.     {
  96. bool fail;
  97. Data test = "this is a simple test";
  98. Data a = test.parse(" ", &fail);
  99. test_verify(fail == false);
  100. test_verify(a == "this");
  101. Data b = test.parse(" ", &fail);
  102. test_verify(fail == false);
  103. test_verify(b == "is");
  104. Data c = test.parse(" ", &fail);
  105. test_verify(fail == false);
  106. test_verify(c == "a");
  107. Data d = test.parse(" ", &fail);
  108. test_verify(fail == false);
  109. test_verify(d == "simple");
  110. Data e = test.parse(" ", &fail);
  111. test_verify(fail == true);
  112. test_verify(test == "test");
  113.     }
  114.     // more tests of parse
  115.     {
  116. bool fail;
  117. Data test = "this is a simple test";
  118. {
  119.     Data a = test.parse("sal", &fail);
  120.     test_verify(fail == false);
  121.     test_verify(a == "thi");
  122. }
  123. {
  124.     Data a = test.parse("sal", &fail);
  125.     test_verify(fail == false);
  126.     test_verify(a == " i");
  127. }
  128. {
  129.     Data a = test.parse("sal", &fail);
  130.     test_verify(fail == false);
  131.     test_verify(a == " ");
  132. }
  133. {
  134.     Data a = test.parse("sal", &fail);
  135.     test_verify(fail == false);
  136.     test_verify(a == " ");
  137. }
  138. {
  139.     Data a = test.parse("sal", &fail);
  140.     test_verify(fail == false);
  141.     test_verify(a == "imp");
  142. }
  143. {
  144.     Data a = test.parse("sal", &fail);
  145.     test_verify(fail == false);
  146.     test_verify(a == "e te");
  147. }
  148. {
  149.     Data a = test.parse("sal", &fail);
  150.     test_verify(fail == true);
  151.     test_verify(test == "t");
  152. }
  153.     }
  154.     {
  155. Data test = "From:    testItem";
  156. bool fail;
  157. Data a = test.parse(": ", &fail);
  158. test_verify(fail == false);
  159. test_verify(a == "From");
  160. test_verify(test == "testItem");
  161.     }
  162.     {
  163. Data test;
  164. test = Data("a") + Data("b");
  165. test_verify(test == "ab");
  166. Data second = "Ogawa";
  167. test = "Bryan " + second;
  168. test_bug(test == "Bryan Ogawa");
  169.         Data number = "7";    
  170.         Data result;
  171.             
  172.         result = "Wigets: " + number;
  173. test_bug(result == "Wigets: 7");
  174.     }
  175.     {
  176. Data test0 = "random junk asdf this is a test";
  177. Data test1;
  178. int retn = test0.match("asdf", &test1, true, "hello");
  179. test_verify(retn == FOUND);
  180. test_verify (test0 == "hello this is a test");
  181. test_verify (test1 == "random junk ");
  182.     }
  183.     {
  184. Data msg1("From: test1@test.comrnTo: test2@test2.comrnCall-ID: f81d4fae-7dec-11d0-a765-00a0c91e6bf6@foo.bar.comrn");
  185. Data msg2("From: test1@test.comrnTo: test2@test2.comrnCall-ID: e81d4fae-7dec-11d0-a765-00a0c91e6bf6@foo.bar.comrn");
  186. test_verify( !(msg1 < msg2) );
  187.     }
  188.     {
  189. Data msg1("hello");
  190. Data msg2("Hello");
  191. test_verify ( isEqualNoCase(msg1, msg2) == true );
  192. Data msg3("HeLLo");
  193. Data msg4("hEllO");
  194. test_verify ( isEqualNoCase(msg3, msg4) == true ) ;
  195. Data msg5("HeLLo");
  196. Data msg6("hEllOo");
  197. test_verify ( isEqualNoCase(msg5, msg6) == false );
  198. Data msg7("HeLLoo");
  199. Data msg8("hEllO");
  200. test_verify ( isEqualNoCase(msg7, msg8) == false );
  201.     }
  202.     {
  203. Data one = "data one";
  204. Data two = "data two";
  205. Data three = one + two;
  206. test_verify (three == "data onedata two");
  207.     }
  208.     {
  209. Data one = "data one";
  210. Data two = "data two";
  211. one += two;
  212. test_verify (one == "data onedata two");
  213.     }
  214.     {
  215. Data one = "abcd";
  216. Data two = one;
  217. two.setchar(0, 'z');
  218. two.setchar(1, 'y');
  219. two.setchar(2, 'x');
  220. two.setchar(3, 'w');
  221. test_verify ( (one == "abcd") && (two == "zyxw"));
  222.     }
  223.     {
  224. Data junk;
  225. test_verify(junk == "");
  226.     }
  227.     {
  228. Data junk = 7;
  229. test_verify(junk == "7");
  230.     }
  231.     {
  232. Data junk;
  233. junk = 7;
  234. test_verify (junk == "7");
  235.     }
  236.     {
  237. Data junk;
  238. junk = "Content-Length: ";
  239. junk += 7;
  240. test_verify (junk == "Content-Length: 7");
  241.     }
  242.     {
  243. Data junk = "asnf abcd";
  244. Data rest;
  245. test_verify (junk.match("d", &rest, true) == FOUND);
  246. test_verify (rest == "asnf abc");
  247. test_verify (junk == "");
  248.     }
  249.     {
  250. Data test0 = "1024";
  251. Data test1 = "1000x1000";
  252. Data test2 = " 1000";
  253. Data test3 = "1000 1000";
  254. Data test4 = "19238471832758715289725371";
  255. Data test5 = "4000@";
  256. test_verify(int(test0) == 1024);
  257. test_verify(int(test1) == 1000);
  258. test_verify (int(test2) == 0);
  259. test_verify(int(test3) == 1000);
  260. test_verify (int(test5) == 4000);
  261.     }
  262.     {
  263. Data j = "asnf abcd";
  264. string s = j;
  265. test_verify (Data(s) == j);
  266.     }
  267.     {
  268. const int MAX_TESTS = 25;
  269. Data data[MAX_TESTS];
  270. data[0] = "Testing Data";
  271. test_verify (strcmp(data[0].getData(), "Testing Data") == 0);
  272. data[1] = data[0];
  273. test_verify (strcmp(data[1].getData(), "Testing Data") == 0);
  274. data[2] = "Testing Data";
  275. data[2] += "added data";
  276. test_verify (strcmp(data[2].getData(), "Testing Dataadded data") == 0);
  277. data[3] = data[1] + data[2];
  278. test_verify (data[3] == "Testing DataTesting Dataadded data");
  279. string str("This is a string");
  280. Data data4(str);
  281. test_verify (data4 == "This is a string");
  282. mstring mstr("This is a mstring");
  283. Data data5(mstr);
  284. test_verify (data5 == "This is a mstring");
  285. int value = 5;
  286. Data data6(value);
  287. test_verify (data6 == "5");
  288. Data testData;
  289. testData = "alphb";
  290. data[7] = "alpha";
  291. test_verify ((data[7] < testData) &&
  292.      !(data[7] == testData) &&
  293.      !(data[7] > testData) &&
  294.      (data[7] != testData));
  295. data[8] = "alphc";
  296. test_verify ((data[8] > testData) &&
  297.      !(data[8] == testData) &&
  298.      !(data[8] < testData) &&
  299.      (data[8] != testData));
  300. data[9] = "alphb";
  301. test_verify ((data[9] == testData) &&
  302.      !(data[9] < testData) &&
  303.      !(data[9] > testData) &&
  304.      !(data[9] != testData));
  305. data[10] = "alphbx";
  306. test_verify ((data[10] > testData) &&
  307.      !(data[10] < testData) &&
  308.      !(data[10] == testData) &&
  309.      (data[10] != testData));
  310. data[11] = "hello, world!";
  311. char newstr[256];
  312. strcpy(newstr, data[11].getData());
  313. test_verify (
  314.     (strcmp(newstr, "hello, world!") == 0) && (data[11].length() == 13));
  315.     }
  316.     {
  317. Data test = "Hello, world!";
  318. Data test2 = "Hello";
  319. test_verify ( test > "Hello");
  320. test_verify ( test > test2);
  321. test_verify ( "Hello" < test);
  322. test_verify ( test2 < test );
  323.     }
  324.     {
  325. // test lowercase() and uppercase()
  326. Data test = "Hello, World!";
  327. test.lowercase();
  328. test_verify(test == "hello, world!");
  329. test_verify(test != "Hello, World!");
  330. Data test2 = "Hello, World!";
  331. test2.uppercase();
  332. test_verify(test2 == "HELLO, WORLD!");
  333. test_verify(test2 != "Hello, World!");
  334.     }
  335.     /// test matchChar
  336.     {
  337. char fail;
  338. Data test = "this is a simple test";
  339. {
  340.     Data a = test.matchChar("sal", &fail);
  341.     test_verify(fail == 's');
  342.     test_verify(a == "thi");
  343. }
  344. {
  345.     Data a = test.matchChar("sal", &fail);
  346.     test_verify(fail == 's');
  347.     test_verify(a == " i");
  348. }
  349. {
  350.     Data a = test.matchChar("sal", &fail);
  351.     test_verify(fail == 'a');
  352.     test_verify(a == " ");
  353. }
  354. {
  355.     Data a = test.matchChar("sal", &fail);
  356.     test_verify(fail == 's');
  357.     test_verify(a == " ");
  358. }
  359. {
  360.     Data a = test.matchChar("sal", &fail);
  361.     test_verify(fail == 'l');
  362.     test_verify(a == "imp");
  363. }
  364. {
  365.     Data a = test.matchChar("sal", &fail);
  366.     test_verify(fail == 's');
  367.     test_verify(a == "e te");
  368. }
  369. {
  370.     Data a = test.matchChar("sal", &fail);
  371.     test_verify(fail == '');
  372.     test_verify(test == "t");
  373. }
  374.     }
  375.     {
  376. Data test = "From:    testItem";
  377. char fail;
  378. Data a = test.matchChar(": ", &fail);
  379. test_verify(fail == ':');
  380. test_verify(a == "From");
  381. test_verify(test == "    testItem");
  382.     }
  383.     // test getLine
  384.     {
  385. Data test = "testntestrntestrn";
  386. {
  387.     bool fail;
  388.     Data a = test.getLine(&fail);
  389.     test_verify(fail == false);
  390.     test_verify(a == "test");
  391. }
  392. {
  393.     bool fail;
  394.     Data a = test.getLine(&fail);
  395.     test_verify(fail == false);
  396.     test_verify(a == "test");
  397. }
  398. {
  399.     bool fail;
  400.     Data a = test.getLine(&fail);
  401.     test_verify(fail == false);
  402.     test_verify(a == "test");
  403. }
  404. {
  405.     bool fail;
  406.     Data a = test.getLine(&fail);
  407.     test_verify(fail == true);
  408. }
  409. Data test2 = "testrnrntestrn";
  410. {
  411.     bool fail;
  412.     Data a = test2.getLine(&fail);
  413.     test_verify(fail == false);
  414.     test_verify(a == "test");
  415. }
  416. {
  417.     bool fail;
  418.     Data a = test2.getLine(&fail);
  419.     test_verify(fail == false);
  420.     test_verify(a == "");
  421. }
  422. {
  423.     bool fail;
  424.     Data a = test2.getLine(&fail);
  425.     test_verify(fail == false);
  426.     test_verify(a == "test");
  427. }
  428.     }
  429.     // test removeLWS
  430.     {
  431. Data test = "From: testrn   continuationrn test2rn";
  432. test.removeLWS();
  433. // cout << test;
  434. test_verify(test == "From: testrn   continuation test2n");
  435.     }
  436. }
  437. int main()
  438. {
  439.     test();
  440.     return test_return_code(117);
  441. }