00001 #include <gtest/gtest.h>
00002 #include <utils/geom/Boundary.h>
00003
00004 using namespace std;
00005
00006
00007
00008
00009
00010
00011 TEST(Boundary, test_method_add) {
00012 Boundary *bound = new Boundary();
00013 bound->add(1,2);
00014 EXPECT_FLOAT_EQ(bound->xmax(), 1);
00015 EXPECT_FLOAT_EQ(bound->xmin(), 1);
00016 EXPECT_FLOAT_EQ(bound->ymax(), 2);
00017 EXPECT_FLOAT_EQ(bound->ymin(), 2);
00018 }
00019
00020
00021 TEST(Boundary, test_method_add_multiple) {
00022 Boundary *bound = new Boundary();
00023 bound->add(-1,-2);
00024 bound->add(3,5);
00025 bound->add(5,8);
00026 EXPECT_FLOAT_EQ(bound->xmax(), 5);
00027 EXPECT_FLOAT_EQ(bound->xmin(), -1);
00028 EXPECT_FLOAT_EQ(bound->ymax(), 8);
00029 EXPECT_FLOAT_EQ(bound->ymin(), -2);
00030 }
00031
00032
00033 TEST(Boundary, test_method_getCenter) {
00034 Boundary *bound = new Boundary(-2,-4,4,8);
00035 Position2D pos = bound->getCenter();
00036 EXPECT_FLOAT_EQ(pos.x(), 1);
00037 EXPECT_FLOAT_EQ(pos.y(), 2);
00038 }
00039
00040
00041 TEST(Boundary, test_method_getWidthHeight) {
00042 Boundary *bound = new Boundary(-2,-4,4,8);
00043 EXPECT_FLOAT_EQ(bound->getHeight(), 12);
00044 EXPECT_FLOAT_EQ(bound->getWidth(), 6);
00045 }
00046
00047
00048 TEST(Boundary, test_method_around) {
00049 Boundary *bound = new Boundary(1,2,3,6);
00050 EXPECT_TRUE(bound->around(Position2D(2,4)));
00051 EXPECT_FALSE(bound->around(Position2D(0,4)));
00052 EXPECT_FALSE(bound->around(Position2D(2,7)));
00053 EXPECT_TRUE(bound->around(Position2D(0,7),2));
00054 }
00055
00056
00057 TEST(Boundary, test_method_overlapsWith) {
00058 Boundary *bound = new Boundary(1,2,3,6);
00059 EXPECT_FALSE(bound->overlapsWith(Boundary(10,17,13,16)));
00060 EXPECT_TRUE(bound->overlapsWith(Boundary(-1,-7,2,4)));
00061 EXPECT_TRUE(bound->overlapsWith(Boundary(1,2,3,6)));
00062 EXPECT_TRUE(bound->overlapsWith(Boundary(4,2,5,7),1));
00063 }
00064
00065
00066 TEST(Boundary, test_method_crosses) {
00067 Boundary *bound = new Boundary(1,2,3,6);
00068 EXPECT_TRUE(bound->crosses(Position2D(3,2),Position2D(4,2)));
00069 EXPECT_TRUE(bound->crosses(Position2D(2,1),Position2D(0,3)));
00070 EXPECT_TRUE(bound->crosses(Position2D(1,2),Position2D(3,6)));
00071 EXPECT_FALSE(bound->crosses(Position2D(0,0),Position2D(0,8)));
00072 }
00073
00074
00075 TEST(Boundary, test_method_partialWithin) {
00076 Boundary *bound = new Boundary(1,2,3,6);
00077 EXPECT_TRUE(bound->partialWithin(Boundary(1,2,1,2)));
00078 EXPECT_FALSE(bound->partialWithin(Boundary(10,17,13,16)));
00079 EXPECT_TRUE(bound->partialWithin(Boundary(1,2,3,6)));
00080 EXPECT_TRUE(bound->partialWithin(Boundary(4,2,5,7),1));
00081 }
00082
00083
00084 TEST(Boundary, test_method_flipY) {
00085 Boundary *bound = new Boundary(1,2,3,6);
00086 bound->flipY();
00087 EXPECT_FLOAT_EQ(bound->xmax(), 3);
00088 EXPECT_FLOAT_EQ(bound->xmin(), 1);
00089 EXPECT_FLOAT_EQ(bound->ymax(), -2);
00090 EXPECT_FLOAT_EQ(bound->ymin(), -6);
00091 }
00092
00093
00094 TEST(Boundary, test_method_moveby) {
00095 Boundary *bound = new Boundary(1,2,3,6);
00096 bound->moveby(2.5,-3.5);
00097 EXPECT_FLOAT_EQ(bound->xmax(), 5.5);
00098 EXPECT_FLOAT_EQ(bound->xmin(), 3.5);
00099 EXPECT_FLOAT_EQ(bound->ymax(), 2.5);
00100 EXPECT_FLOAT_EQ(bound->ymin(), -1.5);
00101 }