aboutsummaryrefslogtreecommitdiff
path: root/common/container/test.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'common/container/test.hxx')
-rw-r--r--common/container/test.hxx95
1 files changed, 93 insertions, 2 deletions
diff --git a/common/container/test.hxx b/common/container/test.hxx
index 31e9542..ff2a4e2 100644
--- a/common/container/test.hxx
+++ b/common/container/test.hxx
@@ -5,12 +5,21 @@
#ifndef TEST_HXX
#define TEST_HXX
+#include <common/config.hxx> // HAVE_CXX11
+
#include <map>
#include <set>
#include <list>
#include <vector>
#include <string>
+#ifdef HAVE_CXX11
+# include <array>
+# include <forward_list>
+# include <unordered_map>
+# include <unordered_set>
+#endif
+
#include <odb/core.hxx>
#pragma db value
@@ -31,6 +40,12 @@ operator== (const comp& x, const comp& y)
}
inline bool
+operator!= (const comp& x, const comp& y)
+{
+ return !(x == y);
+}
+
+inline bool
operator< (const comp& x, const comp& y)
{
return x.num != y.num ? x.num < y.num : x.str < y.str;
@@ -43,10 +58,40 @@ typedef std::vector<std::string> str_vector;
typedef std::set<int> num_set;
typedef std::set<std::string> str_set;
+typedef std::set<comp> comp_set;
typedef std::map<int, std::string> num_str_map;
typedef std::map<std::string, int> str_num_map;
typedef std::map<int, comp> num_comp_map;
+typedef std::map<comp, std::string> comp_str_map;
+
+#ifdef HAVE_CXX11
+struct comp_hash
+{
+ std::size_t
+ operator() (comp const& x) const {return nh (x.num) + sh (x.str);}
+
+ std::hash<int> nh;
+ std::hash<std::string> sh;
+};
+
+typedef std::array<int, 3> num_array;
+typedef std::array<std::string, 3> str_array;
+typedef std::array<comp, 3> comp_array;
+
+typedef std::forward_list<int> num_flist;
+typedef std::forward_list<std::string> str_flist;
+typedef std::forward_list<comp> comp_flist;
+
+typedef std::unordered_set<int> num_uset;
+typedef std::unordered_set<std::string> str_uset;
+typedef std::unordered_set<comp, comp_hash> comp_uset;
+
+typedef std::unordered_map<int, std::string> num_str_umap;
+typedef std::unordered_map<std::string, int> str_num_umap;
+typedef std::unordered_map<int, comp> num_comp_umap;
+typedef std::unordered_map<comp, std::string, comp_hash> comp_str_umap;
+#endif
#pragma db value
struct cont_comp1
@@ -103,14 +148,41 @@ struct object
//
num_set ns;
str_set ss;
- std::set<comp> cs;
+ comp_set cs;
// map
//
num_str_map nsm;
str_num_map snm;
num_comp_map ncm;
- std::map<comp, std::string> csm;
+ comp_str_map csm;
+
+#ifdef HAVE_CXX11
+ // array
+ //
+ num_array na;
+ str_array sa;
+ comp_array ca;
+
+ // forward_list
+ //
+ num_flist nfl;
+ str_flist sfl;
+ comp_flist cfl;
+
+ // unordered_set
+ //
+ num_uset nus;
+ str_uset sus;
+ comp_uset cus;
+
+ // unordered_map
+ //
+ num_str_umap nsum;
+ str_num_umap snum;
+ num_comp_umap ncum;
+ comp_str_umap csum;
+#endif
std::string str;
};
@@ -152,6 +224,25 @@ operator== (const object& x, const object& y)
x.ncm == y.ncm &&
x.csm == y.csm &&
+#ifdef HAVE_CXX11
+ x.na == y.na &&
+ x.sa == y.sa &&
+ x.ca == y.ca &&
+
+ x.nfl == y.nfl &&
+ x.sfl == y.sfl &&
+ x.cfl == y.cfl &&
+
+ x.nus == y.nus &&
+ x.sus == y.sus &&
+ x.cus == y.cus &&
+
+ x.nsum == y.nsum &&
+ x.snum == y.snum &&
+ x.ncum == y.ncum &&
+ x.csum == y.csum &&
+#endif
+
x.str == y.str;
}