mirror of
https://github.com/simon987/wavelib.git
synced 2025-04-18 01:46:41 +00:00
Merge pull request #3 from holgern/master
travis-ci, cmake and appveyer support added
This commit is contained in:
commit
2e94a2f078
36
.travis.yml
Normal file
36
.travis.yml
Normal file
@ -0,0 +1,36 @@
|
||||
sudo: false
|
||||
language: cpp
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
compiler:
|
||||
- gcc
|
||||
- clang
|
||||
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- boost-latest
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- libboost1.55-all-dev
|
||||
|
||||
matrix:
|
||||
allow_failures:
|
||||
- compiler: clang
|
||||
|
||||
before_install:
|
||||
# linux prereqisite packages
|
||||
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then wget --no-check-certificate https://www.cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.tar.gz; fi
|
||||
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then tar -xzvf cmake-3.2.3-Linux-x86_64.tar.gz; fi
|
||||
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then export PATH=$PWD/cmake-3.2.3-Linux-x86_64/bin:$PATH; fi
|
||||
|
||||
before_script:
|
||||
|
||||
|
||||
script:
|
||||
- mkdir build.ci && cd build.ci
|
||||
- cmake .. -DBUILD_UT=ON -DCMAKE_BUILD_TYPE=$BUILD_CONFIG -DUSE_STATIC_BOOST=YES
|
||||
- cmake --build .
|
||||
- ctest -VV
|
66
CMakeLists.txt
Normal file
66
CMakeLists.txt
Normal file
@ -0,0 +1,66 @@
|
||||
cmake_minimum_required(VERSION 2.8.0 FATAL_ERROR)
|
||||
|
||||
set(PROJECT_NAME wavelib)
|
||||
project(${PROJECT_NAME} CXX C)
|
||||
|
||||
|
||||
# src root path
|
||||
set(WAVELIB_SRC_ROOT ${PROJECT_SOURCE_DIR} CACHE PATH "Wavelib source root")
|
||||
# binary output by default
|
||||
set(COMMON_BIN_PATH ${CMAKE_BINARY_DIR}/Bin)
|
||||
set(LIBRARY_OUTPUT_PATH ${COMMON_BIN_PATH}/${CMAKE_BUILD_TYPE})
|
||||
set(EXECUTABLE_OUTPUT_PATH ${COMMON_BIN_PATH}/${CMAKE_BUILD_TYPE})
|
||||
# set where to find additional cmake modules if any
|
||||
set(CMAKE_MODULE_PATH ${WAVELIB_SRC_ROOT}/cmake ${CMAKE_MODULE_PATH})
|
||||
|
||||
|
||||
set(WAVELIB_VERSION "1.0.0" CACHE STRING "Wavelib version" FORCE)
|
||||
message(">>> Building Wavelib version: ${WAVELIB_VERSION}")
|
||||
message(">>> EXECUTABLE_OUTPUT_PATH = ${EXECUTABLE_OUTPUT_PATH}")
|
||||
|
||||
option(BUILD_UT "Enable Unit test" ON)
|
||||
|
||||
# cleanup prefix lib for Unix-like OSes
|
||||
set(CMAKE_SHARED_MODULE_PREFIX)
|
||||
|
||||
# install target to this folder by default
|
||||
set(WAVELIB_BINARY_DIR ${WAVELIB_SRC_ROOT}/bin)
|
||||
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
set(CMAKE_INSTALL_PREFIX "${WAVELIB_BINARY_DIR}" CACHE PATH "default install path" FORCE)
|
||||
endif()
|
||||
|
||||
# make include globaly visible
|
||||
set(PROJECT_WIDE_INCLUDE ${WAVELIB_SRC_ROOT}/include)
|
||||
include_directories(${PROJECT_WIDE_INCLUDE})
|
||||
|
||||
# TODO: need to handle this with option
|
||||
set(Boost_USE_MULTITHREADED ON)
|
||||
set(Boost_USE_STATIC_RUNTIME OFF)
|
||||
|
||||
set(Boost_USE_STATIC_LIBS ${USE_STATIC_BOOST})
|
||||
set(Boost_USE_MULTITHREADED ON)
|
||||
unset(Boost_INCLUDE_DIR CACHE)
|
||||
unset(Boost_LIBRARY_DIRS CACHE)
|
||||
find_package(Boost REQUIRED COMPONENTS unit_test_framework)
|
||||
if(USE_STATIC_BOOST)
|
||||
message(STATUS "Linking against boost static libraries")
|
||||
else(USE_STATIC_BOOST)
|
||||
message(STATUS "Linking against boost dynamic libraries")
|
||||
endif(USE_STATIC_BOOST)
|
||||
|
||||
# disable autolinking feature
|
||||
add_definitions(-DBOOST_ALL_NO_LIB)
|
||||
include_directories(${Boost_INCLUDE_DIRS})
|
||||
|
||||
|
||||
include_directories(${COMMON_BIN_PATH})
|
||||
|
||||
if(BUILD_UT)
|
||||
include(CTest)
|
||||
enable_testing()
|
||||
add_subdirectory(unitTests)
|
||||
endif()
|
||||
|
||||
add_subdirectory(src)
|
||||
|
||||
install(DIRECTORY ${WAVELIB_SRC_ROOT}/include/ DESTINATION include FILES_MATCHING PATTERN "*.h")
|
16
appveyor.yml
Normal file
16
appveyor.yml
Normal file
@ -0,0 +1,16 @@
|
||||
os: Visual Studio 2015
|
||||
|
||||
platform: x64
|
||||
|
||||
environment:
|
||||
BOOST_ROOT: C:\Libraries\boost_1_59_0
|
||||
BOOST_LIBRARYDIR: C:\Libraries\boost_1_59_0\lib64-msvc-14.0
|
||||
|
||||
build_script:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- cmake -G "Visual Studio 14 2015 Win64" -DUSE_STATIC_BOOST=NO ..
|
||||
- cmake --build . --config Debug
|
||||
|
||||
test_script:
|
||||
- ctest -VV -C Debug
|
26
src/CMakeLists.txt
Normal file
26
src/CMakeLists.txt
Normal file
@ -0,0 +1,26 @@
|
||||
|
||||
|
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
set(SOURCE_FILES conv.c
|
||||
hsfft.c
|
||||
real.c
|
||||
wavefilt.c
|
||||
wavelib.c
|
||||
wtmath.c
|
||||
)
|
||||
|
||||
set(HEADER_FILES conv.h
|
||||
hsfft.h
|
||||
real.h
|
||||
wavefilt.h
|
||||
wavelib.h
|
||||
wtmath.h
|
||||
)
|
||||
|
||||
add_library(wavelib STATIC ${SOURCE_FILES} ${HEADER_FILES})
|
||||
|
||||
set_property(TARGET wavelib PROPERTY FOLDER "lib")
|
||||
|
||||
target_include_directories(wavelib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
3
unitTests/CMakeLists.txt
Normal file
3
unitTests/CMakeLists.txt
Normal file
@ -0,0 +1,3 @@
|
||||
|
||||
add_subdirectory(wavelibBoostTests)
|
||||
|
35
unitTests/wavelibBoostTests/CMakeLists.txt
Normal file
35
unitTests/wavelibBoostTests/CMakeLists.txt
Normal file
@ -0,0 +1,35 @@
|
||||
|
||||
set(SOURCE_FILES
|
||||
tst_dwt.cpp
|
||||
BoostTest.cpp
|
||||
)
|
||||
|
||||
set(HEADER_FILES
|
||||
BoostTest.h
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
add_executable(wavelibLibTests ${SOURCE_FILES} ${HEADER_FILES})
|
||||
|
||||
add_test(NAME wavelibLibTests WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/test COMMAND wavelibLibTests)
|
||||
|
||||
add_dependencies(wavelibLibTests wavelib)
|
||||
target_link_libraries(wavelibLibTests ${Boost_LIBRARIES}
|
||||
wavelib)
|
||||
|
||||
target_include_directories(wavelibLibTests PUBLIC
|
||||
${CMAKE_SOURCE_DIR}/../../header
|
||||
${Boost_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
target_compile_definitions(wavelibLibTests PUBLIC BOOST_ALL_NO_LIB UNIT_TEST)
|
||||
|
||||
|
||||
install(TARGETS wavelibLibTests
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION tests
|
||||
ARCHIVE DESTINATION tests
|
||||
)
|
@ -6,13 +6,11 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <cmath>
|
||||
#include <iostream>
|
||||
#include "../../header/wavelib.h"
|
||||
#include<vector>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#include "wavelib.h"
|
||||
|
||||
#include<vector>
|
||||
|
||||
namespace patch
|
||||
{
|
||||
@ -107,22 +105,10 @@ BOOST_AUTO_TEST_CASE(ReconstructionTest)
|
||||
|
||||
wave_object obj;
|
||||
wt_object wt;
|
||||
double *inp,*out,*diff;
|
||||
double *inp,*out;
|
||||
int N, i,J;
|
||||
double epsilon = 1e-15;
|
||||
FILE *ifp;
|
||||
double temp[79926];
|
||||
|
||||
|
||||
ifp = fopen("s1.txt", "r");
|
||||
//ifp = fopen("signal.txt", "r");
|
||||
i = 0;
|
||||
BOOST_REQUIRE(ifp);
|
||||
|
||||
while (!feof(ifp)) {
|
||||
fscanf(ifp, "%lf \n", &temp[i]);
|
||||
i++;
|
||||
}
|
||||
N = 79926;
|
||||
|
||||
//N = 256;
|
||||
@ -132,7 +118,7 @@ BOOST_AUTO_TEST_CASE(ReconstructionTest)
|
||||
//wmean = mean(temp, N);
|
||||
|
||||
for (i = 0; i < N; ++i) {
|
||||
inp[i] = temp[i];
|
||||
inp[i] = (rand() / (double)(RAND_MAX + 1));
|
||||
}
|
||||
std::vector<std::string > waveletNames;
|
||||
|
||||
@ -224,7 +210,6 @@ BOOST_AUTO_TEST_CASE(ReconstructionTest)
|
||||
}
|
||||
}
|
||||
|
||||
fclose(ifp);
|
||||
free(out);
|
||||
free(inp);
|
||||
}
|
||||
@ -247,9 +232,9 @@ BOOST_AUTO_TEST_CASE(DBCoefTests)
|
||||
char * name = new char[waveletNames[j].size() + 1];
|
||||
memcpy(name, waveletNames[j].c_str(), waveletNames[j].size() + 1);
|
||||
obj = wave_init(name);// Initialize the wavelet
|
||||
BOOST_CHECK_SMALL(sum1(obj->lpr, obj->lpr_len) - std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum2(obj->lpr, obj->lpr_len) - 1. / std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum3(obj->lpr, obj->lpr_len) - 1. / std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum1(obj->lpr, obj->lpr_len) - sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum2(obj->lpr, obj->lpr_len) - 1. / sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum3(obj->lpr, obj->lpr_len) - 1. / sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum4(obj->lpr, obj->lpr_len) - 1., epsilon);
|
||||
for (int m = 1; m < (obj->lpr_len / 2) - 1;m++)
|
||||
BOOST_CHECK_SMALL(sum5(obj->lpr, obj->lpr_len, m), epsilon);
|
||||
@ -275,9 +260,9 @@ BOOST_AUTO_TEST_CASE(CoifCoefTests)
|
||||
char * name = new char[waveletNames[j].size() + 1];
|
||||
memcpy(name, waveletNames[j].c_str(), waveletNames[j].size() + 1);
|
||||
obj = wave_init(name);// Initialize the wavelet
|
||||
BOOST_CHECK_SMALL(sum1(obj->lpr, obj->lpr_len) - std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum2(obj->lpr, obj->lpr_len) - 1. / std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum3(obj->lpr, obj->lpr_len) - 1. / std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum1(obj->lpr, obj->lpr_len) - sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum2(obj->lpr, obj->lpr_len) - 1. / sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum3(obj->lpr, obj->lpr_len) - 1. / sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum4(obj->lpr, obj->lpr_len) - 1., epsilon);
|
||||
for (int m = 1; m < (obj->lpr_len / 2) - 1; m++)
|
||||
BOOST_CHECK_SMALL(sum5(obj->lpr, obj->lpr_len, m), epsilon);
|
||||
@ -301,9 +286,9 @@ BOOST_AUTO_TEST_CASE(SymCoefTests)
|
||||
char * name = new char[waveletNames[j].size() + 1];
|
||||
memcpy(name, waveletNames[j].c_str(), waveletNames[j].size() + 1);
|
||||
obj = wave_init(name);// Initialize the wavelet
|
||||
BOOST_CHECK_SMALL(sum1(obj->lpr, obj->lpr_len) - std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum2(obj->lpr, obj->lpr_len) - 1. / std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum3(obj->lpr, obj->lpr_len) - 1. / std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum1(obj->lpr, obj->lpr_len) - sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum2(obj->lpr, obj->lpr_len) - 1. / sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum3(obj->lpr, obj->lpr_len) - 1. / sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum4(obj->lpr, obj->lpr_len) - 1., epsilon);
|
||||
for (int m = 1; m < (obj->lpr_len / 2) - 1; m++)
|
||||
BOOST_CHECK_SMALL(sum5(obj->lpr, obj->lpr_len, m), epsilon);
|
||||
@ -338,13 +323,13 @@ BOOST_AUTO_TEST_CASE(BiorCoefTests)
|
||||
char * name = new char[waveletNames[j].size() + 1];
|
||||
memcpy(name, waveletNames[j].c_str(), waveletNames[j].size() + 1);
|
||||
obj = wave_init(name);// Initialize the wavelet
|
||||
BOOST_CHECK_SMALL(sum1(obj->lpr, obj->lpr_len) - std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum1(obj->lpd, obj->lpd_len) - std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum2(obj->lpr, obj->lpr_len) - 1. / std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum2(obj->lpd, obj->lpd_len) - 1. / std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum1(obj->lpr, obj->lpr_len) - sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum1(obj->lpd, obj->lpd_len) - sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum2(obj->lpr, obj->lpr_len) - 1. / sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum2(obj->lpd, obj->lpd_len) - 1. / sqrt(2.0), epsilon);
|
||||
|
||||
BOOST_CHECK_SMALL(sum3(obj->lpr, obj->lpr_len) - 1. / std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum3(obj->lpd, obj->lpd_len) - 1. / std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum3(obj->lpr, obj->lpr_len) - 1. / sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum3(obj->lpd, obj->lpd_len) - 1. / sqrt(2.0), epsilon);
|
||||
wave_free(obj);
|
||||
delete[] name;
|
||||
}
|
||||
@ -376,13 +361,13 @@ BOOST_AUTO_TEST_CASE(RBiorCoefTests)
|
||||
char * name = new char[waveletNames[j].size() + 1];
|
||||
memcpy(name, waveletNames[j].c_str(), waveletNames[j].size() + 1);
|
||||
obj = wave_init(name);// Initialize the wavelet
|
||||
BOOST_CHECK_SMALL(sum1(obj->lpr, obj->lpr_len) - std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum1(obj->lpd, obj->lpd_len) - std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum2(obj->lpr, obj->lpr_len) - 1. / std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum2(obj->lpd, obj->lpd_len) - 1. / std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum1(obj->lpr, obj->lpr_len) - sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum1(obj->lpd, obj->lpd_len) - sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum2(obj->lpr, obj->lpr_len) - 1. / sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum2(obj->lpd, obj->lpd_len) - 1. / sqrt(2.0), epsilon);
|
||||
|
||||
BOOST_CHECK_SMALL(sum3(obj->lpr, obj->lpr_len) - 1. / std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum3(obj->lpd, obj->lpd_len) - 1. / std::sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum3(obj->lpr, obj->lpr_len) - 1. / sqrt(2.0), epsilon);
|
||||
BOOST_CHECK_SMALL(sum3(obj->lpd, obj->lpd_len) - 1. / sqrt(2.0), epsilon);
|
||||
wave_free(obj);
|
||||
delete[] name;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user