TripletTest.cc 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #include "Triplet.h"
  2. #include <cppunit/extensions/HelperMacros.h>
  3. namespace aria2 {
  4. class TripletTest:public CppUnit::TestFixture {
  5. CPPUNIT_TEST_SUITE(TripletTest);
  6. CPPUNIT_TEST(testLess);
  7. CPPUNIT_TEST(testTupleGet);
  8. CPPUNIT_TEST(testTupleNthType);
  9. CPPUNIT_TEST(testTuple2Pair);
  10. CPPUNIT_TEST_SUITE_END();
  11. public:
  12. void setUp() {}
  13. void tearDown() {}
  14. void testLess();
  15. void testTupleGet();
  16. void testTupleNthType();
  17. void testTuple2Pair();
  18. };
  19. CPPUNIT_TEST_SUITE_REGISTRATION(TripletTest);
  20. void TripletTest::testLess()
  21. {
  22. Triplet<int, int, int> tri1(0, 1, 1);
  23. Triplet<int, int, int> tri2(1, 0, 0);
  24. CPPUNIT_ASSERT(!(tri1 < tri1));
  25. CPPUNIT_ASSERT(tri1 < tri2);
  26. CPPUNIT_ASSERT(!(tri2 < tri1));
  27. Triplet<int, int, int> tri3(0, 0, 1);
  28. Triplet<int, int, int> tri4(0, 1, 0);
  29. CPPUNIT_ASSERT(tri3 < tri4);
  30. CPPUNIT_ASSERT(!(tri4 < tri3));
  31. Triplet<int, int, int> tri5(0, 0, 0);
  32. Triplet<int, int, int> tri6(0, 0, 1);
  33. CPPUNIT_ASSERT(tri5 < tri6);
  34. CPPUNIT_ASSERT(!(tri6 < tri5));
  35. }
  36. void TripletTest::testTupleGet()
  37. {
  38. Triplet<int, double, std::string> x(1, 3.14, "foo");
  39. CPPUNIT_ASSERT_EQUAL(1, (TupleGet<1>::get(x)));
  40. CPPUNIT_ASSERT_EQUAL((double)3.14, (TupleGet<2>::get(x)));
  41. CPPUNIT_ASSERT_EQUAL(std::string("foo"), (TupleGet<3>::get(x)));
  42. }
  43. void TripletTest::testTupleNthType()
  44. {
  45. TupleNthType<Triplet<int, double, std::string>, 1>::type x = 1;
  46. CPPUNIT_ASSERT_EQUAL(1, x);
  47. TupleNthType<Triplet<int, double, std::string>, 2>::type y = 3.14;
  48. CPPUNIT_ASSERT_EQUAL((double)3.14, y);
  49. TupleNthType<Triplet<int, double, std::string>, 3>::type z = "foo";
  50. CPPUNIT_ASSERT_EQUAL(std::string("foo"), z);
  51. }
  52. void TripletTest::testTuple2Pair()
  53. {
  54. Triplet<int, double, std::string> x(1, 3.14, "foo");
  55. std::pair<int, double> p1 = Tuple2Pair<1, 2>()(x);
  56. CPPUNIT_ASSERT_EQUAL(1, p1.first);
  57. CPPUNIT_ASSERT_EQUAL((double)3.14, p1.second);
  58. std::pair<double, std::string> p2 = Tuple2Pair<2, 3>()(x);
  59. CPPUNIT_ASSERT_EQUAL((double)3.14, p2.first);
  60. CPPUNIT_ASSERT_EQUAL(std::string("foo"), p2.second);
  61. }
  62. } // namespace aria2