Skip to content

Commit

Permalink
Clean up tests and add more coverage
Browse files Browse the repository at this point in the history
This cleans up the CMake files related to testing. It
also adds testing for failures, and other tests that
increase test coverage.
  • Loading branch information
bennybp committed Jan 30, 2018
1 parent 97257f6 commit 8b0114e
Show file tree
Hide file tree
Showing 5 changed files with 203 additions and 74 deletions.
112 changes: 38 additions & 74 deletions tests/CMakeLists.txt
@@ -1,3 +1,5 @@
include(CMakeMacros.txt)

#############################################
# Check the sha sums on the test data #
# We check for the 'shasum' and 'sha256sum' #
Expand All @@ -10,7 +12,7 @@ if(NOT SHASUM_PROG)
endif()

if(NOT SHASUM_PROG)
message(STATUS "shasum or sha256sum not found. I wont check the data files")
message(STATUS "shasum or sha256sum not found. I will not check the data files")
else()
add_test(NAME tests_checksum
COMMAND ${SHASUM_PROG} -c sha256sums
Expand All @@ -19,86 +21,48 @@ else()
endif()



######################################
# Creates a test of the boys function
# Tests the help screen of test progs
######################################
macro(add_boys_test filename floattype prec extra_m)
if(${prec} EQUAL 0)
add_test(NAME boys_${filename}_${floattype}_extra_${extra_m}
COMMAND mirp_verify_test --integral boys
--file ${CMAKE_CURRENT_LIST_DIR}/${filename}
--float ${floattype}
--extra-m ${extra_m}
)
else()
add_test(NAME boys_${filename}_${floattype}_${prec}_extra_${extra_m}
COMMAND mirp_verify_test --integral boys
--file ${CMAKE_CURRENT_LIST_DIR}/${filename}
--float ${floattype} --prec ${prec}
--extra-m ${extra_m}
)
endif()
endmacro()

##############################################
# Creates a test of general integrals
##############################################
macro(add_integral_test filename integral floattype prec)
if(${prec} EQUAL 0)
add_test(NAME ${integral}_${filename}_${floattype}
COMMAND mirp_verify_test --integral ${integral}
--file ${CMAKE_CURRENT_LIST_DIR}/${filename}
--float ${floattype}
)
else()
add_test(NAME ${integral}_${filename}_${floattype}_${prec}
COMMAND mirp_verify_test --integral ${integral}
--file ${CMAKE_CURRENT_LIST_DIR}/${filename}
--float ${floattype} --prec ${prec}
)
endif()
endmacro()
add_test(NAME help_mirp_create_test_1 COMMAND mirp_create_test)
add_test(NAME help_mirp_create_test_2 COMMAND mirp_create_test -h)
add_test(NAME help_mirp_verify_test_1 COMMAND mirp_verify_test)
add_test(NAME help_mirp_verify_test_2 COMMAND mirp_verify_test -h)
add_test(NAME help_mirp_create_reference_1 COMMAND mirp_create_reference)
add_test(NAME help_mirp_create_reference_2 COMMAND mirp_create_reference -h)
add_test(NAME help_mirp_verify_reference_1 COMMAND mirp_verify_reference)
add_test(NAME help_mirp_verify_reference_2 COMMAND mirp_verify_reference -h)


##############################################
# Creates a test of reference files
##############################################
macro(add_integral_reftest filename integral)
add_test(NAME reftest_${integral}_${filename}
COMMAND mirp_verify_reference --integral ${integral}
--file ${CMAKE_CURRENT_LIST_DIR}/${filename}
)
endmacro()
#############################################
# Test failures
# This makes sure the testing infrastructure
# is sane
#############################################
__verify_test_boys(${CMAKE_CURRENT_LIST_DIR}/boys_failure_1.dat interval 332 0 "1 / 1 failed")
__verify_test_boys(${CMAKE_CURRENT_LIST_DIR}/boys_failure_1.dat interval 332 10 "1 / 1 failed")
__verify_test(${CMAKE_CURRENT_LIST_DIR}/gtoeri_failure_1.dat gtoeri interval 332 "1 / 1 failed")


################
# Boys function
add_boys_test(boys_large_range.dat exact 0 0)
add_boys_test(boys_large_range.dat exact 0 10)
add_boys_test(boys_large_range.dat interval 128 0)
add_boys_test(boys_large_range.dat interval 128 10)
add_boys_test(boys_large_range.dat interval 332 0)
add_boys_test(boys_large_range.dat interval 332 10)
add_boys_test(boys_large_random.dat exact 0 0)
add_boys_test(boys_large_random.dat exact 0 10)
add_boys_test(boys_large_random.dat interval 128 0)
add_boys_test(boys_large_random.dat interval 128 10)
add_boys_test(boys_large_random.dat interval 332 0)
add_boys_test(boys_large_random.dat interval 332 10)
################
verify_test_boys(${CMAKE_CURRENT_LIST_DIR}/boys_large_range.dat)
verify_test_boys(${CMAKE_CURRENT_LIST_DIR}/boys_large_random.dat)
create_and_verify_test_boys(${CMAKE_CURRENT_LIST_DIR}/boys_large_random.inp)


############
# ERI
add_integral_test(gtoeri_single_random_1.dat gtoeri_single interval 128)
add_integral_test(gtoeri_single_random_1.dat gtoeri_single interval 332)
add_integral_test(gtoeri_single_random_1.dat gtoeri_single exact 0)
add_integral_test(gtoeri_single_water_sto-3g.dat gtoeri_single interval 128)
add_integral_test(gtoeri_single_water_sto-3g.dat gtoeri_single interval 332)
add_integral_test(gtoeri_single_water_sto-3g.dat gtoeri_single exact 0)
############
verify_test(${CMAKE_CURRENT_LIST_DIR}/gtoeri_single_random_1.dat gtoeri_single)
verify_test(${CMAKE_CURRENT_LIST_DIR}/gtoeri_single_water_sto-3g.dat gtoeri_single)

verify_test(${CMAKE_CURRENT_LIST_DIR}/gtoeri_random_1.dat gtoeri)
verify_test(${CMAKE_CURRENT_LIST_DIR}/gtoeri_water_sto-3g.dat gtoeri)

verify_reference(${CMAKE_CURRENT_LIST_DIR}/gtoeri_water_sto-3g.ref gtoeri)

add_integral_test(gtoeri_random_1.dat gtoeri interval 128)
add_integral_test(gtoeri_random_1.dat gtoeri interval 332)
add_integral_test(gtoeri_random_1.dat gtoeri exact 0)
add_integral_test(gtoeri_water_sto-3g.dat gtoeri interval 128)
add_integral_test(gtoeri_water_sto-3g.dat gtoeri interval 332)
add_integral_test(gtoeri_water_sto-3g.dat gtoeri exact 0)

add_integral_reftest(gtoeri_water_sto-3g.ref gtoeri)
create_and_verify_test(${CMAKE_CURRENT_LIST_DIR}/4center_single_water_sto-3g.inp gtoeri_single)
create_and_verify_test(${CMAKE_CURRENT_LIST_DIR}/4center_water_sto-3g.inp gtoeri)
create_and_verify_reference(gtoeri)
138 changes: 138 additions & 0 deletions tests/CMakeMacros.txt
@@ -0,0 +1,138 @@
####################################################
# Verifies a Boys function test file
# This verifies a single test file with the given parameters
####################################################
macro(__verify_test_boys filepath floattype prec extra_m)
get_filename_component(filename ${filepath} NAME)

if(${prec} EQUAL 0)
set(test_name boys_${filename}_${floattype}_+${extra_m})
add_test(NAME ${test_name}
COMMAND mirp_verify_test --integral boys
--file ${filepath}
--float ${floattype}
--extra-m ${extra_m}
)
else()
set(test_name boys_${filename}_${floattype}_${prec}_+${extra_m})
add_test(NAME ${test_name}
COMMAND mirp_verify_test --integral boys
--file ${filepath}
--float ${floattype} --prec ${prec}
--extra-m ${extra_m}
)
endif()

# Parse the PASS_REGULAR_EXPRESSION, if provided
set(extra_args ${ARGN})
list(LENGTH extra_args len)
if(${len} GREATER 0)
set_tests_properties(${test_name} PROPERTIES PASS_REGULAR_EXPRESSION ${extra_args})
endif()
endmacro()


#######################################
# Verifies a Boys function test file
# This tests with multiple float types,
# precisions, and extra m values
#######################################
macro(verify_test_boys filepath)
__verify_test_boys(${filepath} exact 0 0)
__verify_test_boys(${filepath} exact 0 10)
__verify_test_boys(${filepath} interval 128 0)
__verify_test_boys(${filepath} interval 128 10)
__verify_test_boys(${filepath} interval 332 0)
__verify_test_boys(${filepath} interval 332 10)
endmacro()


################################################################
# Create an Boys test file via create_test, then verify it
################################################################
macro(create_and_verify_test_boys filepath)
get_filename_component(filename ${filepath} NAME)
add_test(NAME boys_${filename}_create_test
COMMAND mirp_create_test --infile ${filepath}
--outfile boys_${filename}_testcreate.dat
--integral boys --prec 2048 --ndigits 101
)
verify_test_boys(boys_${filename}_testcreate.dat)
endmacro()


##############################################################
# Verify an integral test file
# This verifies a single test file with the given parameters
##############################################################
macro(__verify_test filepath integral floattype prec)
get_filename_component(filename ${filepath} NAME)
if(${prec} EQUAL 0)
set(test_name ${integral}_${filename}_${floattype})
add_test(NAME ${test_name}
COMMAND mirp_verify_test --integral ${integral}
--file ${filepath}
--float ${floattype}
)
else()
set(test_name ${integral}_${filename}_${floattype}_${prec})
add_test(NAME ${test_name}
COMMAND mirp_verify_test --integral ${integral}
--file ${filepath}
--float ${floattype} --prec ${prec}
)
endif()

# Parse the PASS_REGULAR_EXPRESSION, if provided
set(extra_args ${ARGN})
list(LENGTH extra_args len)
if(${len} GREATER 0)
set_tests_properties(${test_name} PROPERTIES PASS_REGULAR_EXPRESSION ${extra_args})
endif()
endmacro()

macro(verify_test filepath integral)
__verify_test(${filepath} ${integral} interval 128)
__verify_test(${filepath} ${integral} interval 332)
__verify_test(${filepath} ${integral} exact 0)
endmacro()


####################################################
# Verify an integral reference file
####################################################
macro(verify_reference filepath integral)
get_filename_component(filename ${filepath} NAME)
add_test(NAME reference_${integral}_${filename}
COMMAND mirp_verify_reference --integral ${integral}
--file ${filepath}
)
endmacro()


################################################################
# Create an integral test file via create_test, then verify it
################################################################
macro(create_and_verify_test filepath integral)
get_filename_component(filename ${filepath} NAME)
add_test(NAME ${integral}_${filename}_create_test
COMMAND mirp_create_test --infile ${filepath}
--outfile ${integral}_${filename}_testcreate.dat
--integral ${integral} --prec 2048 --ndigits 101
)
verify_test(${integral}_${filename}_testcreate.dat ${integral})
endmacro()


################################################################
# Create a reference file via create_reference, then verify it
################################################################
macro(create_and_verify_reference integral)
add_test(NAME ${integral}_${geometry}_${basis}_create_reference
COMMAND mirp_create_reference --integral ${integral}
--basis ${CMAKE_CURRENT_LIST_DIR}/generator/basis/sto-3g.bas
--geometry ${CMAKE_CURRENT_LIST_DIR}/generator/geometry/water.xyz
--outfile ${integral}_testref.ref
)
verify_reference(${integral}_testref.ref ${integral})
endmacro()
7 changes: 7 additions & 0 deletions tests/boys_failure_1.dat
@@ -0,0 +1,7 @@
# Testing of this file is expected to fail
#
# This is used to make sure the testing infrastructure can correctly
# detect incorrect values
#
1 101 2048
32 1.1654761577288435141645663404123e-12 [0.015384615384597989448851358906513336542127790970188751074745882155630219717636012984593279287141872640 +/- 4.20e-103]
18 changes: 18 additions & 0 deletions tests/gtoeri_failure_1.dat
@@ -0,0 +1,18 @@
# Testing of this file is expected to fail
#
# This is used to make sure the testing infrastructure can correctly
# detect incorrect values
#
1 101 2048
0 1 1 -1.0275129024292187679e-1 -2.2740534643066436648e-1 -2.7896675226993706728
7.8742584971383121319e-3 5.7730611000421486641e-3
0 1 1 8.3523545920802648038e-1 -7.9018496590739901763 -5.4052001289434744771
3.0685797439405440051e-2 1.9177072934115834967e-3
0 2 1 -3.3207070731144863347e-1 -2.7016781855672112947e-1 -1.5330920733346822219
1.650044882129425249e+7 9.7728974549573390749e+2
3.320218573802041738e-5 4.0152890008283762295e-1
0 2 2 -6.6311943406343432816e-1 9.1645926631222398191e-1 4.6740049726411933463
4.5904909654730448305e+6 3.6989583204899623791e+4 3.4794263336436944957e-2
2.4817791487878385728e+3 5.1221349104055463138e+1 2.2310727247558484503e-2
0 [2.8125644708357361955127280082157784327249840664649498067745110272843684766139456144433480670757325372e-13 +/- 8.47e-115]
1 [3.0823619411641481440734912512476638867867128692479000735860669677800619209516562863728479688621615348e-11 +/- 3.67e-112]
2 changes: 2 additions & 0 deletions tests/sha256sums
Expand Up @@ -2,10 +2,12 @@
9b52a7d72f8133488bd23ebb321d14d8d6dadd3ebbf1ff1ceb41a3453a373a5d 4center_single_random_1.inp
efc008c6a2231c32614cdda8e0781c4886b57db18e70c53fd74f5a2435cfd732 4center_single_water_sto-3g.inp
36645775232d7cec28adb0ac8eed58bdba718ff9ebeda35168bc12f0da2b5221 4center_water_sto-3g.inp
ce073ffc5dc09966c467caa434493f5d4692229368b04d14fb335617d07d4a17 boys_failure_1.dat
95751f5b232b5b298e05eac38dbd1928286aba2fb34e5d299eb4eefaf7265ecf boys_large_random.dat
8619043c287333f423963f331200cb27a07d33bf18928c85f88a1f15088b0060 boys_large_random.inp
c262fe417bb7c4f3bc82074a253c23591daa3641631d8283582d825967974c60 boys_large_range.dat
38be7c233d16eeb7718017bf0c6481b54de0fb0d3b25e99e6c45b0a40004b18b boys_large_range.inp
b37c4ed6942801b0b646a62a64498166b8eb09b28ae9371494bfa092024123a5 gtoeri_failure_1.dat
6f96bd38a9146426cfbc0361587792475967e70c2b00cd8775c377398dbe805a gtoeri_random_1.dat
745433e423f6db27128e97636bfedb8bd24412efac28a5645074965be8977255 gtoeri_single_random_1.dat
9af9fc72682654c63e87d1b6f3150efb9c637924fff7eb5437f720b854282a85 gtoeri_single_water_sto-3g.dat
Expand Down

0 comments on commit 8b0114e

Please sign in to comment.