blob: 6fa72d84c65f59ac69188abb0810f35a69326fae [file] [log] [blame]
! { 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