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
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
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
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
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
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
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
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
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
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 }