diff options
Diffstat (limited to 'common/container/test.hxx')
-rw-r--r-- | common/container/test.hxx | 95 |
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; } |