Line2DTest.cpp

Go to the documentation of this file.
00001 #include <gtest/gtest.h>
00002 #include <utils/geom/Line2D.h>
00003 #include <utils/geom/GeomHelper.h>
00004 
00005 using namespace std;
00006 
00007 /*
00008 Tests the class Line2D
00009 */
00010 
00011 /* Test the method 'intersectsAt' with no intersection, expected thrown exception*/
00012 //TODO must return NULL
00013 /*
00014 TEST(Line2D, test_method_intersectsAt_no_intersection) {
00015     Line2D line(Position2D(0,0),Position2D(2,2));
00016     Position2D pos = line.intersectsAt(Line2D(Position2D(0,3),Position2D(0,6)));
00017     EXPECT_EQUALS(NULL,pos);
00018 }
00019 */
00020 
00021 /* Test the method 'intersectsAt' with intersection on an end position, expected thrown exception*/
00022 //TODO must return NULL
00023 /*
00024 TEST(Line2D, test_method_intersectsAt_at_end_position) {
00025     Line2D line(Position2D(0,0),Position2D(2,2));
00026     Position2D pos = line.intersectsAt(Line2D(Position2D(0,-1),Position2D(0,6)));
00027     EXPECT_EQUALS(NULL,pos);
00028 }
00029 */
00030 
00031 /* Test the method 'add' with positive numbers*/
00032 TEST(Line2D, test_method_add_positive) {
00033     Line2D line(Position2D(0,0),Position2D(2,2));
00034     line.add(2,2);
00035     EXPECT_FLOAT_EQ(2,(line.p1()).x());
00036     EXPECT_FLOAT_EQ(2,(line.p1()).y());
00037     EXPECT_FLOAT_EQ(4,(line.p2()).x());
00038     EXPECT_FLOAT_EQ(4,(line.p2()).y());
00039 }
00040 
00041 /* Test the method 'add' with negative numbers*/
00042 TEST(Line2D, test_method_add_negative) {
00043     Line2D line(Position2D(0,0),Position2D(2,2));
00044     line.add(Position2D(-2,-2));
00045     EXPECT_FLOAT_EQ(-2,(line.p1()).x());
00046     EXPECT_FLOAT_EQ(-2,(line.p1()).y());
00047     EXPECT_FLOAT_EQ(0,(line.p2()).x());
00048     EXPECT_FLOAT_EQ(0,(line.p2()).y());
00049 }
00050 
00051 /* Test the method 'sub' with negative numbers*/
00052 TEST(Line2D, test_method_sub_negative) {
00053     Line2D line(Position2D(0,0),Position2D(2,2));
00054     line.sub(-2,-2);
00055     EXPECT_FLOAT_EQ(2,(line.p1()).x());
00056     EXPECT_FLOAT_EQ(2,(line.p1()).y());
00057     EXPECT_FLOAT_EQ(4,(line.p2()).x());
00058     EXPECT_FLOAT_EQ(4,(line.p2()).y());
00059 }
00060 
00061 /* Test the method 'sub' with positive numbers*/
00062 TEST(Line2D, test_method_sub_positive) {
00063     Line2D line(Position2D(0,0),Position2D(2,2));
00064     line.sub(2,2);
00065     EXPECT_FLOAT_EQ(-2,(line.p1()).x());
00066     EXPECT_FLOAT_EQ(-2,(line.p1()).y());
00067     EXPECT_FLOAT_EQ(0,(line.p2()).x());
00068     EXPECT_FLOAT_EQ(0,(line.p2()).y());
00069 }
00070 
00071 /* Test the method 'reverse' */
00072 TEST(Line2D, test_method_reverse) {
00073     Line2D line(Position2D(0,0),Position2D(2,2));
00074     Line2D lineReverse = line.reverse();
00075     EXPECT_FLOAT_EQ(2,(lineReverse.p1()).x());
00076     EXPECT_FLOAT_EQ(2,(lineReverse.p1()).y());
00077     EXPECT_FLOAT_EQ(0,(lineReverse.p2()).x());
00078     EXPECT_FLOAT_EQ(0,(lineReverse.p2()).y());
00079 }
00080 
00081 /* Test the method 'intersectsAtLength' */
00082 TEST(Line2D, test_method_intersectsAtLength) {
00083     Line2D line(Position2D(0,0),Position2D(2,2));
00084     SUMOReal point = line.intersectsAtLength(Line2D(Position2D(0,2),Position2D(2,0)));
00085     EXPECT_FLOAT_EQ(sqrt(SUMOReal(2)), point);  
00086 }
00087 
00088 /* Test the method 'intersectsAtLength' at the beginning */
00089 TEST(Line2D, test_method_intersectsAtLength_zero) {
00090     Line2D line(Position2D(0,0),Position2D(2,2));
00091     SUMOReal point = line.intersectsAtLength(Line2D(Position2D(0,0),Position2D(2,0)));
00092     EXPECT_FLOAT_EQ(0, point);  
00093 }
00094 
00095 /* Test the method 'intersectsAtLength' with no intersect. Must be -1*/
00096 TEST(Line2D, test_method_intersectsAtLength_no_intersect) {
00097     Line2D line(Position2D(0,0),Position2D(2,2));
00098     SUMOReal point = line.intersectsAtLength(Line2D(Position2D(0,3),Position2D(0,6)));
00099     EXPECT_FLOAT_EQ(-1, point); 
00100 }
00101 
00102 /* Test the method 'rotateAtP1' */
00103 TEST(Line2D, test_method_rotateAtP1) {
00104     Line2D line(Position2D(0,0),Position2D(2,2));
00105     line.rotateAtP1(PI/2);
00106     EXPECT_FLOAT_EQ(-2,(line.p2()).x());
00107     EXPECT_FLOAT_EQ(2,(line.p2()).y());
00108 }
00109 
00110 /* Test the method 'rotateAtP1' with negative rotation */
00111 TEST(Line2D, test_method_rotateAtP1_negative) {
00112     Line2D line(Position2D(0,0),Position2D(2,2));
00113     line.rotateAtP1(-3*PI/4);
00114     EXPECT_FLOAT_EQ(1,SUMOReal((line.p2()).x())+1);
00115     EXPECT_FLOAT_EQ(-2*sqrt(SUMOReal(2)),(line.p2()).y());
00116 }
00117 
00118 /* Test the method 'length' */
00119 TEST(Line2D, test_method_length) {
00120     Line2D line(Position2D(0,0),Position2D(0,2));
00121     EXPECT_FLOAT_EQ(2,line.length());
00122     Line2D line2(Position2D(0,0),Position2D(-1,0));
00123     EXPECT_FLOAT_EQ(1,line2.length());
00124     Line2D line3(Position2D(2,2),Position2D(2,2));
00125     EXPECT_FLOAT_EQ(0,line3.length());
00126 }
00127 
00128 /* Test the method 'intersects' */
00129 TEST(Line2D, test_method_intersects) {
00130     Line2D line(Position2D(0,0),Position2D(2,2));
00131     EXPECT_TRUE(line.intersects(Line2D(Position2D(2,0),Position2D(0,2))));
00132     Line2D line2(Position2D(0,0),Position2D(2,2));
00133     EXPECT_FALSE(line.intersects(Line2D(Position2D(0,3),Position2D(0,6))));
00134     Line2D line3(Position2D(0,0),Position2D(2,2));
00135     EXPECT_TRUE(line.intersects(Line2D(Position2D(0,-1),Position2D(0,6))));
00136 }
00137 
00138 /* Test the method 'intersectsAt' */
00139 TEST(Line2D, test_method_intersectsAt) {
00140     Line2D line(Position2D(0,0),Position2D(2,2));
00141     Position2D pos = line.intersectsAt(Line2D(Position2D(2,0),Position2D(0,2)));
00142     EXPECT_FLOAT_EQ(1,pos.x());
00143     EXPECT_FLOAT_EQ(1,pos.y());
00144 }
00145 
00146 /* Test the method 'move2side' */
00147 TEST(Line2D, test_method_move2side) {
00148     Line2D line(Position2D(0,0),Position2D(2,2));
00149     line.move2side(SUMOReal(3));
00150     //TODO what do the method? correct the assertions.
00151     /*
00152     EXPECT_FLOAT_EQ(0,(line.p1()).x());
00153     EXPECT_FLOAT_EQ(3,(line.p1()).y());
00154     EXPECT_FLOAT_EQ(2,(line.p2()).x());
00155     EXPECT_FLOAT_EQ(5,(line.p2()).y());
00156     */
00157 }

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