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

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 "./dllaccess_test.h"
  36. #include "hx_ut_debug.h"
  37. #include "ut_param_util.h"
  38. #include "hxresult.h"
  39. typedef HX_RESULT (*IntFunc)(int& intVal);
  40. DLLAccessTest::DLLAccessTest() :
  41.     m_pDllAccess(0)
  42. {}
  43. const char* DLLAccessTest::DefaultCommandLine() const
  44. {
  45.     return "tdllaccess tdllaccess.in";
  46. }
  47.     
  48. void DLLAccessTest::GetCommandInfo(UTVector<HLXUnitTestCmdInfo*>& cmds)
  49. {
  50.     cmds.Resize(13);
  51.     cmds[0] = new HLXUnitTestCmdInfoDisp<DLLAccessTest>(this, 
  52.     "DLLAccess()",
  53.     &DLLAccessTest::HandleConstructor1Cmd,
  54.     1);
  55.     cmds[1] = new HLXUnitTestCmdInfoDisp<DLLAccessTest>(this, 
  56.     "DLLAccess(dllName,nLibType)",
  57.     &DLLAccessTest::HandleConstructor2Cmd,
  58.     3);
  59.     cmds[2] = new HLXUnitTestCmdInfoDisp<DLLAccessTest>(this, 
  60.     "Open",
  61.     &DLLAccessTest::HandleOpenCmd,
  62.     4);
  63.     cmds[3] = new HLXUnitTestCmdInfoDisp<DLLAccessTest>(this, 
  64.     "Close",
  65.     &DLLAccessTest::HandleCloseCmd,
  66.     2);
  67.     cmds[4] = new HLXUnitTestCmdInfoDisp<DLLAccessTest>(this, 
  68.     "GetSymbol",
  69.     &DLLAccessTest::HandleGetSymbolCmd,
  70.     3);
  71.     cmds[5] = new HLXUnitTestCmdInfoDisp<DLLAccessTest>(this, 
  72.     "GetError",
  73.     &DLLAccessTest::HandleGetErrorCmd,
  74.     2);
  75.     cmds[6] = new HLXUnitTestCmdInfoDisp<DLLAccessTest>(this, 
  76.     "GetErrorString",
  77.     &DLLAccessTest::HandleGetErrorStringCmd,
  78.     2);
  79.     cmds[7] = new HLXUnitTestCmdInfoDisp<DLLAccessTest>(this, 
  80.     "GetDLLName",
  81.     &DLLAccessTest::HandleGetDLLNameCmd,
  82.     3);
  83.     cmds[8] = new HLXUnitTestCmdInfoDisp<DLLAccessTest>(this, 
  84.     "GetVersion",
  85.     &DLLAccessTest::HandleGetVersionCmd,
  86.     3);
  87.     cmds[9] = new HLXUnitTestCmdInfoDisp<DLLAccessTest>(this, 
  88.     "CreateName1",
  89.     &DLLAccessTest::HandleCreateName1Cmd,
  90.     4);
  91.     cmds[10] = new HLXUnitTestCmdInfoDisp<DLLAccessTest>(this, 
  92.     "CreateName2",
  93.     &DLLAccessTest::HandleCreateName2Cmd,
  94.     6);
  95.     cmds[11] = new HLXUnitTestCmdInfoDisp<DLLAccessTest>(this, 
  96.     "IsOpen",
  97.     &DLLAccessTest::HandleIsOpenCmd,
  98.     2);
  99.     cmds[12] = new HLXUnitTestCmdInfoDisp<DLLAccessTest>(this, 
  100.     "CallIntFunc",
  101.     &DLLAccessTest::HandleCallIntFuncCmd,
  102.     3);
  103. }
  104. HLXCmdBasedTest* DLLAccessTest::Clone() const
  105. {
  106.     return new DLLAccessTest();
  107. }
  108. bool DLLAccessTest::HandleConstructor1Cmd(const UTVector<UTString>& info)
  109. {
  110.     delete m_pDllAccess;
  111.     m_pDllAccess = new DLLAccess();
  112.     return (m_pDllAccess != 0);
  113. }
  114. bool DLLAccessTest::HandleConstructor2Cmd(const UTVector<UTString>& info)
  115. {
  116.     delete m_pDllAccess;
  117.     m_pDllAccess = 0;
  118.     unsigned int libType = 0;
  119.     if (!UTParamUtil::GetUInt(info[2], libType))
  120.     {
  121. DPRINTF(D_ERROR, ("DLLAccessTest::HandleConstructor2Cmd() : Failed to convert parametersn"));
  122.     }
  123.     else
  124.     {
  125. m_pDllAccess = new DLLAccess((const char*)info[1], (UINT16)libType);
  126.     }
  127.     return (m_pDllAccess != 0);
  128. }
  129. bool DLLAccessTest::HandleOpenCmd(const UTVector<UTString>& info)
  130. {
  131.     bool ret = false;
  132.     unsigned int libType = 0;
  133.     int expected = -1;
  134.     if (!m_pDllAccess)
  135.     {
  136. DPRINTF(D_ERROR, ("DLLAccessTest::HandleOpenCmd() : No DLLAccess objectn"));
  137.     }
  138.     else if (!UTParamUtil::GetUInt(info[2], libType) ||
  139.      !UTParamUtil::GetInt(info[3], expected))
  140.     {
  141. DPRINTF(D_ERROR, ("DLLAccessTest::HandleOpenCmd() : Failed to convert parametersn"));
  142.     }
  143.     else
  144.     {
  145. int result = m_pDllAccess->open(info[1], (UINT16)libType);
  146. if (result != expected)
  147. {
  148.     DPRINTF(D_ERROR,("DLLAccessTest::HandleOpenCmd() : Got %d, expected %dn",
  149.      result,
  150.      expected));
  151. }
  152. else
  153.     ret = true;
  154.     }
  155.     return ret;
  156. }
  157. bool DLLAccessTest::HandleCloseCmd(const UTVector<UTString>& info)
  158. {
  159.     bool ret = false;
  160.     int expected = -1;
  161.     if (!m_pDllAccess)
  162.     {
  163. DPRINTF(D_ERROR, ("DLLAccessTest::HandleCloseCmd() : No DLLAccess objectn"));
  164.     }
  165.     else if (!UTParamUtil::GetInt(info[1], expected))
  166.     {
  167. DPRINTF(D_ERROR, ("DLLAccessTest::HandleCloseCmd() : Failed to convert parametersn"));
  168.     }
  169.     else
  170.     {
  171. int result = m_pDllAccess->close();
  172. if (result != expected)
  173. {
  174.     DPRINTF(D_ERROR, ("DLLAccessTest::HandleCloseCmd() : Got %d, expected %dn",
  175.       result,
  176.       expected));
  177. }
  178. else
  179.     ret = true;
  180.     }
  181.     return ret;
  182. }
  183. bool DLLAccessTest::HandleGetSymbolCmd(const UTVector<UTString>& info)
  184. {
  185.     bool ret = false;
  186.     
  187.     bool expected = false;
  188.     if (!m_pDllAccess)
  189.     {
  190. DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetSymbolCmd() : No DLLAccess objectn"));
  191.     }
  192.     else if (!UTParamUtil::GetBool(info[2], expected))
  193.     {
  194. DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetSymbolCmd() : Failed to convert parametersn"));
  195.     }
  196.     else
  197.     {
  198. bool result = (m_pDllAccess->getSymbol(info[1]) != 0);
  199. if (result != expected)
  200. {
  201.     DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetSymbolCmd() : Got %d, expected %dn",
  202.       result,
  203.       expected));
  204. }
  205. else
  206.     ret = true;
  207.     }
  208.     return ret;
  209. }
  210. bool DLLAccessTest::HandleGetErrorCmd(const UTVector<UTString>& info)
  211. {
  212.     bool ret = false;
  213.     int expected = -1;
  214.     if (!m_pDllAccess)
  215.     {
  216. DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetErrorCmd() : No DLLAccess objectn"));
  217.     }
  218.     else if (!UTParamUtil::GetInt(info[1], expected))
  219.     {
  220. DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetErrorCmd() : Failed to convert parametersn"));
  221.     }
  222.     else
  223.     {
  224. int result = m_pDllAccess->getError();
  225. if (result != expected)
  226. {
  227.     DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetErrorCmd() : Got %d, expected %dn",
  228.       result,
  229.       expected));
  230. }
  231. else
  232.     ret = true;
  233.     }
  234.     return ret;
  235. }
  236. bool DLLAccessTest::HandleGetErrorStringCmd(const UTVector<UTString>& info)
  237. {
  238.     bool ret = false;
  239.     if (!m_pDllAccess)
  240.     {
  241. DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetErrorCmd() : No DLLAccess objectn"));
  242.     }
  243.     else if (info[1] != m_pDllAccess->getErrorString())
  244.     {
  245. DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetErrorCmd() : Got '%s', expected '%s'n",
  246.   m_pDllAccess->getErrorString(),
  247.   (const char*)info[1]));
  248.     }
  249.     else
  250. ret = true;
  251.     return ret;
  252. }
  253. bool DLLAccessTest::HandleGetDLLNameCmd(const UTVector<UTString>& info)
  254. {
  255.     bool ret = false;
  256.     bool expected = false;
  257.     if (!m_pDllAccess)
  258.     {
  259. DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetDLLNameCmd() : No DLLAccess objectn"));
  260.     }
  261.     else if (!UTParamUtil::GetBool(info[1], expected))
  262.     {
  263. DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetDLLNameCmd() : Failed to convert parametersn"));
  264.     }
  265.     else 
  266.     {
  267. const char* pDllName = m_pDllAccess->getDLLName();
  268. bool result = (pDllName != 0);
  269. if (result != expected)
  270. {
  271.     DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetDLLNameCmd() : Got %d, expected %dn",
  272.       result,
  273.       expected));
  274. }
  275. else if (pDllName && (info[2] != pDllName))
  276. {
  277.     DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetDLLNameCmd() : Got '%s', expected '%s'n",
  278.       pDllName,
  279.       (const char*)info[2]));
  280. }
  281. else
  282.     ret = true;
  283.     }
  284.     return ret;
  285. }
  286. bool DLLAccessTest::HandleGetVersionCmd(const UTVector<UTString>& info)
  287. {
  288.     bool ret = false;
  289.     bool expected = false;
  290.     if (!m_pDllAccess)
  291.     {
  292. DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetDLLNameCmd() : No DLLAccess objectn"));
  293.     }
  294.     else if (!UTParamUtil::GetBool(info[1], expected))
  295.     {
  296. DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetVersionCmd() : Failed to convert parametersn"));
  297.     }
  298.     else 
  299.     {
  300. const char* pVersion = m_pDllAccess->getVersion();
  301. bool result = (pVersion != 0);
  302. if (result != expected)
  303. {
  304.     DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetVersionCmd() : Got %d, expected %dn",
  305.       result,
  306.       expected));
  307. }
  308. else if (pVersion && (info[2] != pVersion))
  309. {
  310.     DPRINTF(D_ERROR, ("DLLAccessTest::HandleGetVersionCmd() : Got '%s', expected '%s'n",
  311.       pVersion,
  312.       (const char*)info[1]));
  313. }
  314. else
  315.     ret = true;
  316.     }
  317.     return ret;
  318. }
  319. bool DLLAccessTest::HandleCreateName1Cmd(const UTVector<UTString>& info)
  320. {
  321.     bool ret = false;
  322.     if (!m_pDllAccess)
  323.     {
  324. DPRINTF(D_ERROR, ("DLLAccessTest::HandleCreateName1Cmd() : No DLLAccess objectn"));
  325.     }
  326.     else
  327.     {
  328. char buf[100]; /* Flawfinder: ignore */
  329. UINT32 bufLen = sizeof(buf);
  330. m_pDllAccess->CreateName((const char*)info[1], (const char*)info[2],
  331.  buf, bufLen);
  332. if (info[3] != buf)
  333. {
  334.     DPRINTF(D_ERROR, ("DLLAccessTest::HandleCreateName1Cmd() : Got '%s', expected '%s'n",
  335.       buf,
  336.       (const char*)info[3]));
  337. }
  338. else
  339.     ret = true;
  340.     }
  341.     return ret;
  342. }
  343. bool DLLAccessTest::HandleCreateName2Cmd(const UTVector<UTString>& info)
  344. {
  345.     bool ret = false;
  346.     unsigned int major = 0;
  347.     unsigned int minor = 0;
  348.     if (!m_pDllAccess)
  349.     {
  350. DPRINTF(D_ERROR, ("DLLAccessTest::HandleCreateName2Cmd() : No DLLAccess objectn"));
  351.     }
  352.     else if (!UTParamUtil::GetUInt(info[3], major) ||
  353.      !UTParamUtil::GetUInt(info[4], minor))
  354.     {
  355. DPRINTF(D_ERROR, ("DLLAccessTest::HandleCreateName2Cmd() : Failed to convert parametersn"));
  356.     }
  357.     else
  358.     {
  359. char buf[100]; /* Flawfinder: ignore */
  360. UINT32 bufLen = sizeof(buf);
  361. m_pDllAccess->CreateName((const char*)info[1], (const char*)info[2],
  362.  buf, bufLen,
  363.  major, minor);
  364. if (info[5] != buf)
  365. {
  366.     DPRINTF(D_ERROR, ("DLLAccessTest::HandleCreateName2Cmd() : Got '%s', expected '%s'n",
  367.       buf,
  368.       (const char*)info[5]));
  369. }
  370. else
  371.     ret = true;
  372.     }
  373.     return ret;
  374. }
  375. bool DLLAccessTest::HandleIsOpenCmd(const UTVector<UTString>& info)
  376. {
  377.     bool ret = false;
  378.     bool expected = false;
  379.     if (!m_pDllAccess)
  380.     {
  381. DPRINTF(D_ERROR, ("DLLAccessTest::HandleIsOpenCmd() : No DLLAccess objectn"));
  382.     }
  383.     else if (!UTParamUtil::GetBool(info[1], expected))
  384.     {
  385. DPRINTF(D_ERROR, ("DLLAccessTest::HandleIsOpenCmd() : Failed to convert parametersn"));
  386.     }
  387.     else if (expected != (m_pDllAccess->isOpen() == TRUE))
  388.     {
  389. DPRINTF(D_ERROR, ("DLLAccessTest::HandleIsOpenCmd() : Got %d expected %dn",
  390.   m_pDllAccess->isOpen(),
  391.   expected));
  392.     }
  393.     else
  394. ret = true;
  395.     return ret;
  396. }
  397. bool DLLAccessTest::HandleCallIntFuncCmd(const UTVector<UTString>& info)
  398. {
  399.     bool ret = false;
  400.     int expected = -1;
  401.     if (!m_pDllAccess)
  402.     {
  403. DPRINTF(D_ERROR, ("DLLAccessTest::HandleIsOpenCmd() : No DLLAccess objectn"));
  404.     }
  405.     else if (!UTParamUtil::GetInt(info[2], expected))
  406.     {
  407. DPRINTF(D_ERROR, ("DLLAccessTest::HandleIsOpenCmd() : Failed to convert parametersn"));
  408.     }
  409.     else
  410.     {
  411. IntFunc pIntFunc = (IntFunc)m_pDllAccess->getSymbol(info[1]);
  412. if (!pIntFunc)
  413. {
  414.     DPRINTF(D_ERROR, ("DLLAccessTest::HandleIsOpenCmd() : Failed to get symbol '%s'n",
  415.       (const char*)info[1]));
  416. }
  417. else
  418. {
  419.     int result = -1;
  420.     pIntFunc(result);
  421.     
  422.     if (result != expected)
  423.     {
  424. DPRINTF(D_ERROR, ("DLLAccessTest::HandleIsOpenCmd() : Got %d, expected %dn",
  425.   result,
  426.   expected));
  427.     }
  428.     else
  429. ret = true;
  430. }
  431.     }
  432.     return ret;
  433. }