VirtualBox

Changeset 14369 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Nov 19, 2008 6:19:32 PM (16 years ago)
Author:
vboxsync
Message:

Runtime/testcase: new testcase for sanity check of RTDirOpenFiltered.

Location:
trunk/src/VBox/Runtime/testcase
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/testcase/Makefile.kmk

    r14025 r14369  
    5656        tstDir \
    5757        tstDir-2 \
     58        tstDir-3 \
    5859        tstEnv \
    5960        tstErrUnique \
     
    145146tstDir-2_SOURCES = tstDir-2.cpp
    146147
     148tstDir-3_SOURCES = tstDir-3.cpp
     149
    147150tstEnv_SOURCES = tstEnv.cpp
    148151
  • trunk/src/VBox/Runtime/testcase/tstDir-3.cpp

    r14339 r14369  
    11/* $Id$ */
    22/** @file
    3  * IPRT Testcase - Directory listing & filtering .
     3 * IPRT Testcase - Directory listing & filtering (no parameters needed).
    44 */
    55
    66/*
    7  * Copyright (C) 2006-2007 Sun Microsystems, Inc.
     7 * Copyright (C) 2006-2008 Sun Microsystems, Inc.
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    2929 */
    3030
     31#include <iprt/path.h>
    3132#include <iprt/dir.h>
    3233#include <iprt/stream.h>
     
    3435#include <iprt/runtime.h>
    3536
     37static int tstDirOpenFiltered(const char *pszFilter, unsigned *pcFilesMatch, int *pRc)
     38{
     39    int rcRet = 0;
     40    unsigned cFilesMatch = 0;
     41    PRTDIR pDir;
     42    int rc = RTDirOpenFiltered(&pDir, pszFilter, RTDIRFILTER_WINNT);
     43    if (RT_SUCCESS(rc))
     44    {
     45        for (;;)
     46        {
     47            RTDIRENTRY DirEntry;
     48            rc = RTDirRead(pDir, &DirEntry, NULL);
     49            if (RT_FAILURE(rc))
     50                break;
     51            cFilesMatch++;
     52        }
     53
     54        if (rc != VERR_NO_MORE_FILES)
     55        {
     56            RTPrintf("tstDir-3: Enumeration '%s' failed! rc=%Rrc\n", pszFilter, rc);
     57            rcRet = 1;
     58        }
     59
     60        /* close up */
     61        rc = RTDirClose(pDir);
     62        if (RT_FAILURE(rc))
     63        {
     64            RTPrintf("tstDir-3: Failed to close dir '%s'! rc=%Rrc\n", pszFilter, rc);
     65            rcRet = 1;
     66        }
     67    }
     68    else
     69    {
     70        RTPrintf("tstDir-3: Failed to open '%s', rc=%Rrc\n", pszFilter, rc);
     71        rcRet = 1;
     72    }
     73
     74    *pcFilesMatch = cFilesMatch;
     75    *pRc = rc;
     76    return rcRet;
     77}
     78
    3679int main(int argc, char **argv)
    3780{
    3881    int rcRet = 0;
     82    int rcRet2;
     83    int rc;
     84    unsigned cMatch;
    3985    RTR3Init();
    4086
    41     /*
    42      * Iterate arguments.
    43      */
    44     for (int i = 1; i < argc; i++)
     87    const char *pszTestDir = ".";
     88
     89    char *pszFilter1 = NULL;
     90    rc = RTStrAPrintf(&pszFilter1, "%s%c%s", pszTestDir, RTPATH_SLASH, "xyxzxq*");
     91    if (RT_FAILURE(rc))
    4592    {
    46         /* open */
    47         PRTDIR pDir;
    48         int rc = RTDirOpenFiltered(&pDir, argv[i], RTDIRFILTER_WINNT);
    49         if (RT_SUCCESS(rc))
    50         {
    51             for (;;)
    52             {
    53                 RTDIRENTRY DirEntry;
    54                 rc = RTDirRead(pDir, &DirEntry, NULL);
    55                 if (RT_FAILURE(rc))
    56                     break;
    57                 switch (DirEntry.enmType)
    58                 {
    59                     case RTDIRENTRYTYPE_UNKNOWN:     RTPrintf("u"); break;
    60                     case RTDIRENTRYTYPE_FIFO:        RTPrintf("f"); break;
    61                     case RTDIRENTRYTYPE_DEV_CHAR:    RTPrintf("c"); break;
    62                     case RTDIRENTRYTYPE_DIRECTORY:   RTPrintf("d"); break;
    63                     case RTDIRENTRYTYPE_DEV_BLOCK:   RTPrintf("b"); break;
    64                     case RTDIRENTRYTYPE_FILE:        RTPrintf("-"); break;
    65                     case RTDIRENTRYTYPE_SYMLINK:     RTPrintf("l"); break;
    66                     case RTDIRENTRYTYPE_SOCKET:      RTPrintf("s"); break;
    67                     case RTDIRENTRYTYPE_WHITEOUT:    RTPrintf("w"); break;
    68                     default:
    69                         rcRet = 1;
    70                         RTPrintf("?");
    71                         break;
    72                 }
    73                 RTPrintf(" %#18llx  %3d %s\n", (uint64_t)DirEntry.INodeId,
    74                          DirEntry.cbName, DirEntry.szName);
    75             }
    76 
    77             if (rc != VERR_NO_MORE_FILES)
    78             {
    79                 RTPrintf("tstDir: Enumeration failed! rc=%Rrc\n", rc);
    80                 rcRet = 1;
    81             }
    82 
    83             /* close up */
    84             rc = RTDirClose(pDir);
    85             if (RT_FAILURE(rc))
    86             {
    87                 RTPrintf("tstDir: Failed to close dir! rc=%Rrc\n", rc);
    88                 rcRet = 1;
    89             }
    90         }
    91         else
    92         {
    93             RTPrintf("tstDir: Failed to open '%s', rc=%Rrc\n", argv[i], rc);
    94             rcRet = 1;
    95         }
     93        RTPrintf("tstDir-3: cannot create non-match filter! rc=%Rrc\n", rc);
     94        return 1;
    9695    }
    9796
     97    char *pszFilter2 = NULL;
     98    rc = RTStrAPrintf(&pszFilter2, "%s%c%s", pszTestDir, RTPATH_SLASH, "*");
     99    if (RT_FAILURE(rc))
     100    {
     101        RTPrintf("tstDir-3: cannot create match filter! rc=%Rrc\n", rc);
     102        return 1;
     103    }
     104
     105    rcRet2 = tstDirOpenFiltered(pszFilter1, &cMatch, &rc);
     106    if (rcRet2)
     107        rcRet = rcRet2;
     108    if (RT_FAILURE(rc))
     109        RTPrintf("tstDir-3: filter '%s' failed! rc=%Rrc\n", pszFilter1, rc);
     110    if (cMatch)
     111        RTPrintf("tstDir-3: filter '%s' gave wrong result count! cMatch=%u\n", pszFilter1, cMatch);
     112
     113    rcRet2 = tstDirOpenFiltered(pszFilter2, &cMatch, &rc);
     114    if (rcRet2)
     115        rcRet = rcRet2;
     116    if (RT_FAILURE(rc))
     117        RTPrintf("tstDir-3: filter '%s' failed! rc=%Rrc\n", pszFilter2, rc);
     118    if (!cMatch)
     119        RTPrintf("tstDir-3: filter '%s' gave wrong result count! cMatch=%u\n", pszFilter2, cMatch);
     120
     121    if (!rcRet)
     122    RTPrintf("tstDir-3: OK\n");
    98123    return rcRet;
    99124}
    100 
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette