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

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