Reversing twice should restore the original map (reverse is an involution).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(inout) | :: | id | |||
| integer, | intent(inout) | :: | nfail |
subroutine test_065(id, nfail) use forcolormap, only: Colormap, wp integer, intent(inout) :: id, nfail character(len=*), parameter :: name = "reverse(reverse(cm)) == cm (map restored)" logical :: ok type(Colormap) :: cm integer :: map(5,3) integer :: ref(0:4,3) integer :: i, r, g, b map(1,:) = [ 1, 2, 3 ] map(2,:) = [ 4, 5, 6 ] map(3,:) = [ 7, 8, 9 ] map(4,:) = [ 10, 11, 12 ] map(5,:) = [ 13, 14, 15 ] call cm%create("custom", 0.0_wp, 1.0_wp, map) do i = 0, cm%get_levels()-1 call cm%get_RGB(i, r, g, b) ref(i,1) = r; ref(i,2) = g; ref(i,3) = b end do call cm%reverse() call cm%reverse() ok = .true. do i = 0, cm%get_levels()-1 call cm%get_RGB(i, r, g, b) ok = ok .and. (r == ref(i,1)) .and. (g == ref(i,2)) .and. (b == ref(i,3)) end do call report_test(name, ok, id, nfail) end subroutine test_065