DAS  3.0
Das Analysis System
UserInfo.cc File Reference
#include <boost/test/included/unit_test.hpp>
#include <boost/exception/all.hpp>
#include <boost/property_tree/info_parser.hpp>
#include "test.h"
#include "UserInfo.h"
+ Include dependency graph for UserInfo.cc:

Macros

#define BOOST_TEST_MODULE   testUserInfo
 

Functions

 BOOST_AUTO_TEST_CASE (arithmetic)
 
 BOOST_AUTO_TEST_CASE (literal)
 
 BOOST_AUTO_TEST_CASE (writing)
 
 BOOST_AUTO_TEST_CASE (loading)
 
 BOOST_AUTO_TEST_CASE (hashing)
 

Macro Definition Documentation

◆ BOOST_TEST_MODULE

#define BOOST_TEST_MODULE   testUserInfo

Function Documentation

◆ BOOST_AUTO_TEST_CASE() [1/5]

BOOST_AUTO_TEST_CASE ( arithmetic  )
21  {
22  UserInfo userinfo;
23 
24  bool myBool = true;
25  int myInt = 2016;
26  float myFloat = 3.1415;
27  double myDouble = 3.141592404915836;
28  BOOST_TEST_MESSAGE( "Setting elements" );
29  BOOST_REQUIRE_NO_THROW( userinfo.Set<bool >("closure", "arithmetic", "myBool" , myBool ) );
30  BOOST_REQUIRE_NO_THROW( userinfo.Set<int >("closure", "arithmetic", "myInt" , myInt ) );
31  BOOST_REQUIRE_NO_THROW( userinfo.Set<float >("closure", "arithmetic", "myFloat" , myFloat ) );
32  BOOST_REQUIRE_NO_THROW( userinfo.Set<double>("closure", "arithmetic", "myDouble", myDouble) );
33  BOOST_TEST_MESSAGE( "Getting existing elements" );
34  BOOST_TEST( myBool == userinfo.Get<bool >("closure", "arithmetic", "myBool" ) );
35  BOOST_TEST( myInt == userinfo.Get<int >("closure", "arithmetic", "myInt" ) );
36  BOOST_TEST( myFloat == userinfo.Get<float >("closure", "arithmetic", "myFloat" ) );
37  BOOST_TEST( myDouble == userinfo.Get<double>("closure", "arithmetic", "myDouble") );
38  BOOST_TEST_MESSAGE( "Testing wrong calls of getters" );
39  BOOST_REQUIRE_THROW( userinfo.Get<double>("closure", "arithmetic", "" ), wrapexcept<invalid_argument> );
40  BOOST_REQUIRE_THROW( userinfo.Get<double>("closure", "arithmetic", "myBool" ), wrapexcept<invalid_argument> );
41  BOOST_REQUIRE_THROW( userinfo.Set<double>("closure", "arithmetic", "myBool", myDouble), wrapexcept<invalid_argument> );
42  BOOST_TEST_MESSAGE( "Finding objects" );
43  BOOST_REQUIRE_THROW( userinfo.Find("closure", "arithmetic", ""), wrapexcept<invalid_argument> );
44  BOOST_TEST( userinfo.Find("closure", "arithmetic", "myBool") );
45  BOOST_TEST( userinfo.Find("closure", "arithmetic", "sine") == false );
46  BOOST_TEST( userinfo.Find("closure", "trigonometry") == false );
47  BOOST_TEST( userinfo.Find("closure", "trigonometry", "sine") == false );
48  BOOST_TEST( userinfo.List("closure", "trigonometry") != nullptr );
49  BOOST_TEST( userinfo.Find("closure", "trigonometry") == true );
50  BOOST_TEST( userinfo.List("closure", "trigonometry", "sine") != nullptr );
51  BOOST_TEST( userinfo.List() != nullptr );
52 
53  TList * l = nullptr;
54  BOOST_REQUIRE_THROW( UserInfo(l).MkPtree(), wrapexcept<invalid_argument> );
55  }

◆ BOOST_AUTO_TEST_CASE() [2/5]

BOOST_AUTO_TEST_CASE ( hashing  )
111  {
112  UserInfo userinfo1, userinfo2;
113  userinfo1.Set<int>("test", 1);
114  userinfo2.Set<int>("test", 1);
115 
116  hash<UserInfo> Hash;
117  BOOST_TEST( Hash(userinfo1) == Hash(userinfo2) );
118  userinfo2.Set<int>("test", 2);
119  BOOST_TEST( Hash(userinfo1) != Hash(userinfo2) );
120  }

◆ BOOST_AUTO_TEST_CASE() [3/5]

