Browse Source

Added initial tests

merge-requests/365/head
eidheim 10 years ago committed by Ole Christian Eidheim
parent
commit
13fad63f15
  1. 5
      CMakeLists.txt
  2. 53
      tests/CMakeLists.txt
  3. 18
      tests/cmake_test.cc
  4. 19
      tests/example_test.cc
  5. 7
      tests/stubs/dialogs.cc
  6. 5
      tests/stubs/dispatcher.cc
  7. 5
      tests/stubs/info.cc
  8. 11
      tests/stubs/terminal.cc

5
CMakeLists.txt

@ -9,3 +9,8 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|FreeBSD|OpenBSD|NetBSD")
install(FILES "${CMAKE_SOURCE_DIR}/share/juci.desktop"
DESTINATION "${CMAKE_INSTALL_PREFIX}/share/applications")
endif()
if(ENABLE_TESTING)
enable_testing()
add_subdirectory(tests)
endif()

53
tests/CMakeLists.txt

@ -0,0 +1,53 @@
add_definitions(-DBOOST_LOG_DYN_LINK)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread -Wall -Wextra -Wno-unused-parameter -Wno-reorder")
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DJUCI_TESTS_PATH=\\\"${CMAKE_CURRENT_SOURCE_DIR}\\\" -Wl,--unresolved-symbols=ignore-in-object-files")
else()
message(WARNING "testing only supported for g++")
return()
endif()
if(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -undefined dynamic_lookup")
link_directories(/usr/local/lib /usr/local/opt/gettext/lib)
include_directories(/usr/local/opt/gettext/include)
set(CMAKE_MACOSX_RPATH 1)
set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig:/opt/X11/lib/pkgconfig")
endif()
find_package(Boost 1.54 COMPONENTS regex system filesystem REQUIRED)
set(LIBCLANGMM_INCLUDE_DIR ../libclangmm/src)
include(FindPkgConfig)
pkg_check_modules(GTKMM gtkmm-3.0 REQUIRED)
set(global_includes
${Boost_INCLUDE_DIRS}
${GTKMM_INCLUDE_DIRS}
${GTKSVMM_INCLUDE_DIRS}
../src
../tiny-process-library
)
set(global_libraries
${GTKMM_LIBRARIES}
${GTKSVMM_LIBRARIES}
${Boost_LIBRARIES}
)
include_directories(${global_includes})
add_executable(cmake_test cmake_test.cc
../src/filesystem.cc ../src/cmake.cc ../src/project_build.cc)
target_link_libraries(cmake_test ${global_libraries})
add_test(cmake_test cmake_test)
#Added for example only, and requires display server to work
#However, it is possible to use the Broadway backend if the test is run in a pure terminal environment:
#broadwayd&
#make test
add_executable(example_test example_test.cc
stubs/dispatcher.cc stubs/terminal.cc stubs/info.cc)
target_link_libraries(example_test ${global_libraries})
add_test(example_test example_test)

18
tests/cmake_test.cc

@ -0,0 +1,18 @@
#include <glib.h>
#include "cmake.h"
#include "project_build.h"
#include <boost/filesystem.hpp>
int main() {
CMake cmake(JUCI_TESTS_PATH);
g_assert(cmake.project_path.filename()=="jucipp");
auto functions_parameters=cmake.get_functions_parameters("project");
g_assert(functions_parameters.at(0).second.at(0)=="juci");
g_assert(cmake.get_executable(boost::filesystem::path(JUCI_TESTS_PATH)/"cmake_test.cc").filename()=="cmake_test");
auto build=Project::Build::create(JUCI_TESTS_PATH);
g_assert(dynamic_cast<Project::CMakeBuild*>(build.get()));
}

19
tests/example_test.cc

@ -0,0 +1,19 @@
#include "terminal.h"
#include "info.h"
#include <gtkmm.h>
//In case one has to test functions that include Terminal::print or Info::print
//Requires display server to work
//However, it is possible to use the Broadway backend if the test is run in a pure terminal environment
//One also has to include the source stubs/dispatcher.cc in CMakeLists.txt for at least Terminal
//To run the test using broadway backend:
//broadwayd&
//make test
int main() {
auto app=Gtk::Application::create();
Terminal::get().print("some message");
Info::get().print("some message");
g_assert(true);
}

7
tests/stubs/dialogs.cc

@ -0,0 +1,7 @@
#include "dialogs.h"
Dialog::Message::Message(const std::string &text): Gtk::MessageDialog(text, false, Gtk::MessageType::MESSAGE_INFO, Gtk::ButtonsType::BUTTONS_NONE, true) {}
bool Dialog::Message::on_delete_event(GdkEventAny *event) {
return true;
}

5
tests/stubs/dispatcher.cc

@ -0,0 +1,5 @@
#include "dispatcher.h"
Dispatcher::Dispatcher() {}
Dispatcher::~Dispatcher() {}

5
tests/stubs/info.cc

@ -0,0 +1,5 @@
#include "info.h"
Info::Info() {}
void Info::print(const std::string &text) {}

11
tests/stubs/terminal.cc

@ -0,0 +1,11 @@
#include "terminal.h"
Terminal::Terminal() {}
bool Terminal::on_motion_notify_event(GdkEventMotion* motion_event) {return false;}
bool Terminal::on_button_press_event(GdkEventButton* button_event) {return false;}
bool Terminal::on_key_press_event(GdkEventKey *event) {return false;}
size_t Terminal::print(const std::string &message, bool bold) {
return 0;
}
Loading…
Cancel
Save