Skip to content

Commit

Permalink
testing tuvx fortran api
Browse files Browse the repository at this point in the history
  • Loading branch information
K20shores committed Apr 25, 2024
1 parent 01c6c22 commit 6405196
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 3 deletions.
19 changes: 19 additions & 0 deletions fortran/test/fetch_content_integration/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,23 @@ add_test(
NAME test_micm_fort_api
COMMAND $<TARGET_FILE:test_micm_fort_api>
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
)

# API Test
add_executable(test_tuvx_core_api test_tuvx_api.F90)

target_link_libraries(test_tuvx_fort_api
PRIVATE
musica::musica-fortran
)

set_target_properties(test_tuvx_fort_api
PROPERTIES
LINKER_LANGUAGE Fortran
)

add_test(
NAME test_tuvx_fort_api
COMMAND $<TARGET_FILE:test_tuvx_fort_api>
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
)
51 changes: 51 additions & 0 deletions fortran/test/fetch_content_integration/test_tuvx_api.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
program combined_tuvx_tests
use iso_c_binding
use musica_tuvx_core, only: tuvx_t
use musica_util, only: assert

implicit none

#define ASSERT( expr ) call assert( expr, __FILE__, __LINE__ )
#define ASSERT_EQ( a, b ) call assert( a == b, __FILE__, __LINE__ )

! Declarations
type(tuvx_t), pointer :: tuvx
integer :: errcode

! Call the valid test subroutine
call test_tuvx_fort_api()

! Call the invalid test subroutine
call test_tuvx_fort_api_invalid()

contains

! Valid tuvx solver creation test
subroutine test_tuvx_fort_api()
character(len=256) :: config_path
logical(c_bool) :: bool_value

config_path = "configs/tuvx/ts1_tsmlt.json"

tuvx => tuvx_t(config_path, errcode)

end subroutine test_tuvx_fort_api

! Invalid tuvx solver creation test
subroutine test_tuvx_fort_api_invalid()
character(len=7) :: config_path

config_path = "invalid_config"

tuvx => tuvx_t(config_path, errcode)

if (errcode /= 0) then
write(*,*) "[test tuvx fort api] Failed in creating solver (Expected failure). Error code: ", errcode
else
write(*,*) "[test tuvx fort api] Unexpected error code when creating solver with invalid config: ", errcode
stop 3
endif

end subroutine test_tuvx_fort_api_invalid

end program combined_tuvx_tests
4 changes: 3 additions & 1 deletion fortran/test/unit/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
include(test_util)

create_standard_test_fortran(NAME micm_api SOURCES ../fetch_content_integration/test_micm_api.F90)
create_standard_test_fortran(NAME micm_fortran_api SOURCES ../fetch_content_integration/test_micm_api.F90)

if (MUSICA_ENABLE_TUVX)
create_standard_test_fortran(NAME connect_to_tuvx SOURCES tuvx.F90)
create_standard_test_fortran(NAME tuvx_fortran_api SOURCES ../fetch_content_integration/test_tuvx_api.F90)

if (MUSICA_ENABLE_OPENMP)
create_standard_test_fortran(NAME connect_to_tuvx_openmp SOURCES tuvx_openmp.F90)
endif()
Expand Down
4 changes: 2 additions & 2 deletions fortran/tuvx_core.F90
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module tuvx_core
module musica_tuvx_core

use iso_c_binding, only: c_ptr, c_char, c_int, c_bool, c_double, c_null_char, c_size_t, c_f_pointer
implicit none
Expand Down Expand Up @@ -61,4 +61,4 @@ subroutine finalize(this)
call delete_tuvx_c(this%ptr)
end subroutine finalize

end module tuvx_core
end module musica_tuvx_core

0 comments on commit 6405196

Please sign in to comment.