pxmlw6n2f/Gazebo_Distributed_MPI/gazebo/common/MouseEvent_TEST.cc

279 lines
9.6 KiB
C++

/*
* Copyright (C) 2015 Open Source Robotics Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
#include <gtest/gtest.h>
#include "test_config.h"
#include "gazebo/common/MouseEvent.hh"
#include "gazebo/gazebo_config.h"
#include "test/util.hh"
using namespace gazebo;
class MouseEvent : public gazebo::testing::AutoLogFixture { };
/////////////////////////////////////////////////
TEST_F(MouseEvent, CopyConstructor)
{
ignition::math::Vector2i pos(1, 25);
ignition::math::Vector2i prevPos(2, 26);
ignition::math::Vector2i pressPos(3, 24);
ignition::math::Vector2i scroll(2, 3);
float moveScale = 0.3;
bool dragging = true;
common::MouseEvent::EventType type = common::MouseEvent::PRESS;
common::MouseEvent::MouseButton button = common::MouseEvent::LEFT;
bool shift = false;
bool alt = false;
bool control = false;
// create mouse event
common::MouseEvent event;
event.SetPos(pos);
event.SetPrevPos(prevPos);
event.SetPressPos(pressPos);
event.SetScroll(scroll);
event.SetMoveScale(moveScale);
event.SetDragging(dragging);
event.SetType(type);
event.SetButton(button);
event.SetShift(shift);
event.SetAlt(alt);
event.SetControl(control);
// verify mouse event values
EXPECT_EQ(event.Pos(), pos);
EXPECT_EQ(event.PrevPos(), prevPos);
EXPECT_EQ(event.PressPos(), pressPos);
EXPECT_EQ(event.Scroll(), scroll);
EXPECT_DOUBLE_EQ(event.MoveScale(), moveScale);
EXPECT_EQ(event.Dragging(), dragging);
EXPECT_EQ(event.Type(), type);
EXPECT_EQ(event.Button(), button);
EXPECT_EQ(event.Shift(), shift);
EXPECT_EQ(event.Alt(), alt);
EXPECT_EQ(event.Control(), control);
// verify copy constructor works
common::MouseEvent otherEvent = event;
EXPECT_EQ(otherEvent.Pos(), pos);
EXPECT_EQ(otherEvent.PrevPos(), prevPos);
EXPECT_EQ(otherEvent.PressPos(), pressPos);
EXPECT_EQ(otherEvent.Scroll(), scroll);
EXPECT_DOUBLE_EQ(otherEvent.MoveScale(), moveScale);
EXPECT_EQ(otherEvent.Dragging(), dragging);
EXPECT_EQ(otherEvent.Type(), type);
EXPECT_EQ(otherEvent.Button(), button);
EXPECT_EQ(otherEvent.Shift(), shift);
EXPECT_EQ(otherEvent.Alt(), alt);
EXPECT_EQ(otherEvent.Control(), control);
common::MouseEvent otherEvent2(event);
EXPECT_EQ(otherEvent2.Pos(), pos);
EXPECT_EQ(otherEvent2.PrevPos(), prevPos);
EXPECT_EQ(otherEvent2.PressPos(), pressPos);
EXPECT_EQ(otherEvent2.Scroll(), scroll);
EXPECT_DOUBLE_EQ(otherEvent2.MoveScale(), moveScale);
EXPECT_EQ(otherEvent2.Dragging(), dragging);
EXPECT_EQ(otherEvent2.Type(), type);
EXPECT_EQ(otherEvent2.Button(), button);
EXPECT_EQ(otherEvent2.Shift(), shift);
EXPECT_EQ(otherEvent2.Alt(), alt);
EXPECT_EQ(otherEvent2.Control(), control);
// update the original mouse event values
ignition::math::Vector2i newPos(3, 18);
ignition::math::Vector2i newPrevPos(2, 17);
ignition::math::Vector2i newPressPos(3, 16);
ignition::math::Vector2i newScroll(1, 2);
float newMoveScale = 0.4;
bool newDragging = false;
common::MouseEvent::EventType newType = common::MouseEvent::RELEASE;
common::MouseEvent::MouseButton newButton = common::MouseEvent::LEFT;
common::MouseEvent::MouseButton newButton2 = common::MouseEvent::RIGHT;
bool newShift = true;
bool newAlt = false;
bool newControl = false;
event.SetPos(newPos.X(), newPos.Y());
event.SetPrevPos(newPrevPos.X(), newPrevPos.Y());
event.SetPressPos(newPressPos.X(), newPressPos.Y());
event.SetScroll(newScroll.X(), newScroll.Y());
event.SetMoveScale(newMoveScale);
event.SetDragging(newDragging);
event.SetType(newType);
event.SetButtons(newButton | newButton2);
event.SetShift(newShift);
event.SetAlt(newAlt);
event.SetControl(newControl);
// verify new mouse event values
EXPECT_EQ(event.Pos(), newPos);
EXPECT_EQ(event.PrevPos(), newPrevPos);
EXPECT_EQ(event.PressPos(), newPressPos);
EXPECT_EQ(event.Scroll(), newScroll);
EXPECT_DOUBLE_EQ(event.MoveScale(), newMoveScale);
EXPECT_EQ(event.Dragging(), newDragging);
EXPECT_EQ(event.Type(), newType);
EXPECT_EQ(event.Buttons(), static_cast<unsigned int>(newButton | newButton2));
EXPECT_EQ(event.Shift(), newShift);
EXPECT_EQ(event.Alt(), newAlt);
EXPECT_EQ(event.Control(), newControl);
// verify copies have the original values
EXPECT_EQ(otherEvent.Pos(), pos);
EXPECT_EQ(otherEvent.PrevPos(), prevPos);
EXPECT_EQ(otherEvent.PressPos(), pressPos);
EXPECT_EQ(otherEvent.Scroll(), scroll);
EXPECT_DOUBLE_EQ(otherEvent.MoveScale(), moveScale);
EXPECT_EQ(otherEvent.Dragging(), dragging);
EXPECT_EQ(otherEvent.Type(), type);
EXPECT_EQ(otherEvent.Button(), button);
EXPECT_EQ(otherEvent.Shift(), shift);
EXPECT_EQ(otherEvent.Alt(), alt);
EXPECT_EQ(otherEvent.Control(), control);
EXPECT_EQ(otherEvent2.Pos(), pos);
EXPECT_EQ(otherEvent2.PrevPos(), prevPos);
EXPECT_EQ(otherEvent2.PressPos(), pressPos);
EXPECT_EQ(otherEvent2.Scroll(), scroll);
EXPECT_DOUBLE_EQ(otherEvent2.MoveScale(), moveScale);
EXPECT_EQ(otherEvent2.Dragging(), dragging);
EXPECT_EQ(otherEvent2.Type(), type);
EXPECT_EQ(otherEvent2.Button(), button);
EXPECT_EQ(otherEvent2.Shift(), shift);
EXPECT_EQ(otherEvent2.Alt(), alt);
EXPECT_EQ(otherEvent2.Control(), control);
}
/////////////////////////////////////////////////
TEST_F(MouseEvent, Assignment)
{
ignition::math::Vector2i pos(1, 25);
ignition::math::Vector2i prevPos(2, 26);
ignition::math::Vector2i pressPos(3, 24);
ignition::math::Vector2i scroll(2, 3);
float moveScale = 0.3;
bool dragging = true;
common::MouseEvent::EventType type = common::MouseEvent::PRESS;
common::MouseEvent::MouseButton button = common::MouseEvent::LEFT;
bool shift = false;
bool alt = false;
bool control = false;
// create mouse event
common::MouseEvent event;
event.SetPos(pos);
event.SetPrevPos(prevPos);
event.SetPressPos(pressPos);
event.SetScroll(scroll);
event.SetMoveScale(moveScale);
event.SetDragging(dragging);
event.SetType(type);
event.SetButton(button);
event.SetShift(shift);
event.SetAlt(alt);
event.SetControl(control);
// verify mouse event values
EXPECT_EQ(event.Pos(), pos);
EXPECT_EQ(event.PrevPos(), prevPos);
EXPECT_EQ(event.PressPos(), pressPos);
EXPECT_EQ(event.Scroll(), scroll);
EXPECT_DOUBLE_EQ(event.MoveScale(), moveScale);
EXPECT_EQ(event.Dragging(), dragging);
EXPECT_EQ(event.Type(), type);
EXPECT_EQ(event.Button(), button);
EXPECT_EQ(event.Shift(), shift);
EXPECT_EQ(event.Alt(), alt);
EXPECT_EQ(event.Control(), control);
// verify asignment operator works
common::MouseEvent otherEvent;
otherEvent = event;
EXPECT_EQ(otherEvent.Pos(), pos);
EXPECT_EQ(otherEvent.PrevPos(), prevPos);
EXPECT_EQ(otherEvent.PressPos(), pressPos);
EXPECT_EQ(otherEvent.Scroll(), scroll);
EXPECT_DOUBLE_EQ(otherEvent.MoveScale(), moveScale);
EXPECT_EQ(otherEvent.Dragging(), dragging);
EXPECT_EQ(otherEvent.Type(), type);
EXPECT_EQ(otherEvent.Button(), button);
EXPECT_EQ(otherEvent.Shift(), shift);
EXPECT_EQ(otherEvent.Alt(), alt);
EXPECT_EQ(otherEvent.Control(), control);
// update the original mouse event values
ignition::math::Vector2i newPos(3, 18);
ignition::math::Vector2i newPrevPos(2, 17);
ignition::math::Vector2i newPressPos(3, 16);
ignition::math::Vector2i newScroll(1, 2);
float newMoveScale = 0.4;
bool newDragging = false;
common::MouseEvent::EventType newType = common::MouseEvent::RELEASE;
common::MouseEvent::MouseButton newButton = common::MouseEvent::LEFT;
common::MouseEvent::MouseButton newButton2 = common::MouseEvent::RIGHT;
bool newShift = false;
bool newAlt = true;
bool newControl = false;
event.SetPos(newPos.X(), newPos.Y());
event.SetPrevPos(newPrevPos.X(), newPrevPos.Y());
event.SetPressPos(newPressPos.X(), newPressPos.Y());
event.SetScroll(newScroll.X(), newScroll.Y());
event.SetMoveScale(newMoveScale);
event.SetDragging(newDragging);
event.SetType(newType);
event.SetButtons(newButton | newButton2);
event.SetShift(newShift);
event.SetAlt(newAlt);
event.SetControl(newControl);
// verify new mouse event values
EXPECT_EQ(event.Pos(), newPos);
EXPECT_EQ(event.PrevPos(), newPrevPos);
EXPECT_EQ(event.PressPos(), newPressPos);
EXPECT_EQ(event.Scroll(), newScroll);
EXPECT_DOUBLE_EQ(event.MoveScale(), newMoveScale);
EXPECT_EQ(event.Dragging(), newDragging);
EXPECT_EQ(event.Type(), newType);
EXPECT_EQ(event.Buttons(), static_cast<unsigned int>(newButton | newButton2));
EXPECT_EQ(event.Shift(), newShift);
EXPECT_EQ(event.Alt(), newAlt);
EXPECT_EQ(event.Control(), newControl);
// verify the copy has the original values
EXPECT_EQ(otherEvent.Pos(), pos);
EXPECT_EQ(otherEvent.PrevPos(), prevPos);
EXPECT_EQ(otherEvent.PressPos(), pressPos);
EXPECT_EQ(otherEvent.Scroll(), scroll);
EXPECT_DOUBLE_EQ(otherEvent.MoveScale(), moveScale);
EXPECT_EQ(otherEvent.Dragging(), dragging);
EXPECT_EQ(otherEvent.Type(), type);
EXPECT_EQ(otherEvent.Button(), button);
EXPECT_EQ(otherEvent.Shift(), shift);
EXPECT_EQ(otherEvent.Alt(), alt);
EXPECT_EQ(otherEvent.Control(), control);
}
/////////////////////////////////////////////////
int main(int argc, char **argv)
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}