slist_test.cpp
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:23k
源码类别:

Symbian

开发平台:

Visual C++

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