RGBColorTest.cpp

Go to the documentation of this file.
00001 #include <gtest/gtest.h>
00002 #include <utils/common/RGBColor.h>
00003 #include <utils/common/UtilExceptions.h>
00004 #include <iostream>
00005 #include <fstream>
00006 #include <sstream>
00007 
00008 using namespace std;
00009 
00010 /*
00011 Tests the class RGBColor
00012 */
00013 
00014 /* Test the method 'parseColor' with a wrong String. An exception must occur.*/
00015 //TODO must throw an invalid argumgent exception
00016 /*
00017 TEST(RGBColor, test_parseColor_with_wrong_string) {
00018     ASSERT_THROW(RGBColor::parseColor("a,b,y"),InvalidArgument) << "Expect an InvalidArgument exception.";
00019 }
00020 */
00021 
00022 /* Test the method 'parseColor'*/
00023 TEST(RGBColor, test_parseColor) {
00024     RGBColor color = RGBColor::parseColor("1,2,3");
00025     EXPECT_FLOAT_EQ(SUMOReal(1), color.red());
00026     EXPECT_FLOAT_EQ(SUMOReal(2), color.green());
00027     EXPECT_FLOAT_EQ(SUMOReal(3), color.blue());
00028 }
00029 
00030 /* Test the method 'parseColor' with a longer String*/
00031 TEST(RGBColor, test_parseColor_with_a_long_string) {
00032     RGBColor color = RGBColor::parseColor("1,2,3,5,432test");
00033     EXPECT_FLOAT_EQ(SUMOReal(1), color.red());
00034     EXPECT_FLOAT_EQ(SUMOReal(2), color.green());
00035     EXPECT_FLOAT_EQ(SUMOReal(3), color.blue());
00036 }
00037 
00038 /* Test the method 'parseColor' with an empty String*/
00039 TEST(RGBColor, test_parseColor_with_empty_string) {
00040     std::string s;  
00041     ASSERT_THROW(RGBColor::parseColor(s),EmptyData) << "Expect an EmptyData exception.";    
00042 }
00043 
00044 /* Test the method 'parseColor' with thrown EmptyData Exception*/
00045 TEST(RGBColor, test_parseColor_with_a_short_string) {   
00046     ASSERT_THROW(RGBColor::parseColor("1,2"),EmptyData) << "Expect an EmptyData exception.";
00047     ASSERT_THROW(RGBColor::parseColor("test"),EmptyData) << "Expect an EmptyData exception.";
00048 }
00049 
00050 /* Test the method 'interpolate'*/
00051 TEST(RGBColor, test_interpolate) {  
00052     RGBColor color1 = RGBColor(1,2,3);
00053     RGBColor color2 = RGBColor(2,4,2);
00054     RGBColor colorResult = RGBColor::interpolate(color1, color2, 0.5);
00055     EXPECT_FLOAT_EQ(SUMOReal(1.5), colorResult.red());
00056     EXPECT_FLOAT_EQ(SUMOReal(3), colorResult.green());
00057     EXPECT_FLOAT_EQ(SUMOReal(2.5), colorResult.blue());
00058 }
00059 
00060 /* Test the method 'interpolate' with a weight of 1 and higher*/
00061 TEST(RGBColor, test_interpolate_weight_1) { 
00062     RGBColor color1 = RGBColor(1,2,3);
00063     RGBColor color2 = RGBColor(2,4,2);
00064     RGBColor colorResult = RGBColor::interpolate(color1, color2, 1);
00065     RGBColor colorResult2 = RGBColor::interpolate(color1, color2, 1000);
00066     EXPECT_TRUE(colorResult==colorResult2);
00067     EXPECT_FLOAT_EQ(SUMOReal(2), colorResult.red());
00068     EXPECT_FLOAT_EQ(SUMOReal(4), colorResult.green());
00069     EXPECT_FLOAT_EQ(SUMOReal(2), colorResult.blue());
00070 }
00071 
00072 /* Test the method 'interpolate' with a weight of 0 and lower*/
00073 TEST(RGBColor, test_interpolate_weight_0) { 
00074     RGBColor color1 = RGBColor(1,2,3);
00075     RGBColor color2 = RGBColor(2,4,2);
00076     RGBColor colorResult = RGBColor::interpolate(color1, color2, 0);
00077     RGBColor colorResult2 = RGBColor::interpolate(color1, color2, -1000);
00078     EXPECT_TRUE(colorResult==colorResult2);
00079     EXPECT_FLOAT_EQ(SUMOReal(1), colorResult.red());
00080     EXPECT_FLOAT_EQ(SUMOReal(2), colorResult.green());
00081     EXPECT_FLOAT_EQ(SUMOReal(3), colorResult.blue());
00082 }
00083 
00084 /* Test the operator '=='. It has an tolerance of 0.1*/
00085 TEST(RGBColor, test_operator_equal) {   
00086     RGBColor color1 = RGBColor(1,2,3);
00087     RGBColor color2 = RGBColor(1.09,1.901,3);   
00088     EXPECT_TRUE(color1==color2 );   
00089     color2 = RGBColor(1.19,2,3);    
00090     EXPECT_FALSE(color1==color2 );
00091 }

Generated on Wed May 5 00:06:36 2010 for Sumo - Simulation of Urban MObility by  doxygen 1.5.6