| ! { dg-do run } |
| ! Test different code paths for findloc with scalar result. |
| |
| program main |
| integer, dimension(0:5) :: a = [1,2,3,1,2,3] |
| logical, dimension(6) :: mask = [.false.,.false.,.false.,.true.,.true.,.true.] |
| logical, dimension(6) :: mask2 |
| logical :: true, false |
| character(len=2), dimension(6) :: ch = ["AA", "BB", "CC", "AA", "BB", "CC"] |
| |
| true = .true. |
| false = .false. |
| mask2 = .not. mask |
| |
| ! Tests without mask |
| |
| if (findloc(a,2,dim=1,back=false) /= 2) stop 1 |
| if (findloc(a,2,dim=1,back=.false.) /= 2) stop 2 |
| if (findloc(a,2,dim=1) /= 2) stop 3 |
| if (findloc(a,2,dim=1,back=.true.) /= 5) stop 4 |
| if (findloc(a,2,dim=1,back=true) /= 5) stop 5 |
| |
| ! Test with array mask |
| if (findloc(a,2,dim=1,mask=mask) /= 5) stop 6 |
| if (findloc(a,2,dim=1,mask=mask,back=.true.) /= 5) stop 7 |
| if (findloc(a,2,dim=1,mask=mask,back=.false.) /= 5) stop 8 |
| if (findloc(a,2,dim=1,mask=mask2) /= 2) stop 9 |
| if (findloc(a,2,dim=1,mask=mask2,back=.true.) /= 2) stop 10 |
| if (findloc(a,2,dim=1,mask=mask2,back=true) /= 2) stop 11 |
| |
| ! Test with scalar mask |
| |
| if (findloc(a,2,dim=1,mask=.true.) /= 2) stop 12 |
| if (findloc(a,2,dim=1,mask=.false.) /= 0) stop 13 |
| if (findloc(a,2,dim=1,mask=true) /= 2) stop 14 |
| if (findloc(a,2,dim=1,mask=false) /= 0) stop 15 |
| |
| ! Some character tests |
| |
| if (findloc(ch,"AA",dim=1) /= 1) stop 16 |
| if (findloc(ch,"AA",dim=1,mask=mask) /= 4) stop 17 |
| if (findloc(ch,"AA",dim=1,back=.true.) /= 4) stop 18 |
| if (findloc(ch,"AA",dim=1,mask=mask2,back=.true.) /= 1) stop 19 |
| |
| ! Nothing to be found here... |
| if (findloc(ch,"DD",dim=1) /= 0) stop 20 |
| if (findloc(a,4,dim=1) /= 0) stop 21 |
| |
| ! Finally, character tests with a scalar mask. |
| |
| if (findloc(ch,"CC ",dim=1,mask=true) /= 3) stop 22 |
| if (findloc(ch,"CC ",dim=1,mask=false) /= 0) stop 23 |
| end program main |