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

Symbian

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Source last modified: $Id: ihxfiletest.cpp,v 1.7.42.3 2004/07/09 01:44:48 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 "hx_ut_debug.h"
  50. #include "datffact.h"
  51. #include "hxbuffer.h"
  52. #include "hlxclib/sys/stat.h"
  53. #include "chxdataf.h"
  54. #include "cihx2chxdataf.h"
  55. #include "ut_param_util.h"
  56. #include "filetestutil.h"
  57. #include "ihxfiletest.h"
  58. HLXIHXFileTest::HLXIHXFileTest(const char* pModeString)
  59.     : m_pIHXDataFile(NULL)
  60.     , m_pCHXDataFile(NULL)
  61.     , m_pCHXDirectory(NULL)
  62.     , m_DataFileMode('i')
  63.     , m_bTestDir(false)
  64. {
  65.     if ((!pModeString) || (strncmp(pModeString, "ihx", 3) == 0))
  66.     {
  67. m_DataFileMode = 'i';
  68. // Use "ihx" file object test
  69. HXDataFileFactory* pDataFileFactory = new HXDataFileFactory;
  70. if (pDataFileFactory)
  71. {
  72.     IUnknown* pPersistentObj = NULL;
  73.     
  74.     pDataFileFactory->AddRef();
  75.     
  76.     pDataFileFactory->CreateFile(m_pIHXDataFile,
  77.  NULL,     // context
  78.  pPersistentObj,
  79.  TRUE,     // mem. mapped I/O
  80.  0,     // page size
  81.  FALSE,     // file locking
  82.  FALSE);    // prefer sync. object
  83.     
  84.     pDataFileFactory->Release();
  85.     
  86.     HX_RELEASE(pPersistentObj);
  87. }
  88. m_bTestDir = (strcmp(pModeString, "ihxdir") == 0);
  89.     }
  90.     else if (strncmp(pModeString, "chx", 3) == 0)
  91.     {
  92. m_DataFileMode = 'c';
  93. CIHX2CHXDataFile* pIHX2CHXDataFile = new CIHX2CHXDataFile();
  94. if (pIHX2CHXDataFile)
  95. {
  96.     pIHX2CHXDataFile->AddRef();
  97.     m_pIHXDataFile = pIHX2CHXDataFile;
  98.     m_pCHXDataFile = pIHX2CHXDataFile->GetCHXDataFile();
  99.     pIHX2CHXDataFile = NULL;
  100. }
  101. HX_RELEASE(pIHX2CHXDataFile);
  102. m_bTestDir = (strcmp(pModeString, "chxdir") == 0);
  103.     }
  104.     if (m_bTestDir)
  105.     {
  106. m_pCHXDirectory = new CHXDirectory();
  107.     }
  108. }
  109. HLXIHXFileTest::~HLXIHXFileTest()
  110. {
  111.     HX_RELEASE(m_pIHXDataFile);
  112.     HX_DELETE(m_pCHXDirectory);
  113. }
  114.     
  115. void HLXIHXFileTest::GetCommandInfo(UTVector<HLXUnitTestCmdInfo*>& cmds)
  116. {
  117.     cmds.Resize(28);
  118.     cmds[0] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  119.     "Bind",
  120.     &HLXIHXFileTest::HandleBindCmd,
  121.     2);
  122.     cmds[1] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  123.     "Create",
  124.     &HLXIHXFileTest::HandleCreateCmd,
  125.     3);
  126.     cmds[2] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  127.     "Open",
  128.     &HLXIHXFileTest::HandleOpenCmd,
  129.     3);
  130.     cmds[3] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  131.     "Close",
  132.     &HLXIHXFileTest::HandleCloseCmd,
  133.     2);
  134.     cmds[4] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  135.     "Name",
  136.     &HLXIHXFileTest::HandleNameCmd,
  137.     2,
  138.     3);
  139.     cmds[5] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  140.     "IsOpen",
  141.     &HLXIHXFileTest::HandleIsOpenCmd,
  142.     2);
  143.     cmds[6] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  144.     "Write",
  145.     &HLXIHXFileTest::HandleWriteCmd,
  146.     3);
  147.     cmds[7] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  148.     "Read",
  149.     &HLXIHXFileTest::HandleReadCmd,
  150.     3,
  151.     4);
  152.     cmds[8] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  153.     "Flush",
  154.     &HLXIHXFileTest::HandleFlushCmd,
  155.     2);
  156.     cmds[9] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  157.     "Seek",
  158.     &HLXIHXFileTest::HandleSeekCmd,
  159.     4);
  160.     cmds[10] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  161.     "Tell",
  162.     &HLXIHXFileTest::HandleTellCmd,
  163.     1,
  164.     2);
  165.     cmds[11] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  166.     "Stat",
  167.     &HLXIHXFileTest::HandleStatCmd,
  168.     2,
  169.     3);
  170.     cmds[12] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  171.     "Delete",
  172.     &HLXIHXFileTest::HandleDeleteCmd,
  173.     2,
  174.     3);
  175.     cmds[13] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  176.     "GetFd",
  177.     &HLXIHXFileTest::HandleGetFdCmd,
  178.     2);
  179.     cmds[14] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  180.     "GetLastErrorCode",
  181.     &HLXIHXFileTest::HandleGetLastErrorCodeCmd,
  182.     2);
  183.     cmds[15] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  184.     "GetLastErrorString",
  185.     &HLXIHXFileTest::HandleGetLastErrorStringCmd,
  186.     1);
  187.     cmds[16] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  188.     "Rewind",
  189.     &HLXIHXFileTest::HandleRewindCmd,
  190.     2);
  191.     cmds[17] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  192.     "GetTempName",
  193.     &HLXIHXFileTest::HandleGetTempNameCmd,
  194.     1);
  195.     cmds[18] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  196.     "SetDirPath",
  197.     &HLXIHXFileTest::HandleSetDirPathCmd,
  198.     2);
  199.     cmds[19] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  200.     "GetDirPath",
  201.     &HLXIHXFileTest::HandleGetDirPathCmd,
  202.     2,
  203.     3);
  204.     cmds[20] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  205.     "CreateDir",
  206.     &HLXIHXFileTest::HandleCreateDirCmd,
  207.     2);
  208.     cmds[21] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  209.     "IsDirValid",
  210.     &HLXIHXFileTest::HandleIsDirValidCmd,
  211.     2);
  212.     cmds[22] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  213.     "DestroyDir",
  214.     &HLXIHXFileTest::HandleDestroyDirCmd,
  215.     2,
  216.     3);
  217.     cmds[23] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  218.     "DeleteDirFile",
  219.     &HLXIHXFileTest::HandleDeleteDirFileCmd,
  220.     3);
  221.     cmds[24] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  222.     "MakeCurrentDir",
  223.     &HLXIHXFileTest::HandleMakeCurrentDirCmd,
  224.     2);
  225.     cmds[25] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  226.     "FindFirstInDir",
  227.     &HLXIHXFileTest::HandleFindFirstInDirCmd,
  228.     4,
  229.     5);
  230.     cmds[26] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  231.     "FindNextInDir",
  232.     &HLXIHXFileTest::HandleFindNextInDirCmd,
  233.     3,
  234.     4);
  235.     cmds[27] = new HLXUnitTestCmdInfoDisp<HLXIHXFileTest>(this, 
  236.     "Rename",
  237.     &HLXIHXFileTest::HandleRenameCmd,
  238.     4);    
  239. }
  240. HLXCmdBasedTest* HLXIHXFileTest::Clone() const
  241. {
  242.     char pModeString[10]; /* Flawfinder: ignore */
  243.     if (m_DataFileMode == 'c')
  244.     {
  245. strcpy(pModeString, "chx"); /* Flawfinder: ignore */
  246.     }
  247.     else
  248.     {
  249. strcpy(pModeString, "ihx"); /* Flawfinder: ignore */
  250.     }
  251.     if (m_bTestDir)
  252.     {
  253. strcat(pModeString, "dir"); /* Flawfinder: ignore */
  254.     }
  255.     return new HLXIHXFileTest(pModeString);
  256. }
  257. /*****************************************************************************
  258.  *  DataFile Commands
  259.  */ 
  260. bool HLXIHXFileTest::HandleBindCmd(const UTVector<UTString>& info)
  261. {
  262.     bool bRetVal = false;
  263.     if (m_pIHXDataFile)
  264.     {
  265. m_pIHXDataFile->Bind((const char*) info[1]);
  266. bRetVal = true;
  267.     }
  268.     return bRetVal;
  269. }
  270. bool HLXIHXFileTest::HandleCreateCmd(const UTVector<UTString>& info)
  271. {
  272.     bool bRetVal = false;
  273.     if (m_pIHXDataFile)
  274.     {
  275. HX_RESULT retVal = m_pIHXDataFile->Create(
  276.     CFileTestUtil::ParseModeString(info[1]));
  277. bRetVal = (retVal == HXR_OK);
  278. bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[2]));
  279.     }
  280.     return bRetVal;
  281. }
  282. bool HLXIHXFileTest::HandleOpenCmd(const UTVector<UTString>& info)
  283. {
  284.     bool bRetVal = false;
  285.     if (m_pIHXDataFile)
  286.     {
  287. HX_RESULT retVal = m_pIHXDataFile->Open(
  288.     CFileTestUtil::ParseModeString(info[1]));
  289. bRetVal = (retVal == HXR_OK);
  290. bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[2]));
  291.     }
  292.     return bRetVal;
  293. }
  294. bool HLXIHXFileTest::HandleCloseCmd(const UTVector<UTString>& info)
  295. {
  296.     bool bRetVal = false;
  297.     if (m_pIHXDataFile)
  298.     {
  299. HX_RESULT retVal = m_pIHXDataFile->Close();
  300. bRetVal = (retVal == HXR_OK);
  301. bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[1]));
  302.     }
  303.     return bRetVal;
  304. }
  305. bool HLXIHXFileTest::HandleFlushCmd(const UTVector<UTString>& info)
  306. {
  307.     bool bRetVal = false;
  308.     if (m_pIHXDataFile)
  309.     {
  310. HX_RESULT retVal = m_pIHXDataFile->Flush();
  311. bRetVal = (retVal == HXR_OK);
  312. bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[1]));
  313.     }
  314.     return bRetVal;
  315. }
  316. bool HLXIHXFileTest::HandleNameCmd(const UTVector<UTString>& info)
  317. {
  318.     bool bRetVal = false;
  319.     if (m_pIHXDataFile)
  320.     {
  321. IHXBuffer* pHXBuffer = NULL;
  322. BOOL bResultVal;
  323. bResultVal = m_pIHXDataFile->Name(pHXBuffer);
  324. bRetVal = (bResultVal ? true : false);
  325. bRetVal = (bRetVal == (CFileTestUtil::ParseResultString(info[1]) ? true : false));
  326. if (bRetVal && bResultVal)
  327. {
  328.     bRetVal = false;
  329.     if (pHXBuffer)
  330.     {
  331. if (info.Nelements() > 2)
  332. {
  333.     bRetVal = CFileTestUtil::CheckString(info[2], pHXBuffer);
  334. }
  335. else
  336. {
  337.     bRetVal = true;
  338. }
  339.     }
  340. }
  341. HX_RELEASE(pHXBuffer);
  342.     }
  343.     return bRetVal;
  344. }
  345. bool HLXIHXFileTest::HandleGetTempNameCmd(const UTVector<UTString>& info)
  346. {
  347.     bool bRetVal = false;
  348.     if (m_pIHXDataFile)
  349.     {
  350. if (m_pCHXDataFile)
  351. {
  352.     char* pTempName = new char [_MAX_PATH + 1];
  353.     if (pTempName)
  354.     {
  355. pTempName[0] = '';
  356. bRetVal = (m_pCHXDataFile->
  357.    GetTemporaryFileName("test", pTempName, _MAX_PATH + 1) != 0);
  358. if (bRetVal)
  359. {
  360.     bRetVal = false;
  361.     if ((strlen(pTempName) > 0) && 
  362. (strlen(pTempName) <= _MAX_PATH))
  363.     {
  364. bRetVal = true;
  365.     }
  366. }
  367. delete [] pTempName;
  368.     }
  369. }
  370. else
  371. {
  372.     bRetVal = true;
  373. }
  374.     }
  375.     return bRetVal;
  376. }
  377. bool HLXIHXFileTest::HandleIsOpenCmd(const UTVector<UTString>& info)
  378. {
  379.     bool bRetVal = false;
  380.     if (m_pIHXDataFile)
  381.     {
  382. bRetVal = (m_pIHXDataFile->IsOpen() != FALSE);
  383. bRetVal = (bRetVal == CFileTestUtil::ParseBoolString(info[1]));
  384.     }
  385.     return bRetVal;
  386. }
  387. bool HLXIHXFileTest::HandleWriteCmd(const UTVector<UTString>& info)
  388. {
  389.     bool bRetVal = false;
  390.     if (m_pIHXDataFile)
  391.     {
  392. IHXBuffer* pHXBuffer = new CHXBuffer();
  393. if (pHXBuffer)
  394. {
  395.     pHXBuffer->AddRef();
  396.     if (pHXBuffer->Set((const UINT8*) ((const char*) info[1]), 
  397.        strlen(info[1])) == HXR_OK)
  398.     {
  399. ULONG32 ulRetSize;
  400. ULONG32 ulInSize;
  401. ulInSize = pHXBuffer->GetSize();
  402. ulRetSize = m_pIHXDataFile->Write(pHXBuffer);
  403. bRetVal = (ulRetSize == ulInSize);
  404. bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[2]));
  405.     }
  406.     pHXBuffer->Release();
  407. }
  408.     }
  409.     return bRetVal;
  410. }
  411. bool HLXIHXFileTest::HandleReadCmd(const UTVector<UTString>& info)
  412. {
  413.     bool bRetVal = false;
  414.     if (m_pIHXDataFile)
  415.     {
  416. unsigned int uiReadSize = 0;
  417. if (UTParamUtil::GetUInt(info[1], uiReadSize))
  418. {
  419.     IHXBuffer* pHXBuffer = NULL;
  420.     bool bReadOK;
  421.     ULONG32 ulRetSize = m_pIHXDataFile->Read(pHXBuffer, uiReadSize);
  422.     bReadOK = ((ulRetSize != 0) && (ulRetSize != -1));
  423.     bRetVal = (bReadOK == CFileTestUtil::ParseResultString(info[2]));
  424.     if (bRetVal && bReadOK)
  425.     {
  426. bRetVal = false;
  427. if (info.Nelements() > 3)
  428. {
  429.     bRetVal = CFileTestUtil::CheckBuffer(info[3], 
  430.  pHXBuffer);
  431. }
  432.     }
  433.     HX_RELEASE(pHXBuffer);
  434. }
  435.     }
  436.     return bRetVal;
  437. }
  438. bool HLXIHXFileTest::HandleSeekCmd(const UTVector<UTString>& info)
  439. {
  440.     bool bRetVal = false;
  441.     if (m_pIHXDataFile)
  442.     {
  443. unsigned int uiSeekOffset = 0;
  444. if (UTParamUtil::GetUInt(info[1], uiSeekOffset))
  445. {
  446.     HX_RESULT retVal = m_pIHXDataFile->Seek(
  447. uiSeekOffset, 
  448. CFileTestUtil::ParseSeekModeString(info[2]));
  449.     bRetVal = (retVal == HXR_OK);
  450.     bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[3]));
  451. }
  452.     }
  453.     return bRetVal;
  454. }
  455. bool HLXIHXFileTest::HandleRewindCmd(const UTVector<UTString>& info)
  456. {
  457.     bool bRetVal = false;
  458.     if (m_pIHXDataFile)
  459.     {
  460. HX_RESULT retVal = HXR_FAIL;
  461. if (m_pCHXDataFile)
  462. {
  463.     retVal = m_pCHXDataFile->Rewind();
  464. }
  465. else
  466.     retVal = m_pIHXDataFile->Seek(0, SEEK_SET);
  467. }
  468. bRetVal = (retVal == HXR_OK);
  469. bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[1]));
  470.     }
  471.     return bRetVal;
  472. }
  473. bool HLXIHXFileTest::HandleTellCmd(const UTVector<UTString>& info)
  474. {
  475.     bool bRetVal = false;
  476.     if (m_pIHXDataFile)
  477.     {
  478. unsigned int uiFileOffset = 0;
  479. ULONG32 ulRetFileOffset = m_pIHXDataFile->Tell();
  480. bRetVal = true;
  481. if ((info.Nelements() > 1) &&
  482.     UTParamUtil::GetUInt(info[1], uiFileOffset))
  483. {
  484.     bRetVal = (ulRetFileOffset == uiFileOffset);
  485. }
  486.     }
  487.     return bRetVal;
  488. }
  489. bool HLXIHXFileTest::HandleStatCmd(const UTVector<UTString>& info)
  490. {
  491.     bool bRetVal = false;
  492.     if (m_pIHXDataFile)
  493.     {
  494. struct stat statBuffer;
  495. HX_RESULT retVal = m_pIHXDataFile->Stat(&statBuffer);
  496. bRetVal = (retVal == HXR_OK);
  497. bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[1]));
  498. if (bRetVal && (retVal == HXR_OK) && (info.Nelements() > 2))
  499. {
  500.     unsigned int uiFileSize = 0;
  501.     bRetVal = false;
  502.     if (UTParamUtil::GetUInt(info[2], uiFileSize))
  503.     {
  504. bRetVal = (statBuffer.st_size == uiFileSize);
  505.     }
  506. }
  507.     }
  508.     return bRetVal;
  509. }
  510. bool HLXIHXFileTest::HandleDeleteCmd(const UTVector<UTString>& info)
  511. {
  512.     bool bRetVal = false;
  513.     if (m_pIHXDataFile)
  514.     {
  515. if (info.Nelements() == 2)
  516. {
  517.     HX_RESULT retVal = m_pIHXDataFile->Delete();
  518.     bRetVal = (retVal == HXR_OK);
  519.     bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[1]));
  520. }
  521. else if (info.Nelements() == 3)
  522. {
  523.     HX_RESULT retVal = HXR_FAIL;
  524.     if (m_pCHXDataFile)
  525.     {
  526. retVal = m_pCHXDataFile->Delete((const char*) info[1]);
  527.     }
  528.     else
  529.     {
  530. m_pIHXDataFile->Bind((const char*) info[1]);
  531. retVal = m_pIHXDataFile->Delete();
  532.     }
  533.     bRetVal = (retVal == HXR_OK);
  534.     bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[2]));
  535. }
  536.     }
  537.     return bRetVal;
  538. }
  539. bool HLXIHXFileTest::HandleGetFdCmd(const UTVector<UTString>& info)
  540. {
  541.     bool bRetVal = false;
  542.     if (m_pIHXDataFile)
  543.     {
  544. INT16 iFd = m_pIHXDataFile->GetFd();
  545. bRetVal = true;
  546.     }
  547.     return bRetVal;
  548. }
  549. bool HLXIHXFileTest::HandleGetLastErrorCodeCmd(const UTVector<UTString>& info)
  550. {
  551.     bool bRetVal = false;
  552.     if (m_pIHXDataFile)
  553.     {
  554. HX_RESULT retVal = m_pIHXDataFile->GetLastError();
  555. bRetVal = (retVal == HXR_OK);
  556. bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[1]));
  557.     }
  558.     return bRetVal;
  559. }
  560. bool HLXIHXFileTest::HandleGetLastErrorStringCmd(const UTVector<UTString>& info)
  561. {
  562.     bool bRetVal = false;
  563.     if (m_pIHXDataFile)
  564.     {
  565. IHXBuffer* pHXBuffer = NULL;
  566. m_pIHXDataFile->GetLastError(pHXBuffer);
  567. HX_RELEASE(pHXBuffer);
  568. bRetVal = true;
  569.     }
  570.     return bRetVal;
  571. }
  572. /*****************************************************************************
  573.  *    Directory Commands
  574.  */ 
  575. bool HLXIHXFileTest::HandleSetDirPathCmd(const UTVector<UTString>& info)
  576. {
  577.     bool bRetVal = true;
  578.     if (m_bTestDir)
  579.     {
  580. bRetVal = false;
  581. if (m_pCHXDirectory)
  582. {
  583.     m_pCHXDirectory->SetPath((const char*) info[1]);
  584.     bRetVal = true;
  585. }
  586.     }
  587.     return bRetVal;
  588. }
  589. bool HLXIHXFileTest::HandleGetDirPathCmd(const UTVector<UTString>& info)
  590. {
  591.     bool bRetVal = true;
  592.     if (m_bTestDir)
  593.     {
  594. bRetVal = false;
  595. if (m_pCHXDirectory)
  596. {
  597.     const char* pPath;
  598.     
  599.     pPath = m_pCHXDirectory->GetPath();
  600.     bRetVal = (pPath ? true : false);
  601.     bRetVal = (bRetVal == (CFileTestUtil::ParseResultString(info[1]) ? true : false));
  602.     if (bRetVal && pPath)
  603.     {
  604. bRetVal = false;
  605. if (info.Nelements() > 2)
  606. {
  607.     bRetVal = (strcmp(info[2], pPath) == 0);
  608. }
  609. else
  610. {
  611.     bRetVal = true;
  612. }
  613.     }
  614. }
  615.     }
  616.     return bRetVal;
  617. }
  618. bool HLXIHXFileTest::HandleCreateDirCmd(const UTVector<UTString>& info)
  619. {
  620.     bool bRetVal = true;
  621.     if (m_bTestDir)
  622.     {
  623. bRetVal = false;
  624. if (m_pCHXDirectory)
  625. {
  626.     bRetVal = (m_pCHXDirectory->Create() != FALSE);
  627.     bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[1]));
  628. }
  629.     }
  630.     return bRetVal;
  631. }
  632. bool HLXIHXFileTest::HandleIsDirValidCmd(const UTVector<UTString>& info)
  633. {
  634.     bool bRetVal = false;
  635.     if (m_bTestDir)
  636.     {
  637. bRetVal = false;
  638. if (m_pCHXDirectory)
  639. {
  640.     bRetVal = (m_pCHXDirectory->IsValid() != FALSE);
  641.     bRetVal = (bRetVal == CFileTestUtil::ParseBoolString(info[1]));
  642. }
  643.     }
  644.     return bRetVal;
  645. }
  646. bool HLXIHXFileTest::HandleDestroyDirCmd(const UTVector<UTString>& info)
  647. {
  648.     bool bRetVal = false;
  649.     if (m_bTestDir)
  650.     {
  651. bRetVal = false;
  652. if (m_pCHXDirectory)
  653. {
  654.     bool bDestroyContents = CFileTestUtil::ParseBoolString(info[1]);
  655.     bRetVal = (m_pCHXDirectory->Destroy(bDestroyContents ? TRUE : FALSE) != FALSE);
  656.     if (info.Nelements() > 2)
  657.     {
  658. bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[2]));
  659.     }
  660.     else
  661.     {
  662. bRetVal = true;
  663.     }
  664. }
  665.     }
  666.     return bRetVal;
  667. }
  668. bool HLXIHXFileTest::HandleDeleteDirFileCmd(const UTVector<UTString>& info)
  669. {
  670.     bool bRetVal = false;
  671.     if (m_bTestDir)
  672.     {
  673. bRetVal = false;
  674. if (m_pCHXDirectory)
  675. {
  676.     bRetVal = (m_pCHXDirectory->DeleteFile((const char*) info[1]) != FALSE);
  677.     bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[2]));
  678. }
  679.     }
  680.     return bRetVal;
  681. }
  682. bool HLXIHXFileTest::HandleMakeCurrentDirCmd(const UTVector<UTString>& info)
  683. {
  684.     bool bRetVal = true;
  685.     if (m_bTestDir)
  686.     {
  687. bRetVal = false;
  688. if (m_pCHXDirectory)
  689. {
  690.     bRetVal = (m_pCHXDirectory->MakeCurrentDir() != FALSE);
  691.     bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[1]));
  692. }
  693.     }
  694.     return bRetVal;
  695. }
  696. bool HLXIHXFileTest::HandleFindFirstInDirCmd(const UTVector<UTString>& info)
  697. {
  698.     bool bRetVal = true;
  699.     if (m_bTestDir)
  700.     {
  701. bRetVal = false;
  702. if (m_pCHXDirectory)
  703. {
  704.     unsigned int uiFileNameSize = 0;
  705.     char* pOutFileName = NULL;
  706.     if (UTParamUtil::GetUInt(info[2], uiFileNameSize))
  707.     {
  708. pOutFileName = new char [uiFileNameSize];
  709. if (pOutFileName)
  710. {
  711.     XHXDirectory::FSOBJ retObj;
  712.     retObj = m_pCHXDirectory->FindFirst((const char*) info[1], // pattern
  713. pOutFileName,
  714. uiFileNameSize);
  715.     bRetVal = (retObj == CFileTestUtil::ParseFSOBJString(
  716.     (const char*) info[3], 
  717.     (retObj != XHXDirectory::FSOBJ_NOTVALID) ? retObj : XHXDirectory::FSOBJ_FILE));
  718.     if (bRetVal && (retObj != XHXDirectory::FSOBJ_NOTVALID))
  719.     {
  720. if (info.Nelements() > 4)
  721. {
  722.     bRetVal = (strcmp(pOutFileName, (const char*) info[4]) == 0);
  723. }
  724.     }
  725.     delete pOutFileName;
  726. }
  727.     }
  728. }
  729.     }
  730.     return bRetVal;
  731. }
  732. bool HLXIHXFileTest::HandleFindNextInDirCmd(const UTVector<UTString>& info)
  733. {
  734.     bool bRetVal = true;
  735.     if (m_bTestDir)
  736.     {
  737. bRetVal = false;
  738. if (m_pCHXDirectory)
  739. {
  740.     unsigned int uiFileNameSize = 0;
  741.     char* pOutFileName = NULL;
  742.     if (UTParamUtil::GetUInt(info[1], uiFileNameSize))
  743.     {
  744. pOutFileName = new char [uiFileNameSize];
  745. if (pOutFileName)
  746. {
  747.     XHXDirectory::FSOBJ retObj;
  748.     retObj = m_pCHXDirectory->FindNext(pOutFileName, // path
  749.        uiFileNameSize);
  750.     bRetVal = (retObj == CFileTestUtil::ParseFSOBJString((const char*) info[2], retObj));
  751.     if (bRetVal && (retObj != XHXDirectory::FSOBJ_NOTVALID))
  752.     {
  753. if (info.Nelements() > 3)
  754. {
  755.     bRetVal = (strcmp(pOutFileName, (const char*) info[3]) == 0);
  756. }
  757.     }
  758.     delete pOutFileName;
  759. }
  760.     }
  761. }
  762.     }
  763.     return bRetVal;
  764. }
  765. bool HLXIHXFileTest::HandleRenameCmd(const UTVector<UTString>& info)
  766. {
  767.     bool bRetVal = false;
  768.     if (m_bTestDir)
  769.     {
  770. bRetVal = false;
  771. if (m_pCHXDirectory)
  772. {
  773.     bRetVal = (m_pCHXDirectory->Rename((const char*) info[1],
  774.        (const char*) info[2]) == HXR_OK);
  775.     bRetVal = (bRetVal == CFileTestUtil::ParseResultString(info[3]));
  776. }
  777.     }
  778.     return bRetVal;
  779. }