Merge branch 'dev' of https://github.com/OpenWaterAnalytics/EPANET into dev-unittesting

This commit is contained in:
Michael Tryby
2019-04-03 11:10:52 -04:00
45 changed files with 832 additions and 379 deletions

View File

@@ -19,19 +19,18 @@ endif(UNIX)
set(toolkit_test_srcs
test_toolkit.cpp
test_project.cpp
# test_hydraulics.cpp
# test_quality.cpp
# test_report.cpp
# test_analysis.cpp
# test_node.cpp
# test_demand.cpp
# test_link.cpp
test_hydraulics.cpp
test_quality.cpp
test_report.cpp
test_analysis.cpp
test_node.cpp
test_demand.cpp
test_link.cpp
# test_pump.cpp
# test_pattern.cpp
# test_curve.cpp
# test_control.cpp
# test_net_builder.cpp
)
test_pattern.cpp
test_curve.cpp
test_control.cpp
test_net_builder.cpp)
add_executable(test_toolkit ${toolkit_test_srcs})
@@ -60,6 +59,10 @@ add_test(NAME test_reent
add_test(NAME test_errormanager
COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_errormanager)
add_test(NAME test_filemanager
COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_filemanager
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/outfile/data)
add_test(NAME test_output
COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_output
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/outfile/data)

View File

@@ -11,6 +11,7 @@
******************************************************************************
*/
//#define BOOST_ALL_DYN_LINK
#include <boost/test/unit_test.hpp>
#include "test_toolkit.hpp"

View File

@@ -35,6 +35,35 @@ BOOST_FIXTURE_TEST_CASE(test_curve_comments, FixtureOpenClose)
error = EN_getcomment(ph, EN_CURVE, index, comment);
BOOST_REQUIRE(error == 0);
BOOST_CHECK(check_string(comment, (char *)"Curve 1"));
// Test of EN_setcurve and EN_getcurve
int i;
char id1[] = "NewCurve";
int n1 = 5;
double X1[] = {16.88889, 19.5, 22.13889, 25.94445, 33.33334};
double Y1[] = {156.7, 146.5, 136.2, 117.9, 50.0};
int n2;
double X2[5], Y2[5];
char id2[EN_MAXID+1];
// Add data to a new curve
error = EN_addcurve(ph, id1);
BOOST_REQUIRE(error == 0);
error = EN_getcurveindex(ph, id1, &i);
BOOST_REQUIRE(error == 0);
error = EN_setcurve(ph, i, X1, Y1, n1);
BOOST_REQUIRE(error == 0);
// Retrieve data from curve
error = EN_getcurve(ph, i, id2, &n2, X2, Y2);
BOOST_REQUIRE(error == 0);
BOOST_CHECK(check_string(id2, id1));
BOOST_REQUIRE(n2 == n1);
for (i = 0; i < n1; i++)
{
BOOST_REQUIRE(X1[i] == X2[i]);
BOOST_REQUIRE(Y1[i] == Y2[i]);
}
}
BOOST_AUTO_TEST_SUITE_END()

View File

@@ -11,6 +11,8 @@
******************************************************************************
*/
#include <math.h>
#include <boost/test/unit_test.hpp>
#include "test_toolkit.hpp"

View File

@@ -58,47 +58,35 @@ BOOST_AUTO_TEST_CASE(test_save)
{
int error;
EN_Project ph = NULL;
EN_Project ph_save;
error = EN_createproject(&ph);
BOOST_REQUIRE(error == 0);
error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, DATA_PATH_OUT);
EN_createproject(&ph_save);
error = EN_open(ph_save, DATA_PATH_NET1, DATA_PATH_RPT, DATA_PATH_OUT);
BOOST_REQUIRE(error == 0);
error = EN_saveinpfile(ph, DATA_PATH_TMP);
error = EN_saveinpfile(ph_save, "test_reopen.inp");
BOOST_REQUIRE(error == 0);
BOOST_CHECK(boost::filesystem::exists(DATA_PATH_TMP) == true);
BOOST_CHECK(boost::filesystem::exists("test_reopen.inp") == true);
error = EN_close(ph);
error = EN_close(ph_save);
BOOST_REQUIRE(error == 0);
error = EN_deleteproject(&ph);
BOOST_REQUIRE(error == 0);
BOOST_CHECK(ph == NULL);
EN_deleteproject(&ph_save);
}
BOOST_AUTO_TEST_CASE(test_reopen, * boost::unit_test::depends_on("test_project/test_save"))
{
int error;
EN_Project ph = NULL;
EN_Project ph_reopen;
error = EN_createproject(&ph);
BOOST_REQUIRE(error == 0);
EN_createproject(&ph_reopen);
error = EN_open(ph_reopen, "test_reopen.inp", DATA_PATH_RPT, DATA_PATH_OUT);
BOOST_REQUIRE(error == 0);
error = EN_open(ph, DATA_PATH_TMP, DATA_PATH_RPT, DATA_PATH_OUT);
BOOST_REQUIRE(error == 0);
error = EN_close(ph);
BOOST_REQUIRE(error == 0);
EN_deleteproject(&ph);
BOOST_REQUIRE(error == 0);
BOOST_CHECK(ph == NULL);
error = EN_close(ph_reopen);
BOOST_REQUIRE(error == 0);
EN_deleteproject(&ph_reopen);
}
BOOST_AUTO_TEST_CASE(test_run)

