Belle II Software  release-06-02-00
make_root_compatible.cc
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 #include <framework/utilities/TestHelpers.h>
9 #include <framework/utilities/MakeROOTCompatible.h>
10 
11 #include <gtest/gtest.h>
12 
13 using namespace std;
14 using namespace Belle2;
15 
16 namespace {
17 
18  TEST(VariableTest, makeROOTCompatible)
19  {
20  EXPECT_EQ("", makeROOTCompatible(""));
21  EXPECT_EQ("test", makeROOTCompatible("test"));
22  EXPECT_EQ("test213", makeROOTCompatible("test213"));
23  EXPECT_EQ("test_23", makeROOTCompatible("test_23"));
24 
25  EXPECT_EQ("", makeROOTCompatible(""));
26  EXPECT_EQ("test", makeROOTCompatible("test"));
27  EXPECT_EQ("test213", makeROOTCompatible("test213"));
28  EXPECT_EQ("test_23", makeROOTCompatible("test_23"));
29 
30  EXPECT_EQ("test__bo23__bc", makeROOTCompatible("test(23)"));
31  EXPECT_EQ("test__so23__sc", makeROOTCompatible("test[23]"));
32  EXPECT_EQ("test__co23__cc", makeROOTCompatible("test{23}"));
33  EXPECT_EQ("test__boe__pl__clgamma__cm__spM__sp__st__sp3__bc", makeROOTCompatible("test(e+:gamma, M < 3)"));
34  EXPECT_EQ("__cl__bo__bc__sp__bo__bc__cm", makeROOTCompatible(":() (),"));
35  EXPECT_EQ("c__cl__bo__bcb__sp__bo__bc__cma", makeROOTCompatible("c:()b (),a"));
36  EXPECT_EQ("c__cl__bo__cm__pl8951aBZWVZUEOH_Rhtnsq__bcb__sp__bo__bc__cma", makeROOTCompatible("c:(,+8951aBZWVZUEOH_Rhtnsq)b (),a"));
37  EXPECT_EQ("foo__bobar__cm__mi0__pt123__cm__sp94__bc", makeROOTCompatible("foo(bar,-0.123, 94)"));
38 
39  for (const auto& pair : getSubstitutionMap()) {
40  EXPECT_EQ(pair.second, makeROOTCompatible(pair.first));
41  }
42 
43  EXPECT_NO_B2WARNING(makeROOTCompatible("test_a"));
44  EXPECT_B2WARNING(makeROOTCompatible("test__a"));
45  }
46 
47  TEST(VariableTest, invertMakeROOTCompatible)
48  {
49  EXPECT_EQ(invertMakeROOTCompatible(""), "");
50  EXPECT_EQ(invertMakeROOTCompatible("test"), "test");
51  EXPECT_EQ(invertMakeROOTCompatible("test213"), "test213");
52  EXPECT_EQ(invertMakeROOTCompatible("test_23"), "test_23");
53 
54  EXPECT_EQ(invertMakeROOTCompatible(""), "");
55  EXPECT_EQ(invertMakeROOTCompatible("test"), "test");
56  EXPECT_EQ(invertMakeROOTCompatible("test213"), "test213");
57  EXPECT_EQ(invertMakeROOTCompatible("test_23"), "test_23");
58 
59  EXPECT_EQ(invertMakeROOTCompatible("test__bo23__bc"), "test(23)");
60  EXPECT_EQ(invertMakeROOTCompatible("test__so23__sc"), "test[23]");
61  EXPECT_EQ(invertMakeROOTCompatible("test__co23__cc"), "test{23}");
62  EXPECT_EQ(invertMakeROOTCompatible("test__boe__pl__clgamma__cm__spM__sp__st__sp3__bc"), "test(e+:gamma, M < 3)");
63  EXPECT_EQ(invertMakeROOTCompatible("__cl__bo__bc__sp__bo__bc__cm"), ":() (),");
64  EXPECT_EQ(invertMakeROOTCompatible("c__cl__bo__bcb__sp__bo__bc__cma"), "c:()b (),a");
65  EXPECT_EQ(invertMakeROOTCompatible("c__cl__bo__cm__pl8951aBZWVZUEOH_Rhtnsq__bcb__sp__bo__bc__cma"),
66  "c:(,+8951aBZWVZUEOH_Rhtnsq)b (),a");
67  EXPECT_EQ(invertMakeROOTCompatible("foo__bobar__cm__mi0__pt123__cm__sp94__bc"), "foo(bar,-0.123, 94)");
68 
69  for (const auto& pair : getSubstitutionMap()) {
70  EXPECT_EQ(pair.first, invertMakeROOTCompatible(pair.second));
71  }
72  }
73 
74 }
TEST(TestgetDetectorRegion, TestgetDetectorRegion)
Test Constructors.
std::map< std::string, std::string > getSubstitutionMap()
Substituation map for makeROOTCompatible.
std::string makeROOTCompatible(std::string str)
Remove special characters that ROOT dislikes in branch names, e.g.
std::string invertMakeROOTCompatible(std::string str)
Invert makeROOTCompatible operation.
Abstract base class for different kinds of events.