Test_FieldCondensedArray_private.pf Source File


This file depends on

sourcefile~~test_fieldcondensedarray_private.pf~~EfferentGraph sourcefile~test_fieldcondensedarray_private.pf Test_FieldCondensedArray_private.pf sourcefile~fieldcondensedarray_private.f90 FieldCondensedArray_private.F90 sourcefile~test_fieldcondensedarray_private.pf->sourcefile~fieldcondensedarray_private.f90 sourcefile~mapl_exceptionhandling.f90 MAPL_ExceptionHandling.F90 sourcefile~test_fieldcondensedarray_private.pf->sourcefile~mapl_exceptionhandling.f90 sourcefile~fieldcondensedarray_private.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~errorhandling.f90 ErrorHandling.F90 sourcefile~mapl_exceptionhandling.f90->sourcefile~errorhandling.f90 sourcefile~mapl_throw.f90 MAPL_Throw.F90 sourcefile~mapl_exceptionhandling.f90->sourcefile~mapl_throw.f90 sourcefile~errorhandling.f90->sourcefile~mapl_throw.f90

Source Code

#include "MAPL_TestErr.h"
module Test_FieldCondensedArray_private

    use MAPL_ExceptionHandling
    use pfunit
    use mapl3g_FieldCondensedArray_private
    implicit none

    character, parameter :: GENERIC_MESSAGE = 'actual does not match expected.'
    
