TEST(TStr, ToUc) { TStr Mixedcase = "AbCd"; TStr Uppercase = "ABCD"; TStr Empty = ""; TStr Empty2; Mixedcase.ToUc(); Empty.ToUc(); EXPECT_EQ(Mixedcase, Uppercase); EXPECT_EQ(Empty, Empty2); }
bool TFFile::Next(TStr& FNm){ // if need to recurse if (!SubFFile.Empty()){ if (SubFFile->Next(FNm)){CurFNm=FNm; CurFNmN++; return true;} else {SubFFile=NULL;} } // for all required file-paths while (FPathN<FPathV.Len()){ // try to find anything within FPathV[FPathN] directory while (true) { // if directory not open -> open next first if (!FFileDesc->FDesc) { if ((++FPathN)<FPathV.Len()) { FFileDesc->FDesc = opendir(FPathV[FPathN].CStr()); } else break; if (!FFileDesc->FDesc) break; // failed to open this one; pass control to outer loop } FFileDesc->DirEnt = readdir(FFileDesc->FDesc); if (FFileDesc->DirEnt) { // found something TStr FBase = FFileDesc->GetFBase(); FNm = FPathV[FPathN]+FBase; struct stat Stat; int ErrCd = stat(FNm.CStr(), &Stat); Assert(ErrCd==0); // !bn: assert-with-exception [pa se drugje po tej funkciji] if (S_ISREG(Stat.st_mode)) { if ((FBase!=".")&&(FBase!="..")){ TStr FExt=FNm.GetFExt(); if (!CsImpP){FExt.ToUc(); FBase.ToUc();} if (((FExtV.Empty())||(FExtV.SearchForw(FExt)!=-1))&& ((FBaseWc.Empty())||(FBase.IsWcMatch(FBaseWc)))){ CurFNm=FNm; CurFNmN++; return true;} } } else if (S_ISDIR(Stat.st_mode) && RecurseP) { if ((FBase!=".")&&(FBase!="..")){ TStr SubFPath=FPathV[FPathN]+FBase; TStrV SubFPathV; SubFPathV.Add(SubFPath); SubFFile=New(SubFPathV, FExtV, FBaseWc, RecurseP); if (SubFFile->Next(FNm)){CurFNm=FNm; CurFNmN++; return true;} else {SubFFile=NULL;} } } } else { // end of directory; clean up (ignore DirEnt, it's allocated within FDesc), pass control to outer loop FFileDesc->DirEnt = NULL; int ErrCd = closedir(FFileDesc->FDesc); FFileDesc->FDesc = NULL; Assert(ErrCd==0); break; } } } // not found CurFNm=""; CurFNmN=-1; return false; }