strlist_test.cpp
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:21k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. #include "./strlist_test.h"
  36. #include "hx_ut_debug.h"
  37. #include "ut_param_util.h"
  38. #include "./param_util.h"
  39. HLXStrListTest::HLXStrListTest() :
  40.     m_pos(0)
  41. {}
  42. HLXStrListTest::~HLXStrListTest()
  43. {}
  44. const char* HLXStrListTest::DefaultCommandLine() const
  45. {
  46.     return "tstrlist tstrlist.in";
  47. }
  48.     
  49. void HLXStrListTest::GetCommandInfo(UTVector<HLXUnitTestCmdInfo*>& cmds)
  50. {
  51.     cmds.Resize(36);
  52.     cmds[0] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  53.     "GetCount",
  54.     &HLXStrListTest::HandleGetCountCmd,
  55.     2);
  56.     cmds[1] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  57.     "IsEmpty",
  58.     &HLXStrListTest::HandleIsEmptyCmd,
  59.     2);
  60.     cmds[2] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  61.     "GetHead",
  62.     &HLXStrListTest::HandleGetHeadCmd,
  63.     2);
  64.     cmds[3] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  65.     "ReplaceHead",
  66.     &HLXStrListTest::HandleReplaceHeadCmd,
  67.     2);
  68.     cmds[4] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  69.     "GetTail",
  70.     &HLXStrListTest::HandleGetTailCmd,
  71.     2);
  72.     cmds[5] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  73.     "ReplaceTail",
  74.     &HLXStrListTest::HandleReplaceTailCmd,
  75.     2);
  76.     cmds[6] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  77.     "RemoveHead",
  78.     &HLXStrListTest::HandleRemoveHeadCmd,
  79.     1);
  80.     cmds[7] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  81.     "RemoveTail",
  82.     &HLXStrListTest::HandleRemoveTailCmd,
  83.     1);
  84.     cmds[8] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  85.     "RemoveAll",
  86.     &HLXStrListTest::HandleRemoveAllCmd,
  87.     1);
  88.     cmds[9] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  89.     "GetHeadPosition",
  90.     &HLXStrListTest::HandleGetHeadPosCmd,
  91.     1);
  92.     cmds[10] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  93.     "GetTailPosition",
  94.     &HLXStrListTest::HandleGetTailPosCmd,
  95.     1);
  96.     cmds[11] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  97.     "GetNext",
  98.     &HLXStrListTest::HandleGetNextCmd,
  99.     2);
  100.     cmds[12] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  101.     "GetPrev",
  102.     &HLXStrListTest::HandleGetPrevCmd,
  103.     2);
  104.     cmds[13] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  105.     "ReplacePrev",
  106.     &HLXStrListTest::HandleReplacePrevCmd,
  107.     2);
  108.     cmds[14] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  109.     "GetAtNext",
  110.     &HLXStrListTest::HandleGetAtNextCmd,
  111.     3);
  112.     cmds[15] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  113.     "GetAtPrev",
  114.     &HLXStrListTest::HandleGetAtPrevCmd,
  115.     3);
  116.     cmds[16] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  117.     "ReplaceAtPrev",
  118.     &HLXStrListTest::HandleReplaceAtPrevCmd,
  119.     2);
  120.     cmds[17] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  121.     "GetAt",
  122.     &HLXStrListTest::HandleGetAtCmd,
  123.     2);
  124.     cmds[18] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  125.     "ReplaceAt",
  126.     &HLXStrListTest::HandleReplaceAtCmd,
  127.     2);
  128.     cmds[19] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  129.     "SetAt",
  130.     &HLXStrListTest::HandleSetAtCmd,
  131.     2);
  132.     cmds[20] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  133.     "RemoveAt",
  134.     &HLXStrListTest::HandleRemoveAtCmd,
  135.     1);
  136.     cmds[21] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  137.     "InsertBefore",
  138.     &HLXStrListTest::HandleInsertBeforeCmd,
  139.     2);
  140.     cmds[22] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  141.     "InsertAfter",
  142.     &HLXStrListTest::HandleInsertAfterCmd,
  143.     2);
  144.     cmds[23] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  145.     "Find",
  146.     &HLXStrListTest::HandleFindCmd,
  147.     3);
  148.     cmds[24] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  149.     "FindIndex",
  150.     &HLXStrListTest::HandleFindIndexCmd,
  151.     2);
  152.     cmds[25] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  153.     "IsPosValid",
  154.     &HLXStrListTest::HandleIsPosValidCmd,
  155.     2);
  156.     cmds[26] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  157.     "ClearPos",
  158.     &HLXStrListTest::HandleClearPosCmd,
  159.     1);
  160.     cmds[27] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  161.     "TestIterator",
  162.     &HLXStrListTest::HandleTestIteratorCmd,
  163.     1);
  164.     cmds[28] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  165.     "AddHeadString",
  166.     &HLXStrListTest::HandleAddHeadStringCmd,
  167.     2);
  168.     cmds[29] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  169.     "AddTailString",
  170.     &HLXStrListTest::HandleAddTailStringCmd,
  171.     2);
  172.     cmds[30] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  173.     "AddStringAlphabetic",
  174.     &HLXStrListTest::HandleAddStringAlphabeticCmd,
  175.     2);
  176.     cmds[31] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  177.     "FindString",
  178.     &HLXStrListTest::HandleFindStringCmd,
  179.     4);
  180.     cmds[32] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  181.     "FindPrefixSubstring",
  182.     &HLXStrListTest::HandleFindPrefixSubstringCmd,
  183.     4);
  184.     cmds[33] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  185.     "RemoveHeadString",
  186.     &HLXStrListTest::HandleRemoveHeadStringCmd,
  187.     1);
  188.     cmds[34] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  189.     "RemoveTailString",
  190.     &HLXStrListTest::HandleRemoveTailStringCmd,
  191.     1);
  192.     cmds[35] = new HLXUnitTestCmdInfoDisp<HLXStrListTest>(this, 
  193.     "Dump",
  194.     &HLXStrListTest::HandleDumpCmd,
  195.     1, 2);
  196. }
  197. HLXCmdBasedTest* HLXStrListTest::Clone() const
  198. {
  199.     return new HLXStrListTest();
  200. }
  201. CHXString* HLXStrListTest::CreateValue(const char* pStr)
  202. {
  203.     return new CHXString(pStr);
  204. }
  205. void HLXStrListTest::DestroyValue(void* pStr)
  206. {
  207.     delete (CHXString*)pStr;
  208. }
  209. bool HLXStrListTest::GetValue(void* pStr, CHXString& val)
  210. {
  211.     bool ret = false;
  212.     if (pStr)
  213.     {
  214. val = *((CHXString*)pStr);
  215. ret = true;
  216.     }
  217.     return ret;
  218. }
  219. bool HLXStrListTest::FindValue(const CHXString& value, 
  220.       LISTPOSITION pos, void*& pValue)
  221. {
  222.     bool ret = false;
  223.     pValue = 0;
  224.     for(; pos && !pValue; m_list.GetNext(pos))
  225.     {
  226. CHXString cur;
  227. if ((GetValue(m_list.GetAt(pos), cur)) &&
  228.     (cur == value))
  229.     pValue = m_list.GetAt(pos);
  230.     }
  231.     if (pValue == 0)
  232.     {
  233. pValue = CreateValue(value);
  234. ret = true;
  235.     }
  236.     return ret;
  237. }
  238. bool HLXStrListTest::HandleGetCountCmd(const UTVector<UTString>& info)
  239. {
  240.     bool ret = false;
  241.     int expected = 0;
  242.     if (!UTParamUtil::GetInt(info[1], expected))
  243.     {
  244. DPRINTF(D_ERROR, ("npSList::HandleGetCountCmd : failed to convert parametern"));
  245.     }
  246.     else if (m_list.GetCount() != expected)
  247.     {
  248. DPRINTF(D_ERROR, ("npSList::HandleGetCountCmd : got %d expected %dn",
  249.   m_list.GetCount(),
  250.   expected));
  251.     }
  252.     else
  253. ret = true;
  254.     return ret;
  255. }
  256. bool HLXStrListTest::HandleIsEmptyCmd(const UTVector<UTString>& info)
  257. {
  258.     bool ret = false;
  259.     bool expected = false;
  260.     if (!UTParamUtil::GetBool(info[1], expected))
  261.     {
  262. DPRINTF(D_ERROR, ("npSList::HandleIsEmptyCmd : failed to convert parametern"));
  263.     }
  264.     else if ((m_list.IsEmpty() == TRUE) != expected)
  265.     {
  266. DPRINTF(D_ERROR, ("npSList::HandleIsEmptyCmd : got %d expected %dn",
  267.   m_list.IsEmpty(),
  268.   expected));
  269.     }
  270.     else
  271. ret = true;
  272.     
  273.     return ret;
  274. }
  275. bool HLXStrListTest::HandleGetHeadCmd(const UTVector<UTString>& info)
  276. {
  277.     bool ret = false;
  278.     
  279.     CHXString expected(info[1]);
  280.     CHXString result;
  281.     if (!GetValue(m_list.GetHead(), result))
  282.     {
  283. DPRINTF(D_ERROR, ("npSList::HandleGetHeadCmd : failed to get valuen"));
  284.     }
  285.     else if (result != expected)
  286.     {
  287. DPRINTF(D_ERROR, ("npSList::HandleGetHeadCmd : got '%s' expected '%s'n",
  288.   (const char*)result,
  289.   (const char*)expected));
  290.     }
  291.     else
  292. ret = true;
  293.     return ret;
  294. }
  295. bool HLXStrListTest::HandleReplaceHeadCmd(const UTVector<UTString>& info)
  296. {
  297.     CHXString value(info[1]);
  298.     DestroyValue(m_list.GetHead());
  299.     m_list.GetHead() = CreateValue(value);
  300.     
  301.     return true;
  302. }
  303. bool HLXStrListTest::HandleGetTailCmd(const UTVector<UTString>& info)
  304. {
  305.     bool ret = false;
  306.     
  307.     CHXString expected(info[1]);
  308.     CHXString result;
  309.     if (!GetValue(m_list.GetTail(), result))
  310.     {
  311. DPRINTF(D_ERROR, ("npSList::HandleGetTailCmd : failed to get valuen"));
  312.     }
  313.     else if (result != expected)
  314.     {
  315. DPRINTF(D_ERROR, ("npSList::HandleGetTailCmd : got '%s' expected '%s'n",
  316.   (const char*)result,
  317.   (const char*)expected));
  318.     }
  319.     else
  320. ret = true;
  321.     return ret;
  322. }
  323. bool HLXStrListTest::HandleReplaceTailCmd(const UTVector<UTString>& info)
  324. {
  325.     CHXString value(info[1]);
  326.     DestroyValue(m_list.GetHead());
  327.     m_list.GetTail() = CreateValue(value);
  328.     return true;
  329. }
  330. bool HLXStrListTest::HandleRemoveHeadCmd(const UTVector<UTString>& /*info*/)
  331. {
  332.     DestroyValue(m_list.RemoveHead());
  333.     return true;
  334. }
  335. bool HLXStrListTest::HandleRemoveTailCmd(const UTVector<UTString>& /*info*/)
  336. {
  337.     DestroyValue(m_list.RemoveTail());
  338.     return true;
  339. }
  340. bool HLXStrListTest::HandleRemoveAllCmd(const UTVector<UTString>& /*info*/)
  341. {
  342.     m_list.RemoveAll();
  343.     return true;
  344. }
  345. bool HLXStrListTest::HandleGetHeadPosCmd(const UTVector<UTString>& /*info*/)
  346. {
  347.     m_pos = m_list.GetHeadPosition();
  348.     return true;
  349. }
  350. bool HLXStrListTest::HandleGetTailPosCmd(const UTVector<UTString>& /*info*/)
  351. {
  352.     m_pos = m_list.GetTailPosition();
  353.     return true;
  354. }
  355. bool HLXStrListTest::HandleGetNextCmd(const UTVector<UTString>& info)
  356. {
  357.     bool ret = false;
  358.     CHXString expected(info[1]);
  359.     CHXString result;
  360.     if (!GetValue(m_list.GetNext(m_pos), result))
  361.     {
  362. DPRINTF(D_ERROR, ("npSList::HandleGetNextCmd : failed to get valuen"));
  363.     }
  364.     else if (result != expected)
  365.     {
  366. DPRINTF(D_ERROR, ("npSList::HandleGetNextCmd : got '%s' expected '%s'n",
  367.   (const char*)result,
  368.   (const char*)expected));
  369.     }
  370.     else
  371. ret = true;
  372.     return ret;
  373. }
  374. bool HLXStrListTest::HandleGetPrevCmd(const UTVector<UTString>& info)
  375. {
  376.     bool ret = false;
  377.     CHXString expected(info[1]);
  378.     CHXString result;
  379.     if (!GetValue(m_list.GetPrev(m_pos), result))
  380.     {
  381. DPRINTF(D_ERROR, ("npSList::HandleGetPrevCmd : failed to get valuen"));
  382.     }
  383.     else if (result != expected)
  384.     {
  385. DPRINTF(D_ERROR, ("npSList::HandleGetPrevCmd : got '%s' expected '%s'n",
  386.   (const char*)result,
  387.   (const char*)expected));
  388.     }
  389.     else
  390. ret = true;
  391.     return ret;
  392. }
  393. bool HLXStrListTest::HandleReplacePrevCmd(const UTVector<UTString>& info)
  394. {
  395.     CHXString value(info[1]);
  396.     LISTPOSITION tmpPos = m_pos;
  397.     DestroyValue(m_list.GetPrev(tmpPos));
  398.     m_list.GetPrev(m_pos) = CreateValue(value);
  399.     return true;
  400. }
  401. bool HLXStrListTest::HandleGetAtNextCmd(const UTVector<UTString>& info)
  402. {
  403.     bool ret = false;
  404.     bool expectValid = false;
  405.     CHXString expected(info[2]);
  406.     if (!UTParamUtil::GetBool(info[1], expectValid))
  407.     {
  408. DPRINTF(D_ERROR, ("npSList::HandleGetAtNextCmd : failed to convert parametern"));
  409.     }
  410.     else
  411.     {
  412. CHXString result;
  413. bool resultValid = GetValue(m_list.GetAtNext(m_pos), result);
  414. if (expectValid != resultValid)
  415. {
  416.     DPRINTF(D_ERROR, ("npSList::HandleGetAtNextCmd : got valid=%d expected valid=%dn",
  417.       resultValid,
  418.       expectValid));
  419. }
  420. else if (expectValid && (result != expected))
  421. {
  422.     DPRINTF(D_ERROR, ("npSList::HandleGetAtNextCmd : got '%s' expected '%s'n",
  423.       (const char*)result,
  424.       (const char*)expected));
  425. }
  426. else
  427.     ret = true;
  428.     }
  429.     return ret;
  430. }
  431. bool HLXStrListTest::HandleGetAtPrevCmd(const UTVector<UTString>& info)
  432. {
  433.     bool ret = false;
  434.     bool expectValid = false;
  435.     CHXString expected(info[2]);
  436.     if (!UTParamUtil::GetBool(info[1], expectValid))
  437.     {
  438. DPRINTF(D_ERROR, ("npSList::HandleGetAtPrevCmd : failed to convert parametern"));
  439.     }
  440.     else
  441.     {
  442. CHXString result;
  443. bool resultValid = GetValue(m_list.GetAtPrev(m_pos), result);
  444. if (expectValid != resultValid)
  445. {
  446.     DPRINTF(D_ERROR, ("npSList::HandleGetAtPrevCmd : got valid=%d expected valid=%dn",
  447.       resultValid,
  448.       expectValid));
  449. }
  450. else if (expectValid && (result != expected))
  451. {
  452.     DPRINTF(D_ERROR, ("npSList::HandleGetAtPrevCmd : got '%s' expected '%s'n",
  453.       (const char*)result,
  454.       (const char*)expected));
  455. }
  456. else
  457.     ret = true;
  458.     }
  459.     return ret;
  460. }
  461. bool HLXStrListTest::HandleReplaceAtPrevCmd(const UTVector<UTString>& info)
  462. {
  463.     CHXString value(info[1]);
  464.     
  465.     LISTPOSITION tmpPos = m_pos;
  466.     DestroyValue(m_list.GetAtPrev(tmpPos));
  467.     m_list.GetAtPrev(m_pos) = CreateValue(value);
  468.     return true;
  469. }
  470. bool HLXStrListTest::HandleGetAtCmd(const UTVector<UTString>& info)
  471. {
  472.     bool ret = false;
  473.     CHXString expected(info[1]);
  474.     CHXString result;
  475.     if (!GetValue(m_list.GetAt(m_pos), result))
  476.     {
  477. DPRINTF(D_ERROR, ("npSList::HandleGetAtCmd : invalid valuen"));
  478.     }
  479.     else if (result != expected)
  480.     {
  481. DPRINTF(D_ERROR, ("npSList::HandleGetAtCmd : got '%s' expected '%s'n",
  482.   (const char*)result,
  483.   (const char*)expected));
  484.     }
  485.     else
  486. ret = true;
  487.     return ret;
  488. }
  489. bool HLXStrListTest::HandleReplaceAtCmd(const UTVector<UTString>& info)
  490. {
  491.     CHXString value(info[1]);
  492.     
  493.     DestroyValue(m_list.GetAt(m_pos));
  494.     m_list.GetAt(m_pos) = CreateValue(value);
  495.     return true;
  496. }
  497. bool HLXStrListTest::HandleSetAtCmd(const UTVector<UTString>& info)
  498. {
  499.     CHXString value(info[1]);
  500.     DestroyValue(m_list.GetAt(m_pos));
  501.     m_list.SetAt(m_pos, CreateValue(value));
  502.     return true;
  503. }
  504. bool HLXStrListTest::HandleRemoveAtCmd(const UTVector<UTString>& /*info*/)
  505. {
  506.     m_pos = m_list.RemoveAt(m_pos);
  507.     return true;
  508. }
  509. bool HLXStrListTest::HandleInsertBeforeCmd(const UTVector<UTString>& info)
  510. {
  511.     CHXString value(info[1]);
  512.     
  513.     m_pos = m_list.InsertBefore(m_pos, CreateValue(value));
  514.     return true;
  515. }
  516. bool HLXStrListTest::HandleInsertAfterCmd(const UTVector<UTString>& info)
  517. {
  518.     CHXString value(info[1]);
  519.     
  520.     m_pos = m_list.InsertAfter(m_pos, CreateValue(value));
  521.     return true;
  522. }
  523. bool HLXStrListTest::HandleFindCmd(const UTVector<UTString>& info)
  524. {
  525.     bool ret = false;
  526.     CHXString value(info[1]);
  527.     bool useCurrentPos = false;
  528.     if (!UTParamUtil::GetBool(info[2], useCurrentPos))
  529.     {
  530. DPRINTF(D_ERROR, ("npSList::HandleFindCmd : failed to convert parametern"));
  531.     }
  532.     else
  533.     {
  534. LISTPOSITION pos = (useCurrentPos) ? m_pos : m_list.GetHeadPosition();
  535. void* pValue = 0;
  536. bool destroyValue = FindValue(value, pos, pValue);
  537. if (useCurrentPos)
  538.     m_pos = m_list.Find(pValue, pos);
  539. else
  540.     m_pos =  m_list.Find(pValue);
  541. if (destroyValue)
  542.     DestroyValue(pValue);
  543. ret = true;
  544.     }
  545.     return ret;
  546. }
  547. bool HLXStrListTest::HandleFindIndexCmd(const UTVector<UTString>& info)
  548. {
  549.     bool ret = false;
  550.     int index = 0;
  551.     if (!UTParamUtil::GetInt(info[1], index))
  552.     {
  553. DPRINTF(D_ERROR, ("npSList::HandleFindCmd : failed to convert parametern"));
  554.     }
  555.     else
  556.     {
  557. m_pos = m_list.FindIndex(index);
  558. ret = true;
  559.     }
  560.     return ret;
  561. }
  562. bool HLXStrListTest::HandleIsPosValidCmd(const UTVector<UTString>& info)
  563. {
  564.     bool ret = false;
  565.     bool expected = false;
  566.     if (!UTParamUtil::GetBool(info[1], expected))
  567.     {
  568. DPRINTF(D_ERROR, ("npSList::HandleIsPosValidCmd : failed to convert parametern"));
  569.     }
  570.     else 
  571.     {
  572. bool result = (m_pos != 0);
  573. if (result != expected)
  574. {
  575.     DPRINTF(D_ERROR, ("npSList::HandleIsPosValidCmd : got %d expected %dn",
  576.       result,
  577.       expected));
  578. }
  579. else
  580.     ret = true;
  581.     }
  582.     return ret;
  583. }
  584. bool HLXStrListTest::HandleClearPosCmd(const UTVector<UTString>& /*info*/)
  585. {
  586.     m_pos = 0;
  587.     return true;
  588. }
  589. bool HLXStrListTest::HandleTestIteratorCmd(const UTVector<UTString>& /*info*/)
  590. {
  591.     bool ret = true;
  592.     LISTPOSITION pos = m_list.GetHeadPosition();
  593.     CHXSimpleList::Iterator itr = m_list.Begin();
  594.     for(; ret && (itr != m_list.End()) && pos; ++itr)
  595.     {
  596. CHXString expected;
  597. CHXString result;
  598. if (!GetValue(m_list.GetNext(pos), expected))
  599. {
  600.     DPRINTF (D_ERROR,("HLXStrListTest::HandleTestIteratorCmd() : failed to get expected valuen"));
  601.     ret = false;
  602. }
  603. else if (!GetValue(*itr, result))
  604. {
  605.     DPRINTF (D_ERROR,("HLXStrListTest::HandleTestIteratorCmd() : failed to get result valuen"));
  606.     ret = false;
  607. }
  608. else if (expected != result)
  609. {
  610.     DPRINTF (D_ERROR,("HLXStrListTest::HandleTestIteratorCmd() : got '%s' expected '%s'n",
  611.       (const char*)result,
  612.       (const char*)expected));
  613.     ret = false;
  614. }
  615.     }
  616.     if (ret)
  617.     {
  618. // The comparisons are arranged this way so 
  619. // that I can test the == operator
  620. if (itr == m_list.End())
  621. {
  622.     if (pos != 0)
  623.     {
  624. DPRINTF (D_ERROR,("HLXStrListTest::HandleTestIteratorCmd() : Position is not at the endn"));
  625. ret = false;
  626.     }
  627. }
  628. else
  629. {
  630.     DPRINTF (D_ERROR,("HLXStrListTest::HandleTestIteratorCmd() : iterator not at the endn"));
  631.     ret = false;
  632. }
  633.     }
  634.     return ret;
  635. }
  636. bool HLXStrListTest::HandleAddHeadStringCmd(const UTVector<UTString>& info)
  637. {
  638.     m_list.AddHeadString(info[1]);
  639.     return true;
  640. }
  641. bool HLXStrListTest::HandleAddTailStringCmd(const UTVector<UTString>& info)
  642. {
  643.     m_list.AddTailString(info[1]);
  644.     return true;
  645. }
  646. bool HLXStrListTest::HandleAddStringAlphabeticCmd(const UTVector<UTString>& info)
  647. {
  648.     m_list.AddStringAlphabetic(info[1]);
  649.     return true;
  650. }
  651. bool HLXStrListTest::HandleFindStringCmd(const UTVector<UTString>& info)
  652. {
  653.     bool ret = false;
  654.     bool useCurrentPos = false;
  655.     bool isCaseSensitive = false;
  656.     if (!UTParamUtil::GetBool(info[2], useCurrentPos) ||
  657. !UTParamUtil::GetBool(info[3], isCaseSensitive))
  658.     {
  659. DPRINTF(D_ERROR, ("npSList::HandleFindStringCmd : failed to convert parametern"));
  660.     }
  661.     else
  662.     {
  663. LISTPOSITION pos = (useCurrentPos) ? m_pos : 0;
  664. m_pos = m_list.FindString(info[1], pos, isCaseSensitive);
  665. ret = true;
  666.     }
  667.     return ret;
  668. }
  669. bool HLXStrListTest::HandleFindPrefixSubstringCmd(const UTVector<UTString>& info)
  670. {
  671.     bool ret = false;
  672.     
  673.     bool useCurrentPos = false;
  674.     bool isCaseSensitive = false;
  675.     if (!UTParamUtil::GetBool(info[2], useCurrentPos) ||
  676. !UTParamUtil::GetBool(info[3], isCaseSensitive))
  677.     {
  678. DPRINTF(D_ERROR, ("npSList::HandleFindPrefixSubstringCmd : failed to convert parametern"));
  679.     }
  680.     else
  681.     {
  682. LISTPOSITION pos = (useCurrentPos) ? m_pos : 0;
  683. m_pos = m_list.FindPrefixSubstring(info[1], pos, isCaseSensitive);
  684. ret = true;
  685.     }
  686.     return ret;
  687. }
  688. bool HLXStrListTest::HandleRemoveHeadStringCmd(const UTVector<UTString>& /*info*/)
  689. {
  690.     m_list.RemoveHeadString();
  691.     return true;
  692. }
  693. bool HLXStrListTest::HandleRemoveTailStringCmd(const UTVector<UTString>& /*info*/)
  694. {
  695.     m_list.RemoveTailString();
  696.     return true;
  697. }
  698. bool HLXStrListTest::HandleDumpCmd(const UTVector<UTString>& info)
  699. {
  700.     if (info.Nelements() >= 2) m_list.Dump((const char*)info[1]);
  701.     else m_list.Dump();
  702.     return true;
  703. }