contains

    @Test
    subroutine test_get_fptr_shape_3D()
       integer :: expected(ARRAY_RANK), actual(ARRAY_RANK)
       integer, allocatable :: gridToFieldMap(:)
       integer, allocatable :: localElementCount(:)
       logical :: has_vertical

       has_vertical = .TRUE.
       gridToFieldMap = [1, 2]
       localElementCount = [3, 5, 7]
       expected = [product(localElementCount(1:2)), localElementCount(3), 1]
       actual = get_fptr_shape_private(gridToFieldMap, localElementCount, has_vertical)
       @assert_that(GENERIC_MESSAGE, actual, is(equal_to(expected)))

    end subroutine test_get_fptr_shape_3D

    @Test
    subroutine test_get_fptr_shape_2D()
       integer :: expected(ARRAY_RANK), actual(ARRAY_RANK)
       integer, allocatable :: gridToFieldMap(:)
       integer, allocatable :: localElementCount(:)
       logical :: has_vertical

       has_vertical = .FALSE.
       gridToFieldMap = [1, 2]
       localElementCount = [3, 5]
       expected = [product(localElementCount), 1, 1]
       actual = get_fptr_shape_private(gridToFieldMap, localElementCount, has_vertical)
       @assert_that(GENERIC_MESSAGE, actual, is(equal_to(expected)))

    end subroutine test_get_fptr_shape_2D

    @Test
    subroutine test_get_fptr_shape_general()
       integer :: expected(ARRAY_RANK), actual(ARRAY_RANK)
       integer, allocatable :: gridToFieldMap(:)
       integer, allocatable :: localElementCount(:)
       logical :: has_vertical

       has_vertical = .TRUE.
       gridToFieldMap = [1, 2]
       localElementCount = [2, 3, 5, 7, 11]
       expected = [product(localElementCount(1:2)), localElementCount(3), product(localElementCount(4:))]
       actual = get_fptr_shape_private(gridToFieldMap, localElementCount, has_vertical)
       @assert_that(GENERIC_MESSAGE, actual, is(equal_to(expected)))

    end subroutine test_get_fptr_shape_general

    @Test
    subroutine test_get_fptr_shape_noz()
       integer :: expected(ARRAY_RANK), actual(ARRAY_RANK)
       integer, allocatable :: gridToFieldMap(:)
       integer, allocatable :: localElementCount(:)
       logical :: has_vertical

       has_vertical = .FALSE.

       gridToFieldMap = [1, 2]
       localElementCount = [2, 3, 5, 7]
       expected = [product(localElementCount(1:2)), 1, product(localElementCount(3:))]
       actual = get_fptr_shape_private(gridToFieldMap, localElementCount, has_vertical)
       @assert_that(GENERIC_MESSAGE, actual, is(equal_to(expected)))

    end subroutine test_get_fptr_shape_noz

    @Test
    subroutine test_get_fptr_shape_0D()
       integer :: expected(ARRAY_RANK), actual(ARRAY_RANK)
       integer, allocatable :: gridToFieldMap(:)
       integer, allocatable :: localElementCount(:)
       logical :: has_vertical

       has_vertical = .FALSE.
       gridToFieldMap = [0, 0]
       localElementCount = [5, 7, 11]
       expected = [1, 1, product(localElementCount)]
       actual = get_fptr_shape_private(gridToFieldMap, localElementCount, has_vertical)
       @assert_that(GENERIC_MESSAGE, actual, is(equal_to(expected)))

    end subroutine test_get_fptr_shape_0D

    @Test
    subroutine test_get_fptr_shape_vert_only()
       integer :: expected(ARRAY_RANK), actual(ARRAY_RANK)
       integer, allocatable :: gridToFieldMap(:)
       integer, allocatable :: localElementCount(:)
       logical :: has_vertical

       has_vertical = .TRUE.
       gridToFieldMap = [0, 0]
       localElementCount = [3]
       expected = [1, localElementCount(1), 1]
       actual = get_fptr_shape_private(gridToFieldMap, localElementCount, has_vertical)
       @assert_that(GENERIC_MESSAGE, actual, is(equal_to(expected)))

    end subroutine test_get_fptr_shape_vert_only

    @Test
    subroutine test_get_fptr_shape_vert_ungrid()
       integer :: expected(ARRAY_RANK), actual(ARRAY_RANK)
       integer, allocatable :: gridToFieldMap(:)
       integer, allocatable :: localElementCount(:)
       logical :: has_vertical

       gridToFieldMap = [0, 0]
       has_vertical = .TRUE.
       localElementCount = [3, 5, 7]
       expected = [1, localElementCount(1), product(localElementCount(2:))]
       actual = get_fptr_shape_private(gridToFieldMap, localElementCount, has_vertical)
       @assert_that(GENERIC_MESSAGE, actual, is(equal_to(expected)))

    end subroutine test_get_fptr_shape_vert_ungrid
    
    @Test
    subroutine test_get_fptr_shape_2D_ungrid()
       integer :: expected(ARRAY_RANK), actual(ARRAY_RANK)
       integer, allocatable :: gridToFieldMap(:)
       integer, allocatable :: localElementCount(:)
       logical :: has_vertical

       has_vertical = .FALSE.
       gridToFieldMap = [1, 2]
       localElementCount = [3, 5, 7, 11]
       expected = [product(localElementCount(1:2)), 1, product(localElementCount(3:))]
       actual = get_fptr_shape_private(gridToFieldMap, localElementCount, has_vertical)
       @assert_that(GENERIC_MESSAGE, actual, is(equal_to(expected)))

    end subroutine test_get_fptr_shape_2D_ungrid

    @Test
    subroutine test_get_fptr_shape_wrong_order_raise_exception()
       integer :: expected(ARRAY_RANK), actual(ARRAY_RANK)
       integer, allocatable :: gridToFieldMap(:)
       integer, allocatable :: localElementCount(:)
       logical :: has_vertical
       integer :: status

       gridToFieldMap = [4, 5]
       has_vertical = .TRUE.
       localElementCount = [2, 3, 5, 7, 11]
       expected = [product(localElementCount(4:5)), localElementCount(3), product(localElementCount(1:2))]
       ! This tests throws an Exception for improper input arguments.
       ! In other words, the improper input arguments ARE the point.
       actual = get_fptr_shape_private(gridToFieldMap, localElementCount, has_vertical, rc=status)
       @assertExceptionRaised()

    end subroutine test_get_fptr_shape_wrong_order_raise_exception

end module Test_FieldCondensedArray_private