Skip to content

Commit 8c6f9ea

Browse files
committed
[FIX] fix issue with regex parsing. now regex support internal coma
1 parent 3290218 commit 8c6f9ea

File tree

4 files changed

+35
-8
lines changed

4 files changed

+35
-8
lines changed

tests/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ SetTest(Test_IGFD_FilterManager_ParseFilters_Filters_Regex_0)
7373
SetTest(Test_IGFD_FilterManager_ParseFilters_Filters_Regex_1)
7474
SetTest(Test_IGFD_FilterManager_ParseFilters_Filters_Regex_2)
7575
SetTest(Test_IGFD_FilterManager_ParseFilters_Filters_Regex_3)
76+
SetTest(Test_IGFD_FilterManager_ParseFilters_Filters_Regex_4)
77+
SetTest(Test_IGFD_FilterManager_ParseFilters_Filters_Regex_5)
7678

7779
## Test_IGFD_FilterManager -- Divers Filters
7880
SetTest(Test_IGFD_FilterManager_ParseFilters_Filters_Divers_0)

tests/ImGuiFileDialog/Test_FilterManager.cpp

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -406,15 +406,13 @@ bool Test_IGFD_FilterManager_ParseFilters_Filters_Simple_Regex_5() {
406406
return true;
407407
}
408408

409-
// last ) missing
409+
// last ) missing, so the last filters .h and .hpp are aprt of the regex.. so only one filter recognized
410410
bool Test_IGFD_FilterManager_ParseFilters_Filters_Simple_Regex_6() {
411411
IGFD::TestFilterManager mgr("(([.][0-9]{3})),.cpp,(([.][0-9]{3},.h,.hpp");
412412

413-
if (mgr.getFiltersRef().size() != 4U) return false;
413+
if (mgr.getFiltersRef().size() != 2U) return false;
414414
if (mgr.getFiltersRef()[0].getFirstFilter() != "(([.][0-9]{3}))") return false;
415415
if (mgr.getFiltersRef()[1].getFirstFilter() != ".cpp") return false;
416-
if (mgr.getFiltersRef()[2].getFirstFilter() != ".h") return false;
417-
if (mgr.getFiltersRef()[3].getFirstFilter() != ".hpp") return false;
418416

419417
return true;
420418
}
@@ -480,13 +478,14 @@ bool Test_IGFD_FilterManager_ParseFilters_Filters_Regex_0() {
480478
return true;
481479
}
482480

483-
// invalid regex
481+
// valid regex
484482
bool Test_IGFD_FilterManager_ParseFilters_Filters_Regex_1() {
485483
IGFD::TestFilterManager mgr("frames files{((.001,.NNN)),.frames}");
486484

487485
if (mgr.getFiltersRef().size() != 1U) return false;
488486
if (mgr.getFiltersRef()[0].title != "frames files") return false;
489-
if (mgr.getFiltersRef()[0].filters.size() != 1U) return false;
487+
if (mgr.getFiltersRef()[0].filters.size() != 2U) return false;
488+
if (!mgr.getFiltersRef()[0].filters.exist("((.001,.NNN))")) return false;
490489
if (!mgr.getFiltersRef()[0].filters.exist(".frames")) return false;
491490

492491
return true;
@@ -518,6 +517,30 @@ bool Test_IGFD_FilterManager_ParseFilters_Filters_Regex_3() {
518517
return true;
519518
}
520519

520+
// must be ok
521+
bool Test_IGFD_FilterManager_ParseFilters_Filters_Regex_4() {
522+
IGFD::TestFilterManager mgr(R"(Dem files{((^[A-Za-z][0-9][0-9][A-Za-z][0-9]{3}(?:\.txt|\.hgt)?$))})");
523+
524+
if (mgr.getFiltersRef().size() != 1U) return false;
525+
if (mgr.getFiltersRef()[0].title != "Dem files") return false;
526+
if (mgr.getFiltersRef()[0].filters.size() != 1U) return false;
527+
if (!mgr.getFiltersRef()[0].filters.exist(R"(((^[A-Za-z][0-9][0-9][A-Za-z][0-9]{3}(?:\.txt|\.hgt)?$)))")) return false;
528+
529+
return true;
530+
}
531+
532+
// must be ok
533+
bool Test_IGFD_FilterManager_ParseFilters_Filters_Regex_5() {
534+
IGFD::TestFilterManager mgr(R"(Dem files{((^[A-Za-z][0-9][0-9][A-Za-z][0-9]{2,3}(?:\.txt|\.hgt)?$))})");
535+
536+
if (mgr.getFiltersRef().size() != 1U) return false;
537+
if (mgr.getFiltersRef()[0].title != "Dem files") return false;
538+
if (mgr.getFiltersRef()[0].filters.size() != 1U) return false;
539+
if (!mgr.getFiltersRef()[0].filters.exist(R"(((^[A-Za-z][0-9][0-9][A-Za-z][0-9]{2,3}(?:\.txt|\.hgt)?$)))")) return false;
540+
541+
return true;
542+
}
543+
521544
#pragma endregion
522545

523546
#pragma region Filters Divers Tests
@@ -1104,6 +1127,8 @@ bool Test_FilterManager(const std::string& vTest) {
11041127
IfTestExist(Test_IGFD_FilterManager_ParseFilters_Filters_Regex_1);
11051128
IfTestExist(Test_IGFD_FilterManager_ParseFilters_Filters_Regex_2);
11061129
IfTestExist(Test_IGFD_FilterManager_ParseFilters_Filters_Regex_3);
1130+
IfTestExist(Test_IGFD_FilterManager_ParseFilters_Filters_Regex_4);
1131+
IfTestExist(Test_IGFD_FilterManager_ParseFilters_Filters_Regex_5);
11071132
IfTestExist(Test_IGFD_FilterManager_ParseFilters_Filters_Divers_0);
11081133
IfTestExist(Test_IGFD_FilterManager_ParseFilters_Filters_Divers_1);
11091134
IfTestExist(Test_IGFD_FilterManager_ParseFilters_Filters_Divers_2);

tests/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ int main(int argc, char** argv) {
2929
return Test_ImGuiFileDialog(argv[1]) ? 0 : 1;
3030
}
3131

32-
return Test_ImGuiFileDialog("Test_IGFD_FileManager_Filtering_asterisk_0") ? 0 : 1;
32+
return Test_ImGuiFileDialog("Test_IGFD_FilterManager_ParseFilters_Filters_Regex_1") ? 0 : 1;
3333

3434
return 0;
3535
}

0 commit comments

Comments
 (0)