map_comparison.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*=============================================================================
  2. Copyright (c) 1999-2003 Jaakko Jarvi
  3. Copyright (c) 2001-2011 Joel de Guzman
  4. Copyright (c) 2006 Dan Marsden
  5. Distributed under the Boost Software License, Version 1.0. (See accompanying
  6. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  7. ==============================================================================*/
  8. #include <boost/fusion/container/map/map.hpp>
  9. #include <boost/detail/lightweight_test.hpp>
  10. #include <boost/fusion/sequence/comparison.hpp>
  11. struct key1 {};
  12. struct key2 {};
  13. struct key3 {};
  14. void
  15. equality_test()
  16. {
  17. using namespace boost::fusion;
  18. map<pair<key1, int>, pair<key2, char> > v1(5, 'a');
  19. map<pair<key1, int>, pair<key2, char> > v2(5, 'a');
  20. BOOST_TEST(v1 == v2);
  21. map<pair<key1, int>, pair<key2, char> > v3(5, 'b');
  22. map<pair<key1, int>, pair<key2, char> > t4(2, 'a');
  23. BOOST_TEST(v1 != v3);
  24. BOOST_TEST(v1 != t4);
  25. BOOST_TEST(!(v1 != v2));
  26. map<pair<key1, int>, pair<key2, char>, pair<key2, bool> > v5(5, 'a', true);
  27. BOOST_TEST(v1 != v5);
  28. BOOST_TEST(!(v1 == v5));
  29. BOOST_TEST(v5 != v1);
  30. BOOST_TEST(!(v5 == v1));
  31. }
  32. void
  33. ordering_test()
  34. {
  35. using namespace boost::fusion;
  36. map<pair<key1, int>, pair<key2, float> > v1(4, 3.3f);
  37. map<pair<key1, short>, pair<key2, float> > v2(5, 3.3f);
  38. map<pair<key1, long>, pair<key2, double> > v3(5, 4.4);
  39. BOOST_TEST(v1 < v2);
  40. BOOST_TEST(v1 <= v2);
  41. BOOST_TEST(v2 > v1);
  42. BOOST_TEST(v2 >= v1);
  43. BOOST_TEST(v2 < v3);
  44. BOOST_TEST(v2 <= v3);
  45. BOOST_TEST(v3 > v2);
  46. BOOST_TEST(v3 >= v2);
  47. #if defined(FUSION_TEST_FAIL)
  48. map<int, char, bool> v5(5, 'a', true);
  49. v1 >= v5;
  50. #endif
  51. }
  52. int
  53. main()
  54. {
  55. equality_test();
  56. ordering_test();
  57. return boost::report_errors();
  58. }