This lightly commented program performs a unit test on the Logical Class.
program Unit_Test use Caesar_Logical_Class implicit none type(logical) :: L type(logical,3) :: L3 ! Initialize logicals. call Initialize (L) call Initialize (L3, 3, 4, 5) ! Logical Valid_State tests. L = .false. write (6,*) 'Valid_State L =', Valid_State(L) L = .true. write (6,*) 'Valid_State L =', Valid_State(L) L3 = .false. write (6,*) 'Valid_State L3 =', Valid_State(L3) L3 = .true. write (6,*) 'Valid_State L3 =', Valid_State(L3) ! Logical scalar function tests. L = .false. write (6,*) 'COUNT(L) =', COUNT(L) write (6,*) 'ALL(L) =', ALL(L) write (6,*) 'ANY(L) =', ANY(L) L = .true. write (6,*) 'COUNT(L) =', COUNT(L) write (6,*) 'ALL(L) =', ALL(L) write (6,*) 'ANY(L) =', ANY(L) ! Logical interval tests. write (6,*) 'Following intervals should use brackets, ' write (6,*) 'but they are not available in F90.' write (6,*) 'Is 1 in (1,99)?:', 1 .InInterval. (/1, 99/) write (6,*) 'Is 5 in (3,7)?:', 5 .InInterval. (/3, 7/) write (6,*) 'Is (6,3,4) in (3,7)?:', & (/6, 3, 4/) .InInterval. (/3, 7/) write (6,*) 'Is (6,3,4,8) in (3,7)?:', & (/6, 3, 4, 8/) .InInterval. (/3, 7/) write (6,*) 'Is 1.0 in (1.0,99.0)?:', 1.d0 .InInterval. (/1.d0, 99.d0/) write (6,*) 'Is 3.14159 in (2.3,10.4)?:', & 3.14159d0 .InInterval. (/2.3d0, 10.4d0/) write (6,*) 'Is (3.14159,4.2,5.8) in (2.3,10.4)?:', & (/3.14159d0, 4.2d0, 5.8d0/) .InInterval. (/2.3d0, 10.4d0/) write (6,*) 'Is (3.14159,4.2,5.8,14.0) in (2.3,10.4)?:', & (/3.14159d0, 4.2d0, 5.8d0, 14.d0/) .InInterval. (/2.3d0, 10.4d0/) write (6,*) 'Is 1 not in (1,99)?:', 1 .NotInInterval. (/1, 99/) write (6,*) 'Is 1 not in (3,7)?:', 1 .NotInInterval. (/3, 7/) write (6,*) 'Is (6,3,4) not in (3,7)?:', & (/6, 3, 4/) .NotInInterval. (/3, 7/) write (6,*) 'Is (16,-3,14,8) not in (3,7)?:', & (/16, -3, 14, 8/) .NotInInterval. (/3, 7/) write (6,*) 'Is 1.0 not in (1.0,99.0)?:', 1.d0 .NotInInterval. (/1.d0, 99.d0/) write (6,*) 'Is 3.14159 not in (2.3,10.4)?:', & 3.14159d0 .NotInInterval. (/2.3d0, 10.4d0/) write (6,*) 'Is (3.14159,4.2,5.8) not in (2.3,10.4)?:', & (/3.14159d0, 4.2d0, 5.8d0/) .NotInInterval. (/2.3d0, 10.4d0/) write (6,*) 'Is (-3.14159,14.2,-5.8,14.0) not in (2.3,10.4)?:', & (/-3.14159d0, 14.2d0, -5.8d0, 14.d0/) & .NotInInterval. (/2.3d0, 10.4d0/) ! Finalize logicals. call Finalize (L) call Finalize (L3) end