View File

@@ -14,12 +14,6 @@
#ifndef TEST_TOOLKIT_HPP
#define TEST_TOOLKIT_HPP
// MSVC ONLY
#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#endif
#include "epanet2_2.h"

View File

@@ -7,11 +7,14 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set (test_source
./test_errormanager.cpp
../../src/util/errormanager.c
)
add_executable(test_errormanager ${test_source})
add_executable(test_errormanager ./test_errormanager.cpp
../../src/util/errormanager.c)
target_include_directories(test_errormanager PUBLIC ../../src/)
target_link_libraries(test_errormanager ${Boost_LIBRARIES})
add_executable(test_filemanager ./test_filemanager.cpp
../../src/util/filemanager.c
../../src/util/cstr_helper.c)
target_include_directories(test_filemanager PUBLIC ../../src/)
target_link_libraries(test_filemanager ${Boost_LIBRARIES})

View File

@@ -1,7 +1,7 @@
#define BOOST_TEST_MODULE errormanager
//#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>
#include "util/errormanager.h"
@@ -15,10 +15,10 @@ void mock_lookup(int errcode, char *errmsg, int len)
char *msg = NULL;
if (errcode == 100) {
msg = MESSAGE_STRING;
msg = (char *)MESSAGE_STRING;
}
else {
msg = "";
msg = (char *)"";
}
strncpy(errmsg, msg, len);
}

View File

@@ -0,0 +1,97 @@
/*
******************************************************************************
Project: OWA EPANET
Version: 2.2
Module: util/test_filemanager.cpp
Description: Tests for util/filemanager.c
Authors: see AUTHORS
Copyright: see AUTHORS
License: see LICENSE
Last Updated: 04/01/2019
******************************************************************************
*/
#define BOOST_TEST_MODULE filemanager
#include <boost/test/unit_test.hpp>
#include <boost/filesystem.hpp>
#include "util/filemanager.h"
#define DATA_PATH_OUTPUT "./example1.out"
boost::test_tools::predicate_result check_string(std::string test, std::string ref)
{
if (ref.compare(test) == 0)
return true;
else
return false;
}
BOOST_AUTO_TEST_SUITE(test_filemanager)
BOOST_AUTO_TEST_CASE (test_create_destroy)
{
file_handle_t *file_handle = NULL;
file_handle = create_file_manager();
BOOST_CHECK(file_handle != NULL);
BOOST_CHECK(is_valid(file_handle) == true);
delete_file_manager(file_handle);
}
BOOST_AUTO_TEST_CASE(test_open_close)
{
int error = 0;
file_handle_t *file_handle = NULL;
file_handle = create_file_manager();
BOOST_CHECK(file_handle != NULL);
error = open_file(file_handle, DATA_PATH_OUTPUT, "rb");
BOOST_REQUIRE(error == 0);
BOOST_CHECK(is_valid(file_handle) == true);
error = close_file(file_handle);
BOOST_REQUIRE(error == 0);
delete_file_manager(file_handle);
}
struct Fixture{
Fixture() {
error = 0;
file_handle = NULL;
file_handle = create_file_manager();
open_file(file_handle, NULL, "wt");
}
~Fixture() {
close_file(file_handle);
delete_file_manager(file_handle);
}
int error;
file_handle_t *file_handle;
};
BOOST_FIXTURE_TEST_CASE(test_temp_file, Fixture)
{
char *filename;
printf_file(file_handle, "%s", "This is a test.");
error = get_filename(file_handle, &filename);
BOOST_REQUIRE(error == 0);
BOOST_CHECK(is_valid(file_handle) == true);
BOOST_CHECK(boost::filesystem::exists(filename) == true);
free(filename);
}
BOOST_AUTO_TEST_SUITE_END()