From 715931be584108ef81d1634cf0d9c0a6e46e7636 Mon Sep 17 00:00:00 2001 From: Sergey Linev Date: Wed, 21 Oct 2026 08:12:55 +0200 Subject: [PATCH] [roottest] provide test for TDataMember::GetOptions Use TAttImage::fImageQuality to which is enum with different values and special comment string. Important for creation of context menus --- roottest/root/meta/enums/CMakeLists.txt | 4 ++++ roottest/root/meta/enums/execenumOptList.C | 21 ++++++++++++++++++++ roottest/root/meta/enums/execenumOptList.ref | 13 ++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 roottest/root/meta/enums/execenumOptList.C create mode 100644 roottest/root/meta/enums/execenumOptList.ref diff --git a/roottest/root/meta/enums/CMakeLists.txt b/roottest/root/meta/enums/CMakeLists.txt index 5bc3074182774..fdcc2cd0eaffa 100644 --- a/roottest/root/meta/enums/CMakeLists.txt +++ b/roottest/root/meta/enums/CMakeLists.txt @@ -88,3 +88,7 @@ ROOTTEST_ADD_TEST(enumSize ROOTTEST_ADD_TEST(testUsingEnum.cxx MACRO test_usingenum.cxx OUTREF test_usingenum.ref) + +ROOTTEST_ADD_TEST(enumOptList + MACRO execenumOptList.C + OUTREF execenumOptList.ref) diff --git a/roottest/root/meta/enums/execenumOptList.C b/roottest/root/meta/enums/execenumOptList.C new file mode 100644 index 0000000000000..adc245a4d68f3 --- /dev/null +++ b/roottest/root/meta/enums/execenumOptList.C @@ -0,0 +1,21 @@ +void execenumOptList() +{ + const char *tname = "TAttImage::EImageQuality"; + + printf("List of values in enum %s\n", tname); + if (auto enumDict = TEnum::GetEnum(tname)) { + TIter iEnumConst(enumDict->GetConstants()); + while (auto enumConst = static_cast(iEnumConst())) { + printf(" name %s value %lld\n", enumConst->GetName(), enumConst->GetValue()); + } + } + + auto cl = TClass::GetClass("TAttImage"); + auto member = cl->GetDataMember("fImageQuality"); + + printf("List of options for TAttImage::fImageQuality member\n"); + TIter nxt(member->GetOptions()); + while (auto it = dynamic_cast(nxt())) { + printf(" name %s label %s value %ld\n", it->fOptName.Data(), it->fOptLabel.Data(), it->fValue); + } +} diff --git a/roottest/root/meta/enums/execenumOptList.ref b/roottest/root/meta/enums/execenumOptList.ref new file mode 100644 index 0000000000000..330f374d789cd --- /dev/null +++ b/roottest/root/meta/enums/execenumOptList.ref @@ -0,0 +1,13 @@ +Processing execenumOptList.C... +List of values in enum TAttImage::EImageQuality + name kImgDefault value -1 + name kImgPoor value 0 + name kImgFast value 1 + name kImgGood value 2 + name kImgBest value 3 +List of options for TAttImage::fImageQuality member + name Default label kImgDefault value -1 + name Poor label kImgPoor value 0 + name Fast label kImgFast value 1 + name Good label kImgGood value 2 + name Best label kImgBest value 3