/* * 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 #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("geometry.x", -10); int yPos = gazebo::gui::getINIProperty("geometry.y", -20); int width = gazebo::gui::getINIProperty("geometry.width", 100); int height = gazebo::gui::getINIProperty("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("geometry.x", 0); int yPosOrig = gazebo::gui::getINIProperty("geometry.y", 0); int widthOrig = gazebo::gui::getINIProperty("geometry.width", 0); int heightOrig = gazebo::gui::getINIProperty("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("geometry.x", 0); int yPos = gazebo::gui::getINIProperty("geometry.y", 0); int width = gazebo::gui::getINIProperty("geometry.width", 0); int height = gazebo::gui::getINIProperty("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("geometry.x", 0); yPos = gazebo::gui::getINIProperty("geometry.y", 0); width = gazebo::gui::getINIProperty("geometry.width", 0); height = gazebo::gui::getINIProperty("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("geometry.x", 0); int yPos = gazebo::gui::getINIProperty("geometry.y", 0); int width = gazebo::gui::getINIProperty("geometry.width", 0); int height = gazebo::gui::getINIProperty("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("geometry.x", 0); int yPosNew = gazebo::gui::getINIProperty("geometry.y", 0); int widthNew = gazebo::gui::getINIProperty("geometry.width", 0); int heightNew = gazebo::gui::getINIProperty("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)