subroutine test_replace_delimiter() character(len=:), allocatable :: d, r character(len=*), parameter :: A = 'bread' character(len=*), parameter :: B = 'butter' d = '.' r = '/' @assertEqual(CAT(A,r,B), replace_delimiter(CAT(A,d,B), d, r), 'Default - ' // make_message(d, r)) @assertEqual(CAT(A,r,B), replace_delimiter(CAT(A,d,B)), 'No args') d = '@' r = '*' @assertEqual(CAT(A,r,B), replace_delimiter(CAT(A,d,B), d, r), make_message(d, r)) d = '::' r = '---' @assertEqual(CAT(A,r,B), replace_delimiter(CAT(A,d,B), d, r), make_message(d, r)) d = '' @assertEqual(CAT(A,r,B), replace_delimiter(CAT(A,r,B), d, r), make_message(d, r)) d = '.' r = '' @assertEqual(CAT(A,d,B), replace_delimiter(CAT(A,d,B), d, r), make_message(d, r)) @assertEqual('', replace_delimiter('', d, r), make_message(d, r)) contains function make_message(delimiter, replacement) result(message) character(len=:), allocatable :: message character(len=*), intent(in) :: delimiter, replacement message = 'Args: ("' // delimiter // '", "' // replacement // '") - ' end function make_message end subroutine test_replace_delimiter