Ticket #7948: Tests.cpp

File Tests.cpp, 2.2 KB (added by Marvin Sielenkemper <m.sielenkemper@…>, 10 years ago)

Two test cases illustrating the problem.

Line 
1#pragma warning(push, 0)
2#include <boost/icl/split_interval_map.hpp>
3#include <boost/operators.hpp>
4#include <boost/test/unit_test.hpp>
5#pragma warning(pop)
6
7
8namespace
9{
10 struct SplitIntervalMapFixture
11 {
12 struct TestEntry
13 : boost::equality_comparable<TestEntry>
14 , boost::additive<TestEntry>
15 {
16 static size_t createCount;
17 static size_t addCount;
18 static size_t subCount;
19
20 TestEntry() { ++createCount; }
21
22 TestEntry& operator+=(TestEntry const& other) { ++addCount; return *this; }
23 TestEntry& operator-=(TestEntry const& other) { ++subCount; return *this; }
24 };
25
26 typedef boost::icl::split_interval_map<int, TestEntry> TestContainer;
27 typedef TestContainer::interval_type TestInterval;
28
29 TestContainer container;
30 TestEntry entry;
31 };
32
33 size_t SplitIntervalMapFixture::TestEntry::createCount;
34 size_t SplitIntervalMapFixture::TestEntry::addCount;
35 size_t SplitIntervalMapFixture::TestEntry::subCount;
36
37 bool operator==(SplitIntervalMapFixture::TestEntry const& fst, SplitIntervalMapFixture::TestEntry const& snd)
38 {
39 return false;
40 }
41}
42
43
44BOOST_FIXTURE_TEST_SUITE(SplitIntervalMap_Tests, SplitIntervalMapFixture)
45
46 BOOST_AUTO_TEST_CASE(add_noHint_Test)
47 {
48 TestEntry::createCount = 0;
49 TestEntry::addCount = 0;
50 TestEntry::subCount = 0;
51
52 add(container, std::make_pair(TestInterval::right_open(10, 20), entry));
53
54 BOOST_CHECK_EQUAL(TestEntry::createCount, 1); // for the absorption test
55 BOOST_CHECK_EQUAL(TestEntry::addCount, 0);
56 BOOST_CHECK_EQUAL(TestEntry::subCount, 0);
57 }
58
59
60 BOOST_AUTO_TEST_CASE(add_hint_Test)
61 {
62 TestEntry::createCount = 0;
63 TestEntry::addCount = 0;
64 TestEntry::subCount = 0;
65
66 container.add(container.begin(), std::make_pair(TestInterval::right_open(10, 20), entry));
67
68 BOOST_CHECK_EQUAL(TestEntry::createCount, 1); // but is 5
69 BOOST_CHECK_EQUAL(TestEntry::addCount, 0); // but is 1
70 BOOST_CHECK_EQUAL(TestEntry::subCount, 0);
71 }
72
73BOOST_AUTO_TEST_SUITE_END()