Test morton3 encoder/decoder.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(tester_t), | intent(inout) | :: | tester_handler | Tester handler. |
||
| integer(kind=int32), | intent(in) | :: | indexes(1:3) | Indexes. |
||
| integer(kind=int64), | intent(in) | :: | reference | Reference morton code. |
subroutine test_morton3D(tester_handler, indexes, reference)
!---------------------------------------------------------------------------------------------------------------------------------
!< Test morton3 encoder/decoder.
!---------------------------------------------------------------------------------------------------------------------------------
type(tester_t), intent(inout) :: tester_handler !< Tester handler.
integer(int32), intent(in) :: indexes(1:3) !< Indexes.
integer(int64), intent(in) :: reference !< Reference morton code.
integer(int64) :: morton !< Morton code.
integer(int32) :: de_indexes(1:3) !< Indexes computed by decoding reference.
!---------------------------------------------------------------------------------------------------------------------------------
!---------------------------------------------------------------------------------------------------------------------------------
morton = morton3D(i=indexes(1), j=indexes(2), k=indexes(3))
call demorton3D(code=reference, i=de_indexes(1), j=de_indexes(2), k=de_indexes(3))
call tester_handler%assert_equal(int(morton, int32), int(reference, int32))
! call tester_handler%assert_equal(.true., all(de_indexes==indexes)) ! TODO reintroduce
!---------------------------------------------------------------------------------------------------------------------------------
endsubroutine test_morton3D