BOOST_AUTO_TEST_CASE ( literal  )
58  {
59  UserInfo userinfo;
60 
61  const char * myConstChar = "hello, world";
62  string myString = "Darwin";
63  fs::path myPath = "example.info";
64  BOOST_REQUIRE_NO_THROW( userinfo.Set<const char *>("closure", "literals", "myConstChar", myConstChar) );
65  BOOST_REQUIRE_NO_THROW( userinfo.Set<string >("closure", "literals", "myString" , myString ) );
66  BOOST_REQUIRE_NO_THROW( userinfo.Set<fs::path >("closure", "literals", "myPath" , myPath ) );
67  BOOST_TEST( strcmp(myConstChar, userinfo.Get<const char *>("closure", "literals", "myConstChar")) == 0 );
68  BOOST_TEST( myString == userinfo.Get<string >("closure", "literals", "myString" ) );
69  BOOST_TEST( myPath == userinfo.Get<fs::path >("closure", "literals", "myPath" ) );
70  BOOST_REQUIRE_THROW( userinfo.Get<const char *>("this", "does", "not", "exist"), wrapexcept<invalid_argument> );
71  }

◆ BOOST_AUTO_TEST_CASE() [4/5]

BOOST_AUTO_TEST_CASE ( loading  )
90  {
91  UserInfo userinfo;
92 
93  BOOST_REQUIRE_NO_THROW( userinfo.Set<const char *>("corrections", "JES", "nominal") );
94  BOOST_REQUIRE_NO_THROW( userinfo.Set<const char *>("corrections", "JES", "JESup" ) );
95  BOOST_REQUIRE_NO_THROW( userinfo.Set<const char *>("corrections", "JES", "JESdn" ) );
96  BOOST_REQUIRE_NO_THROW( userinfo.Set<int> ("answer", 42 ) );
97  BOOST_REQUIRE_NO_THROW( userinfo.Set<float>("pi" , 3.1415f) );
98 
99  stringstream ss;
100  auto pt = userinfo.Write(ss, UserInfo::INFO);
101 
102  // Check round trip. We deserialize the ptree and serialize it again
103  UserInfo reconstructed(pt);
104 
105  stringstream ss2;
106  BOOST_REQUIRE_NO_THROW( reconstructed.Write(ss2, UserInfo::INFO) );
107  BOOST_REQUIRE( ss.str() == ss2.str() );
108  }

◆ BOOST_AUTO_TEST_CASE() [5/5]

BOOST_AUTO_TEST_CASE ( writing  )
74  {
75  UserInfo userinfo;
76 
77  BOOST_REQUIRE_NO_THROW( userinfo.Set<const char *>("corrections", "JES", "nominal") );
78  BOOST_REQUIRE_NO_THROW( userinfo.Set<const char *>("corrections", "JES", "JESup" ) );
79  BOOST_REQUIRE_NO_THROW( userinfo.Set<const char *>("corrections", "JES", "JESdn" ) );
80 
81  BOOST_REQUIRE_NO_THROW( userinfo.Write("test.info") );
82  BOOST_REQUIRE_NO_THROW( userinfo.Write("test.json") );
83  BOOST_REQUIRE_NO_THROW( userinfo.Write("test.xml") );
84  fs::remove("test.info");
85  fs::remove("test.json");
86  fs::remove("test.xml");
87  }
jmarExample.pt
pt
Definition: jmarExample.py:19
BOOST_TEST
BOOST_TEST(gendijet.Rapidity()==1.3573785791881385)
Darwin::Tools::UserInfo::Get
T Get(TList *mother, const char *key) const
Definition: UserInfo.h:77
Darwin::Tools::UserInfo::Write
boost::property_tree::ptree Write(const boost::property_tree::ptree &, std::ostream &, Format=INFO) const
Write a Boost Property Tree to text file format.
Definition: UserInfo.cc:91
Darwin::Tools::UserInfo::Find
bool Find(TList *mother, const char *key) const
Check if an element exists in a TList.
Definition: UserInfo.h:109
Darwin::Tools::UserInfo::INFO
@ INFO
INFO format, proper to Boost Property Trees (default)
Definition: UserInfo.h:59
Darwin::Tools::UserInfo::Set
void Set(TList *mother, const char *key, T value) const
Definition: UserInfo.h:140
Darwin::Tools::UserInfo::List
TList * List(TList *mother, const char *key) const
Accest do daughter list from a mother list.
Definition: UserInfo.cc:33
Darwin::Tools::UserInfo
Generic meta-information for n-tuple (can be used out of Darwin).
Definition: UserInfo.h:54