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

Symbian

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Source last modified: $Id: map_test.cpp,v 1.3.46.3 2004/07/09 01:45:54 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 "./map_test.h"
  50. #include "hx_ut_debug.h"
  51. #include "ut_param_util.h"
  52. #include "./gen_map_test.h"
  53. #include "./param_util.h"
  54. #include "hxmap.h"
  55. #include "hxguidmap.h"
  56. HLXMapTest::HLXMapTest()
  57. {
  58.     m_array.Add(new GenMapTest<CHXMapPtrToPtr, void*, void*>());
  59.     m_array.Add(new GenMapTest<CHXMapStringToOb, CHXString, void*>());
  60.     m_array.Add(new GenMapTest<CHXMapStringToString, CHXString, CHXString>());
  61.     m_array.Add(new GenMapTest<CHXMapLongToObj, LONG32, void*>());
  62.     m_array.Add(new GenMapTest<CHXMapGUIDToObj, GUID, void*>());
  63. }
  64. HLXMapTest::~HLXMapTest()
  65. {
  66.     for (int i = 0; i < m_array.GetSize(); i++)
  67.     {
  68. delete ((GenMapTestBase*)m_array.GetAt(i));
  69.     }
  70.     m_array.RemoveAll();
  71. }
  72. const char* HLXMapTest::DefaultCommandLine() const
  73. {
  74.     return "tmap tmap.in";
  75. }
  76.     
  77. void HLXMapTest::GetCommandInfo(UTVector<HLXUnitTestCmdInfo*>& cmds)
  78. {
  79.     cmds.Resize(12);
  80.     cmds[0] = new HLXUnitTestCmdInfoDisp<HLXMapTest>(this, 
  81.     "CreateElement",
  82.     &HLXMapTest::HandleCreateElCmd,
  83.     2);
  84.     cmds[1] = new HLXUnitTestCmdInfoDisp<HLXMapTest>(this, 
  85.     "ClearElements",
  86.     &HLXMapTest::HandleClearElCmd,
  87.     1);
  88.     cmds[2] = new HLXUnitTestCmdInfoDisp<HLXMapTest>(this, 
  89.     "GetCount",
  90.     &HLXMapTest::HandleGetCountCmd,
  91.     2);
  92.     cmds[3] = new HLXUnitTestCmdInfoDisp<HLXMapTest>(this, 
  93.     "IsEmpty",
  94.     &HLXMapTest::HandleIsEmptyCmd,
  95.     2);
  96.     cmds[4] = new HLXUnitTestCmdInfoDisp<HLXMapTest>(this, 
  97.     "Lookup",
  98.     &HLXMapTest::HandleLookupCmd,
  99.     3);
  100.     cmds[5] = new HLXUnitTestCmdInfoDisp<HLXMapTest>(this, 
  101.     "SetAt",
  102.     &HLXMapTest::HandleSetAtCmd,
  103.     2);
  104.     cmds[6] = new HLXUnitTestCmdInfoDisp<HLXMapTest>(this, 
  105.      "RemoveKey",
  106.      &HLXMapTest::HandleRemoveKeyCmd,
  107.      3);
  108.     cmds[7] = new HLXUnitTestCmdInfoDisp<HLXMapTest>(this, 
  109.      "RemoveAll",
  110.      &HLXMapTest::HandleRemoveAllCmd,
  111.      1);
  112.     cmds[8] = new HLXUnitTestCmdInfoDisp<HLXMapTest>(this, 
  113.      "Rhs[]",
  114.      &HLXMapTest::HandleRhsArrayOpCmd,
  115.      3);
  116.     cmds[9] = new HLXUnitTestCmdInfoDisp<HLXMapTest>(this, 
  117.      "Lhs[]",
  118.      &HLXMapTest::HandleLhsArrayOpCmd,
  119.      2);
  120.     cmds[10] = new HLXUnitTestCmdInfoDisp<HLXMapTest>(this, 
  121.      "IsNull",
  122.      &HLXMapTest::HandleIsNullCmd,
  123.      3);
  124.     cmds[11] = new HLXUnitTestCmdInfoDisp<HLXMapTest>(this, 
  125.      "RunMapSpecificTests",
  126.      &HLXMapTest::HandleRunMapSpecificTestsCmd,
  127.      1);
  128. }
  129. HLXCmdBasedTest* HLXMapTest::Clone() const
  130. {
  131.     return new HLXMapTest();
  132. }
  133. bool HLXMapTest::HandleCreateElCmd(const UTVector<UTString>& info)
  134. {
  135.     bool ret = false;
  136.     int index = 0;
  137.     if (!UTParamUtil::GetInt(info[1], index))
  138.     {
  139. DPRINTF(D_ERROR, ("HLXMapTest::HandleCreateElCmd : failed to convert parametern"));
  140.     }
  141.     else
  142. ret = CreateElement(index);
  143.     return ret;
  144. }
  145. bool HLXMapTest::CreateElement(int index)
  146. {
  147.     bool ret = true;
  148.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  149.     {
  150. GenMapTestBase* pObj = (GenMapTestBase*)m_array[i];
  151. if (pObj)
  152.     ret = pObj->CreateElement(index);
  153.     }
  154.     return ret;
  155. }
  156. bool HLXMapTest::HandleClearElCmd(const UTVector<UTString>& /*info*/)
  157. {
  158.     return ClearElements();
  159. }
  160. bool HLXMapTest::ClearElements()
  161. {
  162.     bool ret = true;
  163.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  164.     {
  165. GenMapTestBase* pObj = (GenMapTestBase*)m_array[i];
  166. if (pObj)
  167.     ret = pObj->ClearElements();
  168.     }
  169.     return ret;
  170. }
  171. bool HLXMapTest::HandleGetCountCmd(const UTVector<UTString>& info)
  172. {
  173.     bool ret = false;
  174.     int expected = 0;
  175.     if (!UTParamUtil::GetInt(info[1], expected))
  176.     {
  177. DPRINTF(D_ERROR, ("HLXMapTest::HandleGetCountCmd : failed to convert parametern"));
  178.     }
  179.     else
  180. ret = GetCount(expected);
  181.     return ret;
  182. }
  183. bool HLXMapTest::GetCount(int expected)
  184. {
  185.     bool ret = true;
  186.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  187.     {
  188. GenMapTestBase* pObj = (GenMapTestBase*)m_array[i];
  189. if (pObj)
  190.     ret = pObj->GetCount(expected);
  191.     }
  192.     return ret;
  193. }
  194. bool HLXMapTest::HandleIsEmptyCmd(const UTVector<UTString>& info)
  195. {
  196.     bool ret = false;
  197.     bool expected = false;
  198.     if (!UTParamUtil::GetBool(info[1],expected))
  199.     {
  200. DPRINTF(D_ERROR, ("HLXMapTest::HandleIsEmptyCmd : failed to convert parametern"));
  201.     }
  202.     else
  203. ret = IsEmpty(expected);
  204.     return ret;
  205. }
  206. bool HLXMapTest::IsEmpty(bool expected)
  207. {
  208.     bool ret = true;
  209.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  210.     {
  211. GenMapTestBase* pObj = (GenMapTestBase*)m_array[i];
  212. if (pObj)
  213.     ret = pObj->IsEmpty(expected);
  214.     }
  215.     return ret;
  216. }
  217. bool HLXMapTest::HandleLookupCmd(const UTVector<UTString>& info)
  218. {
  219.     bool ret = false;
  220.     int index = 0;
  221.     bool expected = false;
  222.     if (!UTParamUtil::GetInt(info[1], index) ||
  223. !UTParamUtil::GetBool(info[2],expected))
  224.     {
  225. DPRINTF(D_ERROR, ("HLXMapTest::HandleLookupCmd : failed to convert parametern"));
  226.     }
  227.     else
  228. ret = Lookup(index, expected);
  229.     return ret;
  230. }
  231. bool HLXMapTest::Lookup(int index, bool expected)
  232. {
  233.     bool ret = true;
  234.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  235.     {
  236. GenMapTestBase* pObj = (GenMapTestBase*)m_array[i];
  237. if (pObj)
  238.     ret = pObj->Lookup(index, expected);
  239.     }
  240.     return ret;
  241. }
  242. bool HLXMapTest::HandleSetAtCmd(const UTVector<UTString>& info)
  243. {
  244.     bool ret = false;
  245.     int index = 0;
  246.     if (!UTParamUtil::GetInt(info[1], index))
  247.     {
  248. DPRINTF(D_ERROR, ("HLXMapTest::HandleSetCmd : failed to convert parametern"));
  249.     }
  250.     else
  251. ret = SetAt(index);
  252.     return ret;
  253. }
  254. bool HLXMapTest::SetAt(int index)
  255. {
  256.     bool ret = true;
  257.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  258.     {
  259. GenMapTestBase* pObj = (GenMapTestBase*)m_array[i];
  260. if (pObj)
  261.     ret = pObj->SetAt(index);
  262.     }
  263.     
  264.     return ret;
  265. }
  266. bool HLXMapTest::HandleRemoveKeyCmd(const UTVector<UTString>& info)
  267. {
  268.     bool ret = false;
  269.     int index = 0;
  270.     bool expected = false;
  271.     if (!UTParamUtil::GetInt(info[1], index) ||
  272. !UTParamUtil::GetBool(info[2],expected))
  273.     {
  274. DPRINTF(D_ERROR, ("HLXMapTest::HandleRemoveKeyCmd : failed to convert parametern"));
  275.     }
  276.     else
  277. ret = RemoveKey(index, expected);
  278.     return ret;
  279. }
  280. bool HLXMapTest::RemoveKey(int index, bool expected)
  281. {
  282.     bool ret = true;
  283.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  284.     {
  285. GenMapTestBase* pObj = (GenMapTestBase*)m_array[i];
  286. if (pObj)
  287.     ret = pObj->RemoveKey(index, expected);
  288.     }
  289.     return ret;
  290. }
  291. bool HLXMapTest::HandleRemoveAllCmd(const UTVector<UTString>& /*info*/)
  292. {
  293.     bool ret = true;
  294.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  295.     {
  296. GenMapTestBase* pObj = (GenMapTestBase*)m_array[i];
  297. if (pObj)
  298.     ret = pObj->RemoveAll();
  299.     }
  300.     return ret;
  301. }
  302. bool HLXMapTest::HandleRhsArrayOpCmd(const UTVector<UTString>& info)
  303. {
  304.     bool ret = false;
  305.     int index = 0;
  306.     bool expected = false;
  307.     if (!UTParamUtil::GetInt(info[1], index) ||
  308. !UTParamUtil::GetBool(info[2], expected))
  309.     {
  310. DPRINTF(D_ERROR, ("HLXMapTest::HandleRhsArrayOpCmd : failed to convert parametern"));
  311.     }
  312.     else
  313.     {
  314. ret = RhsArrayOp(index, expected);
  315.     }
  316.     return ret;
  317. }
  318. bool HLXMapTest::RhsArrayOp(int index, bool expected)
  319. {
  320.     bool ret = true;
  321.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  322.     {
  323. GenMapTestBase* pObj = (GenMapTestBase*)m_array[i];
  324. if (pObj)
  325. {
  326.     ret = pObj->RhsArrayOp(index, expected);
  327. }
  328.     }
  329.     return ret;
  330. }
  331. bool HLXMapTest::HandleLhsArrayOpCmd(const UTVector<UTString>& info)
  332. {
  333.     bool ret = false;
  334.     int index = 0;
  335.     if (!UTParamUtil::GetInt(info[1], index))
  336.     {
  337. DPRINTF(D_ERROR, ("HLXMapTest::HandleLhsArrayOpCmd : failed to convert parametern"));
  338.     }
  339.     else
  340. ret = LhsArrayOp(index);
  341.     return ret;
  342. }
  343. bool HLXMapTest::LhsArrayOp(int index)
  344. {
  345.     bool ret = true;
  346.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  347.     {
  348. GenMapTestBase* pObj = (GenMapTestBase*)m_array[i];
  349. if (pObj)
  350.     ret = pObj->LhsArrayOp(index);
  351.     }
  352.     return ret;
  353. }
  354. bool HLXMapTest::HandleIsNullCmd(const UTVector<UTString>& info)
  355. {
  356.     bool ret = false;
  357.     int index = 0;
  358.     bool expected = false;
  359.     if (!UTParamUtil::GetInt(info[1], index) ||
  360. !UTParamUtil::GetBool(info[2], expected))
  361.     {
  362. DPRINTF(D_ERROR, ("HLXMapTest::HandleIsNullCmd : failed to convert parametern"));
  363.     }
  364.     else
  365.     {
  366. ret = IsNull(index, expected);
  367.     }
  368.     return ret;
  369. }
  370. bool HLXMapTest::IsNull(int index, bool expected)
  371. {
  372.     bool ret = true;
  373.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  374.     {
  375. GenMapTestBase* pObj = (GenMapTestBase*)m_array[i];
  376. if (pObj)
  377. {
  378.     ret = pObj->IsNull(index, expected);
  379. }
  380.     }
  381.     return ret;
  382. }
  383. bool HLXMapTest::HandleRunMapSpecificTestsCmd(const UTVector<UTString>& /*info*/)
  384. {
  385.     bool ret = true;
  386.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  387.     {
  388. GenMapTestBase* pObj = (GenMapTestBase*)m_array[i];
  389. if (pObj)
  390.     ret = pObj->RunMapSpecificTests();
  391.     }
  392.     return ret;
  393. }