00001 //---------------------------------------------------------------------------- 00002 /** @file 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 // now set it to something explicit 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 //---------------------------------------------------------------------------