00001
00002
00003
00004
00005
00006 #include <boost/test/auto_unit_test.hpp>
00007
00008 #include "SortedSequence.hpp"
00009
00010 using namespace benzene;
00011
00012
00013
00014 namespace {
00015
00016 BOOST_AUTO_TEST_CASE(SortedSequence_Empty)
00017 {
00018 SortedSequence seq;
00019 BOOST_CHECK(seq.finished());
00020
00021 SortedSequence ss(5, 0);
00022 BOOST_CHECK(!ss.finished());
00023 BOOST_CHECK_EQUAL(ss[0], 0);
00024
00025 ++ss;
00026 BOOST_CHECK(ss.finished());
00027 }
00028
00029 BOOST_AUTO_TEST_CASE(SortedSequence_one)
00030 {
00031 SortedSequence seq(4, 1);
00032
00033 BOOST_CHECK(!seq.finished());
00034 BOOST_CHECK_EQUAL(seq[0], 0);
00035
00036 ++seq;
00037 BOOST_CHECK(!seq.finished());
00038 BOOST_CHECK_EQUAL(seq[0], 1);
00039
00040 ++seq;
00041 BOOST_CHECK(!seq.finished());
00042 BOOST_CHECK_EQUAL(seq[0], 2);
00043
00044 ++seq;
00045 BOOST_CHECK(!seq.finished());
00046 BOOST_CHECK_EQUAL(seq[0], 3);
00047
00048 ++seq;
00049 BOOST_CHECK(seq.finished());
00050
00051
00052 seq[0] = 2;
00053 BOOST_CHECK(!seq.finished());
00054 BOOST_CHECK_EQUAL(seq[0], 2);
00055
00056 ++seq;
00057 BOOST_CHECK(!seq.finished());
00058 BOOST_CHECK_EQUAL(seq[0], 3);
00059
00060 ++seq;
00061 BOOST_CHECK(seq.finished());
00062 }
00063
00064 BOOST_AUTO_TEST_CASE(SortedSequence_two)
00065 {
00066 std::vector<int> v(2);
00067 v[0] = 1;
00068 v[1] = 3;
00069 SortedSequence seq(5, v);
00070
00071 BOOST_CHECK(!seq.finished());
00072 BOOST_CHECK_EQUAL(seq[0], 1);
00073 BOOST_CHECK_EQUAL(seq[1], 3);
00074
00075 ++seq;
00076 BOOST_CHECK(!seq.finished());
00077 BOOST_CHECK_EQUAL(seq[0], 1);
00078 BOOST_CHECK_EQUAL(seq[1], 4);
00079
00080 ++seq;
00081 BOOST_CHECK(!seq.finished());
00082 BOOST_CHECK_EQUAL(seq[0], 2);
00083 BOOST_CHECK_EQUAL(seq[1], 3);
00084
00085 ++seq;
00086 BOOST_CHECK(!seq.finished());
00087 BOOST_CHECK_EQUAL(seq[0], 2);
00088 BOOST_CHECK_EQUAL(seq[1], 4);
00089
00090 ++seq;
00091 BOOST_CHECK(!seq.finished());
00092 BOOST_CHECK_EQUAL(seq[0], 3);
00093 BOOST_CHECK_EQUAL(seq[1], 4);
00094
00095 ++seq;
00096 BOOST_CHECK(seq.finished());
00097 }
00098
00099 BOOST_AUTO_TEST_CASE(SortedSequence_three)
00100 {
00101 SortedSequence seq(5, 3);
00102
00103 BOOST_CHECK(!seq.finished());
00104 BOOST_CHECK_EQUAL(seq[0], 0);
00105 BOOST_CHECK_EQUAL(seq[1], 1);
00106 BOOST_CHECK_EQUAL(seq[2], 2);
00107
00108 ++seq;
00109 BOOST_CHECK(!seq.finished());
00110 BOOST_CHECK_EQUAL(seq[0], 0);
00111 BOOST_CHECK_EQUAL(seq[1], 1);
00112 BOOST_CHECK_EQUAL(seq[2], 3);
00113
00114 ++seq;
00115 BOOST_CHECK(!seq.finished());
00116 BOOST_CHECK_EQUAL(seq[0], 0);
00117 BOOST_CHECK_EQUAL(seq[1], 1);
00118 BOOST_CHECK_EQUAL(seq[2], 4);
00119
00120 ++seq;
00121 BOOST_CHECK(!seq.finished());
00122 BOOST_CHECK_EQUAL(seq[0], 0);
00123 BOOST_CHECK_EQUAL(seq[1], 2);
00124 BOOST_CHECK_EQUAL(seq[2], 3);
00125
00126 ++seq;
00127 BOOST_CHECK(!seq.finished());
00128 BOOST_CHECK_EQUAL(seq[0], 0);
00129 BOOST_CHECK_EQUAL(seq[1], 2);
00130 BOOST_CHECK_EQUAL(seq[2], 4);
00131
00132 ++seq;
00133 BOOST_CHECK(!seq.finished());
00134 BOOST_CHECK_EQUAL(seq[0], 0);
00135 BOOST_CHECK_EQUAL(seq[1], 3);
00136 BOOST_CHECK_EQUAL(seq[2], 4);
00137
00138 ++seq;
00139 BOOST_CHECK(!seq.finished());
00140 BOOST_CHECK_EQUAL(seq[0], 1);
00141 BOOST_CHECK_EQUAL(seq[1], 2);
00142 BOOST_CHECK_EQUAL(seq[2], 3);
00143
00144 ++seq;
00145 BOOST_CHECK(!seq.finished());
00146 BOOST_CHECK_EQUAL(seq[0], 1);
00147 BOOST_CHECK_EQUAL(seq[1], 2);
00148 BOOST_CHECK_EQUAL(seq[2], 4);
00149
00150 ++seq;
00151 BOOST_CHECK(!seq.finished());
00152 BOOST_CHECK_EQUAL(seq[0], 1);
00153 BOOST_CHECK_EQUAL(seq[1], 3);
00154 BOOST_CHECK_EQUAL(seq[2], 4);
00155
00156 ++seq;
00157 BOOST_CHECK(!seq.finished());
00158 BOOST_CHECK_EQUAL(seq[0], 2);
00159 BOOST_CHECK_EQUAL(seq[1], 3);
00160 BOOST_CHECK_EQUAL(seq[2], 4);
00161
00162 ++seq;
00163 BOOST_CHECK(seq.finished());
00164 }
00165
00166 }
00167
00168