00001
00002
00003 #if defined(_MSC_VER)
00004
00005 # pragma warning(disable:4786)
00006 #endif
00007
00008 #include <cassert>
00009
00010 #include "CoinDenseVector.hpp"
00011
00012 #ifdef NDEBUG
00013 #undef NDEBUG
00014 #endif
00015
00016
00017 template <typename T> void
00018 CoinDenseVectorUnitTest(T dummy)
00019 {
00020
00021
00022 {
00023 CoinDenseVector<T> r;
00024 assert( r.getElements() == 0 );
00025 assert( r.getNumElements() == 0 );
00026 }
00027 const int ne = 4;
00028 T el[ne] = { 10, 40, 1, 50 };
00029
00030
00031 CoinDenseVector<T> r(ne,el);
00032
00033
00034 assert( r.getElements()[0]==10. );
00035 assert( r.getElements()[1]==40. );
00036 assert( r.getElements()[2]== 1. );
00037 assert( r.getElements()[3]==50. );
00038
00039
00040 assert( r.sum() == 10.+40.+1.+50. );
00041 assert( r.oneNorm() == 101.0);
00042 assert( r.twoNorm() == sqrt(100.0 + 1600. + 1. + 2500.));
00043 assert( r.infNorm() == 50.);
00044 assert(r[0]+r[1]+r[2]+r[3]==101.);
00045
00046
00047 CoinDenseVector<T> r1;
00048 r1=r;
00049 assert( r1.getElements()[0]==10. );
00050 assert( r1.getElements()[1]==40. );
00051 assert( r1.getElements()[2]== 1. );
00052 assert( r1.getElements()[3]==50. );
00053
00054
00055 CoinDenseVector<T> add = r + r1;
00056 assert( add[0] == 10.+10. );
00057 assert( add[1] == 40.+40. );
00058 assert( add[2] == 1.+ 1. );
00059 assert( add[3] == 50.+50. );
00060
00061
00062 CoinDenseVector<T> r2(r);
00063 CoinDenseVector<T> diff = r - r2;
00064 assert(diff.sum() == 0.0);
00065
00066 CoinDenseVector<T> mult = r * r2;
00067 assert( mult[0] == 10.*10. );
00068 assert( mult[1] == 40.*40. );
00069 assert( mult[2] == 1.* 1. );
00070 assert( mult[3] == 50.*50. );
00071
00072
00073 CoinDenseVector<T> div = r / r1;
00074 assert(div.sum() == 4.0);
00075
00076 }
00077
00078 template void CoinDenseVectorUnitTest<float>(float);
00079 template void CoinDenseVectorUnitTest<double>(double);
00080