v3color_tut.cpp

Go to the documentation of this file.
00001 
00034 #include <tut/tut.h>
00035 #include "linden_common.h"
00036 #include "lltut.h"
00037 #include "v3color.h"
00038 
00039 
00040 namespace tut
00041 {
00042         struct v3color_data
00043         {
00044         };
00045         typedef test_group<v3color_data> v3color_test;
00046         typedef v3color_test::object v3color_object;
00047         tut::v3color_test v3color_testcase("v3color");
00048 
00049         template<> template<>
00050         void v3color_object::test<1>()
00051         {
00052                 LLColor3 llcolor3;
00053                 ensure("1:LLColor3:Fail to initialize ", (0.0f == llcolor3.mV[0]) && (0.0f == llcolor3.mV[1]) && (0.0f == llcolor3.mV[2]));
00054                 F32 r = 2.0f, g = 3.2f, b = 1.f;
00055                 F32 v1,v2,v3;
00056                 LLColor3 llcolor3a(r,g,b);
00057                 ensure("2:LLColor3:Fail to initialize " ,(2.0f == llcolor3a.mV[0]) && (3.2f == llcolor3a.mV[1]) && (1.f == llcolor3a.mV[2]));
00058                 
00059                 const F32 vec[3] = {2.0f, 3.2f,1.f};
00060                 LLColor3 llcolor3b(vec);
00061                 ensure("3:LLColor3:Fail to initialize " ,(2.0f == llcolor3b.mV[0]) && (3.2f == llcolor3b.mV[1]) && (1.f == llcolor3b.mV[2]));
00062                 char* str = "561122";
00063                 LLColor3 llcolor3c(str);
00064                 v1 = (F32)86.0f/255.0f; // 0x56 = 86
00065                 v2 = (F32)17.0f/255.0f; // 0x11 = 17
00066                 v3 = (F32)34.0f/255.f;  // 0x22 = 34
00067                 ensure("4:LLColor3:Fail to initialize " ,(v1 == llcolor3c.mV[0]) && (v2 == llcolor3c.mV[1]) && (v3 == llcolor3c.mV[2]));
00068         }
00069 
00070         template<> template<>
00071         void v3color_object::test<2>()
00072         {
00073                 LLColor3 llcolor3;
00074                 llcolor3.setToBlack();
00075                 ensure("setToBlack:Fail to set black ", ((llcolor3.mV[0] == 0.f) && (llcolor3.mV[1] == 0.f) && (llcolor3.mV[2] == 0.f)));
00076                 llcolor3.setToWhite();
00077                 ensure("setToWhite:Fail to set white  ", ((llcolor3.mV[0] == 1.f) && (llcolor3.mV[1] == 1.f) && (llcolor3.mV[2] == 1.f)));
00078         }
00079 
00080         template<> template<>
00081         void v3color_object::test<3>()
00082         {
00083                 F32 r = 2.3436212f, g = 1231.f, b = 4.7849321232f;
00084                 LLColor3 llcolor3, llcolor3a;
00085                 llcolor3.setVec(r,g,b);
00086                 ensure("1:setVec(r,g,b) Fail ",((r == llcolor3.mV[0]) && (g == llcolor3.mV[1]) && (b == llcolor3.mV[2])));
00087                 llcolor3a.setVec(llcolor3);
00088                 ensure_equals("2:setVec(LLColor3) Fail ", llcolor3,llcolor3a);
00089                 F32 vec[3] = {1.2324f, 2.45634f, .234563f};
00090                 llcolor3.setToBlack();
00091                 llcolor3.setVec(vec);
00092                 ensure("3:setVec(F32*) Fail ",((vec[0] == llcolor3.mV[0]) && (vec[1] == llcolor3.mV[1]) && (vec[2] == llcolor3.mV[2])));
00093         }
00094 
00095         template<> template<>
00096         void v3color_object::test<4>()
00097         {
00098                 F32 r = 2.3436212f, g = 1231.f, b = 4.7849321232f;
00099                 LLColor3 llcolor3(r,g,b);
00100                 ensure("magVecSquared:Fail ", is_approx_equal(llcolor3.magVecSquared(), (r*r + g*g + b*b)));
00101                 ensure("magVec:Fail ", is_approx_equal(llcolor3.magVec(), fsqrtf(r*r + g*g + b*b)));
00102         }
00103 
00104         template<> template<>
00105         void v3color_object::test<5>()
00106         {
00107                 F32 r = 2.3436212f, g = 1231.f, b = 4.7849321232f;
00108                 F32 val1, val2,val3;
00109                 LLColor3 llcolor3(r,g,b);
00110                 F32 vecMag = llcolor3.normVec();
00111                 F32 mag = fsqrtf(r*r + g*g + b*b);
00112                 F32 oomag = 1.f / mag;
00113                 val1 = r * oomag;
00114                 val2 = g * oomag;
00115                 val3 = b * oomag;
00116                 ensure("1:normVec failed ", (is_approx_equal(val1, llcolor3.mV[0]) && is_approx_equal(val2, llcolor3.mV[1]) && is_approx_equal(val3, llcolor3.mV[2]) && is_approx_equal(vecMag, mag)));
00117                 r = .000000000f, g = 0.f, b = 0.0f;
00118                 llcolor3.setVec(r,g,b);
00119                 vecMag = llcolor3.normVec();
00120                 ensure("2:normVec failed should be 0. ", (0. == llcolor3.mV[0] && 0. == llcolor3.mV[1] && 0. == llcolor3.mV[2] && vecMag == 0.));
00121         }
00122 
00123         template<> template<>
00124         void v3color_object::test<6>()
00125         {
00126                 F32 r = 2.3436212f, g = -1231.f, b = .7849321232f;
00127                 std::ostringstream stream1, stream2;
00128                 LLColor3 llcolor3(r,g,b),llcolor3a;
00129                 stream1 << llcolor3;
00130                 llcolor3a.setVec(r,g,b);
00131                 stream2 << llcolor3a;
00132                 ensure("operator << failed ", (stream1.str() == stream2.str()));        
00133         }
00134                 
00135         template<> template<>
00136         void v3color_object::test<7>()
00137         {
00138                 F32 r = 2.3436212f, g = -1231.f, b = .7849321232f;
00139                 LLColor3 llcolor3(r,g,b),llcolor3a;
00140                 llcolor3a = llcolor3;
00141                 ensure("operator == failed ", (llcolor3a == llcolor3)); 
00142         }
00143 
00144         template<> template<>
00145         void v3color_object::test<8>()
00146         {
00147                 F32 r1 =1.f, g1 = 2.f,b1 = 1.2f, r2 = -2.3f, g2 = 1.11f, b2 = 1234.234f;
00148                 LLColor3 llcolor3(r1,g1,b1),llcolor3a(r2,g2,b2),llcolor3b;
00149                 llcolor3b = llcolor3 + llcolor3a ;
00150                 ensure("1:operator+ failed",is_approx_equal(r1+r2 ,llcolor3b.mV[0]) && is_approx_equal(g1+g2,llcolor3b.mV[1])&& is_approx_equal(b1+b2,llcolor3b.mV[2]));
00151                 r1 = -.235f, g1 = -24.32f, b1 = 2.13f,  r2 = -2.3f, g2 = 1.f, b2 = 34.21f;
00152                 llcolor3.setVec(r1,g1,b1);
00153                 llcolor3a.setVec(r2,g2,b2);
00154                 llcolor3b = llcolor3 + llcolor3a;
00155                 ensure("2:operator+ failed",is_approx_equal(r1+r2 ,llcolor3b.mV[0]) && is_approx_equal(g1+g2,llcolor3b.mV[1])&& is_approx_equal(b1+b2,llcolor3b.mV[2]));
00156         }
00157 
00158         template<> template<>
00159         void v3color_object::test<9>()
00160         {
00161                 F32 r1 =1.f, g1 = 2.f,b1 = 1.2f, r2 = -2.3f, g2 = 1.11f, b2 = 1234.234f;
00162                 LLColor3 llcolor3(r1,g1,b1),llcolor3a(r2,g2,b2),llcolor3b;
00163                 llcolor3b = llcolor3 - llcolor3a ;
00164                 ensure("1:operator- failed",is_approx_equal(r1-r2 ,llcolor3b.mV[0]) && is_approx_equal(g1-g2,llcolor3b.mV[1])&& is_approx_equal(b1-b2,llcolor3b.mV[2]));
00165                 r1 = -.235f, g1 = -24.32f, b1 = 2.13f,  r2 = -2.3f, g2 = 1.f, b2 = 34.21f;
00166                 llcolor3.setVec(r1,g1,b1);
00167                 llcolor3a.setVec(r2,g2,b2);
00168                 llcolor3b = llcolor3 - llcolor3a;
00169                 ensure("2:operator- failed",is_approx_equal(r1-r2 ,llcolor3b.mV[0]) && is_approx_equal(g1-g2,llcolor3b.mV[1])&& is_approx_equal(b1-b2,llcolor3b.mV[2]));
00170         }
00171 
00172         template<> template<>
00173         void v3color_object::test<10>()
00174         {
00175                 F32 r1 =1.f, g1 = 2.f,b1 = 1.2f, r2 = -2.3f, g2 = 1.11f, b2 = 1234.234f;
00176                 LLColor3 llcolor3(r1,g1,b1),llcolor3a(r2,g2,b2),llcolor3b;
00177                 llcolor3b = llcolor3 * llcolor3a;
00178                 ensure("1:operator* failed",is_approx_equal(r1*r2 ,llcolor3b.mV[0]) && is_approx_equal(g1*g2,llcolor3b.mV[1])&& is_approx_equal(b1*b2,llcolor3b.mV[2]));
00179                 llcolor3a.setToBlack();
00180                 F32 mulVal = 4.332f;
00181                 llcolor3a = llcolor3 * mulVal;
00182                 ensure("2:operator* failed",is_approx_equal(r1*mulVal ,llcolor3a.mV[0]) && is_approx_equal(g1*mulVal,llcolor3a.mV[1])&& is_approx_equal(b1*mulVal,llcolor3a.mV[2]));
00183                 llcolor3a.setToBlack();
00184                 llcolor3a = mulVal * llcolor3;
00185                 ensure("3:operator* failed",is_approx_equal(r1*mulVal ,llcolor3a.mV[0]) && is_approx_equal(g1*mulVal,llcolor3a.mV[1])&& is_approx_equal(b1*mulVal,llcolor3a.mV[2]));
00186         }
00187 
00188         template<> template<>
00189         void v3color_object::test<11>()
00190         {
00191                 F32 r = 2.3436212f, g = 1231.f, b = 4.7849321232f;
00192                 LLColor3 llcolor3(r,g,b),llcolor3a;
00193                 llcolor3a = -llcolor3;
00194                 ensure("operator- failed ", (-llcolor3a == llcolor3));  
00195         }
00196 
00197         template<> template<>
00198         void v3color_object::test<12>()
00199         {
00200                 F32 r = 2.3436212f, g = 1231.f, b = 4.7849321232f;
00201                 LLColor3 llcolor3(r,g,b),llcolor3a(r,g,b);
00202                 ensure_equals("1:operator== failed",llcolor3a,llcolor3);
00203                 r = 13.3436212f, g = -11.f, b = .7849321232f;
00204                 llcolor3.setVec(r,g,b);
00205                 llcolor3a.setVec(r,g,b);
00206                 ensure_equals("2:operator== failed",llcolor3a,llcolor3);
00207         }
00208 
00209         template<> template<>
00210         void v3color_object::test<13>()
00211         {
00212                 F32 r1 =1.f, g1 = 2.f,b1 = 1.2f, r2 = -2.3f, g2 = 1.11f, b2 = 1234.234f;
00213                 LLColor3 llcolor3(r1,g1,b1),llcolor3a(r2,g2,b2);
00214                 ensure("1:operator!= failed",(llcolor3 != llcolor3a));
00215                 llcolor3.setToBlack();
00216                 llcolor3a.setVec(llcolor3);
00217                 ensure("2:operator!= failed", ( FALSE == (llcolor3a != llcolor3)));
00218         }
00219 
00220         template<> template<>
00221         void v3color_object::test<14>()
00222         {
00223                 F32 r1 =1.f, g1 = 2.f,b1 = 1.2f, r2 = -2.3f, g2 = 1.11f, b2 = 1234.234f;
00224                 LLColor3 llcolor3(r1,g1,b1),llcolor3a(r2,g2,b2);
00225                 llcolor3a += llcolor3;
00226                 ensure("1:operator+= failed",is_approx_equal(r1+r2 ,llcolor3a.mV[0]) && is_approx_equal(g1+g2,llcolor3a.mV[1])&& is_approx_equal(b1+b2,llcolor3a.mV[2]));
00227                 llcolor3.setVec(r1,g1,b1);
00228                 llcolor3a.setVec(r2,g2,b2);
00229                 llcolor3a += llcolor3;
00230                 ensure("2:operator+= failed",is_approx_equal(r1+r2 ,llcolor3a.mV[0]) && is_approx_equal(g1+g2,llcolor3a.mV[1])&& is_approx_equal(b1+b2,llcolor3a.mV[2]));
00231         }
00232 
00233         template<> template<>
00234         void v3color_object::test<15>()
00235         {
00236                 F32 r1 =1.f, g1 = 2.f,b1 = 1.2f, r2 = -2.3f, g2 = 1.11f, b2 = 1234.234f;
00237                 LLColor3 llcolor3(r1,g1,b1),llcolor3a(r2,g2,b2);
00238                 llcolor3a -= llcolor3;
00239                 ensure("1:operator-= failed", is_approx_equal(r2-r1, llcolor3a.mV[0]));
00240                 ensure("2:operator-= failed", is_approx_equal(g2-g1, llcolor3a.mV[1]));
00241                 ensure("3:operator-= failed", is_approx_equal(b2-b1, llcolor3a.mV[2]));
00242                 llcolor3.setVec(r1,g1,b1);
00243                 llcolor3a.setVec(r2,g2,b2);
00244                 llcolor3a -= llcolor3;
00245                 ensure("4:operator-= failed", is_approx_equal(r2-r1, llcolor3a.mV[0]));
00246                 ensure("5:operator-= failed", is_approx_equal(g2-g1, llcolor3a.mV[1]));
00247                 ensure("6:operator-= failed", is_approx_equal(b2-b1, llcolor3a.mV[2]));
00248         }
00249         
00250         template<> template<>
00251         void v3color_object::test<16>()
00252         {
00253                 F32 r1 =1.f, g1 = 2.f,b1 = 1.2f, r2 = -2.3f, g2 = 1.11f, b2 = 1234.234f;
00254                 LLColor3 llcolor3(r1,g1,b1),llcolor3a(r2,g2,b2);
00255                 llcolor3a *= llcolor3;
00256                 ensure("1:operator*= failed",is_approx_equal(r1*r2 ,llcolor3a.mV[0]) && is_approx_equal(g1*g2,llcolor3a.mV[1])&& is_approx_equal(b1*b2,llcolor3a.mV[2]));
00257                 F32 mulVal = 4.332f;
00258                 llcolor3 *=mulVal;
00259                 ensure("2:operator*= failed",is_approx_equal(r1*mulVal ,llcolor3.mV[0]) && is_approx_equal(g1*mulVal,llcolor3.mV[1])&& is_approx_equal(b1*mulVal,llcolor3.mV[2]));
00260         }
00261 
00262         template<> template<>
00263         void v3color_object::test<17>()
00264         {
00265                 F32 r = 2.3436212f, g = -1231.f, b = .7849321232f;
00266                 LLColor3 llcolor3(r,g,b);
00267                 llcolor3.clamp();
00268                 ensure("1:clamp:Fail to clamp " ,(1.0f == llcolor3.mV[0]) && (0.f == llcolor3.mV[1]) && (b == llcolor3.mV[2]));
00269                 r = -2.3436212f, g = -1231.f, b = 67.7849321232f;
00270                 llcolor3.setVec(r,g,b);
00271                 llcolor3.clamp();
00272                 ensure("2:clamp:Fail to clamp " ,(0.f == llcolor3.mV[0]) && (0.f == llcolor3.mV[1]) && (1.f == llcolor3.mV[2]));
00273         }
00274 
00275         template<> template<>
00276         void v3color_object::test<18>()
00277         {
00278                 F32 r1 =1.f, g1 = 2.f,b1 = 1.2f, r2 = -2.3f, g2 = 1.11f, b2 = 1234.234f;
00279                 F32 val = 2.3f,val1,val2,val3;
00280                 LLColor3 llcolor3(r1,g1,b1),llcolor3a(r2,g2,b2);
00281                 val1 = r1 + (r2 - r1)* val;
00282                 val2 = g1 + (g2 - g1)* val;
00283                 val3 = b1 + (b2 - b1)* val;
00284                 LLColor3 llcolor3b = lerp(llcolor3,llcolor3a,val);
00285                 ensure("lerp failed ", ((val1 ==llcolor3b.mV[0])&& (val2 ==llcolor3b.mV[1]) && (val3 ==llcolor3b.mV[2])));              
00286         }
00287 
00288         template<> template<>
00289         void v3color_object::test<19>()
00290         {
00291                 F32 r1 =1.f, g1 = 2.f,b1 = 1.2f, r2 = -2.3f, g2 = 1.11f, b2 = 1234.234f;
00292                 LLColor3 llcolor3(r1,g1,b1),llcolor3a(r2,g2,b2);
00293                 F32 val = distVec(llcolor3,llcolor3a);
00294                 ensure("distVec failed ", is_approx_equal(fsqrtf((r1-r2)*(r1-r2) + (g1-g2)*(g1-g2) + (b1-b2)*(b1-b2)) ,val));
00295                 
00296                 F32 val1 = distVec_squared(llcolor3,llcolor3a);
00297                 ensure("distVec_squared failed ", is_approx_equal(((r1-r2)*(r1-r2) + (g1-g2)*(g1-g2) + (b1-b2)*(b1-b2)) ,val1));
00298         }
00299 
00300         template<> template<>
00301         void v3color_object::test<20>()
00302         {
00303                 F32 r1 = 1.02223f, g1 = 22222.212f, b1 = 122222.00002f;
00304                 LLColor3 llcolor31(r1,g1,b1);
00305 
00306                 LLSD sd = llcolor31.getValue();
00307                 LLColor3 llcolor32;
00308                 llcolor32.setValue(sd);
00309                 ensure_equals("LLColor3::setValue/getValue failed", llcolor31, llcolor32);
00310 
00311                 LLColor3 llcolor33(sd);
00312                 ensure_equals("LLColor3(LLSD) failed", llcolor31, llcolor33);
00313         }
00314 }

Generated on Thu Jul 1 06:10:00 2010 for Second Life Viewer by  doxygen 1.4.7