pxmlw6n2f/Gazebo_Distributed_MPI/gazebo/gui/GuiIface_TEST.cc

206 lines
6.3 KiB
C++

/*
* Copyright (C) 2012 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 <iostream>
#include "gazebo/gui/GuiIface_TEST.hh"
#include "gazebo/gui/GuiIface.hh"
#include "gazebo/common/ModelDatabase.hh"
#include "test_config.h"
/////////////////////////////////////////////////
void GuiIface_TEST::noINIFile()
{
// Get a temp directory
boost::filesystem::path path =
boost::filesystem::temp_directory_path() / "gazebo";
boost::filesystem::create_directories(path);
// Set the gui.ini filename
path /= "gui.ini";
// Make sure the INI file doesn't exist.
if (boost::filesystem::exists(path))
boost::filesystem::remove(path);
// This should create the INI file.
QVERIFY(gazebo::gui::loadINI(path));
int xPos = gazebo::gui::getINIProperty<int>("geometry.x", -10);
int yPos = gazebo::gui::getINIProperty<int>("geometry.y", -20);
int width = gazebo::gui::getINIProperty<int>("geometry.width", 100);
int height = gazebo::gui::getINIProperty<int>("geometry.height", 200);
// X and Y pos should return zeros.
QVERIFY(xPos == 0);
QVERIFY(yPos == 0);
// Width and height should return the default values.
QVERIFY(width == 100);
QVERIFY(height == 200);
boost::filesystem::remove(path);
gazebo::gui::stop();
}
/////////////////////////////////////////////////
void GuiIface_TEST::GUIINIPATHEnvVariable()
{
// Get a temp directory
boost::filesystem::path path =
boost::filesystem::temp_directory_path() / "gazebo";
boost::filesystem::create_directories(path);
// Set the gui.ini filename
path /= "foo.ini";
// Make sure the INI file doesn't exist.
if (boost::filesystem::exists(path))
boost::filesystem::remove(path);
const char *filepath = path.string().c_str();
setenv("GAZEBO_GUI_INI_FILE", filepath, 1);
// False if the path didn't exist
QVERIFY(gazebo::gui::loadINI() == false);
// Write invalid content for an INI file
std::ofstream iniFile;
iniFile.open(filepath);
iniFile << "Invalid content\n";
iniFile.close();
// Only false when trying to read invalid content
QVERIFY(gazebo::gui::loadINI() == false);
// Need to clean up the variable for the next tests
unsetenv("GAZEBO_GUI_INI_FILE");
boost::filesystem::remove(path);
gazebo::gui::stop();
}
/////////////////////////////////////////////////
void GuiIface_TEST::setINIProperties()
{
// Get a temp directory
boost::filesystem::path path =
boost::filesystem::temp_directory_path() / "gazebo";
boost::filesystem::create_directories(path);
// Set the gui.ini filename
path /= "gui.ini";
// This will create the INI file if it doesn't exist.
QVERIFY(gazebo::gui::loadINI(path));
// Get the original values.
int xPosOrig = gazebo::gui::getINIProperty<int>("geometry.x", 0);
int yPosOrig = gazebo::gui::getINIProperty<int>("geometry.y", 0);
int widthOrig = gazebo::gui::getINIProperty<int>("geometry.width", 0);
int heightOrig = gazebo::gui::getINIProperty<int>("geometry.height", 0);
// Set new values
gazebo::gui::setINIProperty("geometry.x", 100);
gazebo::gui::setINIProperty("geometry.y", 50);
gazebo::gui::setINIProperty("geometry.width", 800);
gazebo::gui::setINIProperty("geometry.height", 600);
// Get the new values
int xPos = gazebo::gui::getINIProperty<int>("geometry.x", 0);
int yPos = gazebo::gui::getINIProperty<int>("geometry.y", 0);
int width = gazebo::gui::getINIProperty<int>("geometry.width", 0);
int height = gazebo::gui::getINIProperty<int>("geometry.height", 0);
// Verify the new values are correct
QVERIFY(xPos == 100);
QVERIFY(yPos == 50);
QVERIFY(width == 800);
QVERIFY(height == 600);
// Reload the INI file, and read back the values.
QVERIFY(gazebo::gui::loadINI(path));
xPos = gazebo::gui::getINIProperty<int>("geometry.x", 0);
yPos = gazebo::gui::getINIProperty<int>("geometry.y", 0);
width = gazebo::gui::getINIProperty<int>("geometry.width", 0);
height = gazebo::gui::getINIProperty<int>("geometry.height", 0);
QVERIFY(xPos == xPosOrig);
QVERIFY(yPos == yPosOrig);
QVERIFY(width == widthOrig);
QVERIFY(height == heightOrig);
boost::filesystem::remove(path);
gazebo::gui::stop();
}
/////////////////////////////////////////////////
void GuiIface_TEST::saveINIProperties()
{
// Get a temp directory
boost::filesystem::path path =
boost::filesystem::temp_directory_path() / "gazebo";
boost::filesystem::create_directories(path);
// Set the gui.ini filename
path /= "gui.ini";
// This will create the INI file if it doesn't exist.
QVERIFY(gazebo::gui::loadINI(path));
// Set new values
gazebo::gui::setINIProperty("geometry.x", 100);
gazebo::gui::setINIProperty("geometry.y", 50);
gazebo::gui::setINIProperty("geometry.width", 800);
gazebo::gui::setINIProperty("geometry.height", 600);
// Get the new values
int xPos = gazebo::gui::getINIProperty<int>("geometry.x", 0);
int yPos = gazebo::gui::getINIProperty<int>("geometry.y", 0);
int width = gazebo::gui::getINIProperty<int>("geometry.width", 0);
int height = gazebo::gui::getINIProperty<int>("geometry.height", 0);
// Verify the new values are correct
QVERIFY(xPos == 100);
QVERIFY(yPos == 50);
QVERIFY(width == 800);
QVERIFY(height == 600);
// Save the values to disk
QVERIFY(gazebo::gui::saveINI(path));
// Reload the INI file, and read back the values.
QVERIFY(gazebo::gui::loadINI(path));
int xPosNew = gazebo::gui::getINIProperty<int>("geometry.x", 0);
int yPosNew = gazebo::gui::getINIProperty<int>("geometry.y", 0);
int widthNew = gazebo::gui::getINIProperty<int>("geometry.width", 0);
int heightNew = gazebo::gui::getINIProperty<int>("geometry.height", 0);
QVERIFY(xPos == xPosNew);
QVERIFY(yPos == yPosNew);
QVERIFY(width == widthNew);
QVERIFY(height == heightNew);
boost::filesystem::remove(path);
gazebo::gui::stop();
}
// Generate a main function for the test
QTEST_MAIN(GuiIface_TEST)