test2.f90 Source File


This file depends on

sourcefile~~test2.f90~~EfferentGraph sourcefile~test2.f90 test2.f90 sourcefile~forunittest.f90 forunittest.F90 sourcefile~test2.f90->sourcefile~forunittest.f90

Source Code

program test2

   use forunittest, only : unit_tests, rk, ik

   implicit none

   type(unit_tests) :: tests

   call tests%initialize(50)

   !> Real Scalar Tests
   call tests%test(1)%check(&
      name     = "real_scalar_pass_1",&
      res      = 1.0_rk,&
      expected = 1.0_rk,&
      tol      = 1e-5_rk,&
      msg      = "Real scalar match",&
      group    = "real_scalar")

   call tests%test(2)%check(&
      name     = "real_scalar_fail_1",&
      res      = 2.0_rk,&
      expected = 1.0_rk,&
      tol      = 1e-5_rk,&
      msg      = "Real scalar mismatch",&
      group    = "real_scalar")

   call tests%test(3)%check(&
      name     = "real_scalar_pass_2",&
      res      = 1.0_rk,&
      expected = 1.0_rk,&
      msg      = "Real scalar match (no tol)",&
      group    = "real_scalar")

   call tests%test(4)%check(&
      name     = "real_scalar_fail_2",&
      res      = 2.0_rk,&
      expected = 1.0_rk,&
      msg      = "Real scalar mismatch (no tol)",&
      group    = "real_scalar")

   !> Real Vector Tests
   call tests%test(5)%check(&
      name     = "real_vector_pass_1",&
      res      = [1.0_rk,2.0_rk],&
      expected = [1.0_rk,2.0_rk],&
      tol      = 1e-5_rk,&
      msg      = "Real vector match",&
      group    = "real_vector")

   call tests%test(6)%check(&
      name     = "real_vector_fail_1",&
      res      = [1.0_rk,1.0_rk],&
      expected = [1.0_rk,2.0_rk],&
      tol      = 1e-5_rk,&
      msg      = "Real vector value error",&
      group    = "real_vector")

   call tests%test(7)%check(&
      name     = "real_vector_fail_2",&
      res      = [2.0_rk,1.0_rk],&
      expected = [1.0_rk,2.0_rk],&
      tol      = 1e-5_rk,&
      msg      = "Real vector order error",&
      group    = "real_vector")

   call tests%test(8)%check(&
      name     = "real_vector_pass_2",&
      res      = [1.0_rk,2.0_rk],&
      expected = [1.0_rk,2.0_rk],&
      msg      = "Real vector match (no tol)",&
      group    = "real_vector")

   call tests%test(9)%check(&
      name     = "real_vector_fail_3",&
      res      = [1.0_rk,1.0_rk],&
      expected = [1.0_rk,2.0_rk],&
      msg      = "Real vector value error (no tol)",&
      group    = "real_vector")

   call tests%test(10)%check(&
      name     = "real_vector_fail_4",&
      res      = [2.0_rk,1.0_rk],&
      expected = [1.0_rk,2.0_rk],&
      msg      = "Real vector order error (no tol)",&
      group    = "real_vector")

   !> Real Matrix Tests
   call tests%test(11)%check(&
      name     = "real_matrix_pass_1",&
      res      = reshape([1.0_rk,2.0_rk,3.0_rk,4.0_rk],[2,2]),&
      expected = reshape([1.0_rk,2.0_rk,3.0_rk,4.0_rk],[2,2]),&
      tol      = 1e-5_rk,&
      msg      = "Real matrix match",&
      group    = "real_matrix")

   call tests%test(12)%check(&
      name     = "real_matrix_fail_1",&
      res      = reshape([1.0_rk,2.0_rk,3.0_rk,5.0_rk],[2,2]),&
      expected = reshape([1.0_rk,2.0_rk,3.0_rk,4.0_rk],[2,2]),&
      tol      = 1e-5_rk,&
      msg      = "Real matrix value error",&
      group    = "real_matrix")

   call tests%test(13)%check(&
      name     = "real_matrix_fail_2",&
      res      = reshape([1.0_rk,2.0_rk,4.0_rk,3.0_rk],[2,2]),&
      expected = reshape([1.0_rk,2.0_rk,3.0_rk,4.0_rk],[2,2]),&
      tol      = 1e-5_rk,&
      msg      = "Real matrix order error",&
      group    = "real_matrix")

   call tests%test(14)%check(&
      name     = "real_matrix_pass_2",&
      res      = reshape([1.0_rk,2.0_rk,3.0_rk,4.0_rk],[2,2]),&
      expected = reshape([1.0_rk,2.0_rk,3.0_rk,4.0_rk],[2,2]),&
      msg      = "Real matrix match (no tol)",&
      group    = "real_matrix")

   call tests%test(15)%check(&
      name     = "real_matrix_fail_3",&
      res      = reshape([1.0_rk,2.0_rk,3.0_rk,5.0_rk],[2,2]),&
      expected = reshape([1.0_rk,2.0_rk,3.0_rk,4.0_rk],[2,2]),&
      msg      = "Real matrix value error (no tol)",&
      group    = "real_matrix")

   call tests%test(16)%check(&
      name     = "real_matrix_fail_4",&
      res      = reshape([1.0_rk,2.0_rk,4.0_rk,3.0_rk],[2,2]),&
      expected = reshape([1.0_rk,2.0_rk,3.0_rk,4.0_rk],[2,2]),&
      msg      = "Real matrix order error (no tol)",&
      group    = "real_matrix")

   !> Integer Scalar Tests
   call tests%test(17)%check(&
      name     = "int_scalar_pass_1",&
      res      = 1_ik,&
      expected = 1_ik,&
      msg      = "Integer scalar match",&
      group    = "int_scalar")

   call tests%test(18)%check(&
      name     = "int_scalar_fail_1",&
      res      = 2_ik,&
      expected = 1_ik,&
      msg      = "Integer scalar mismatch",&
      group    = "int_scalar")

   !> Integer Vector Tests
   call tests%test(19)%check(&
      name     = "int_vector_pass_1",&
      res      = [1,2],&
      expected = [1,2],&
      msg      = "Integer vector match",&
      group    = "int_vector")

   call tests%test(20)%check(&
      name     = "int_vector_fail_1",&
      res      = [1,3],&
      expected = [1,2],&
      msg      = "Integer vector value error",&
      group    = "int_vector")

   call tests%test(21)%check(&
      name     = "int_vector_fail_2",&
      res      = [2,1],&
      expected = [1,2],&
      msg      = "Integer vector order error",&
      group    = "int_vector")

   !> Integer Matrix Tests
   call tests%test(22)%check(&
      name     = "int_matrix_pass_1",&
      res      = reshape([1,2,3,4],[2,2]),&
      expected = reshape([1,2,3,4],[2,2]),&
      msg      = "Integer matrix match",&
      group    = "int_matrix")

   call tests%test(23)%check(&
      name     = "int_matrix_fail_1",&
      res      = reshape([1,2,3,5],[2,2]),&
      expected = reshape([1,2,3,4],[2,2]),&
      msg      = "Integer matrix value error",&
      group    = "int_matrix")

   call tests%test(24)%check(&
      name     = "int_matrix_fail_2",&
      res      = reshape([1,2,4,3],[2,2]),&
      expected = reshape([1,2,3,4],[2,2]),&
      msg      = "Integer matrix order error",&
      group    = "int_matrix")

   !> Logical Scalar Tests
   call tests%test(25)%check(&
      name     = "logical_scalar_pass_1",&
      res      = .true.,&
      expected = .true.,&
      msg      = "Logical scalar match",&
      group    = "logical_scalar")

   call tests%test(26)%check(&
      name     = "logical_scalar_fail_1",&
      res      = .false.,&
      expected = .true.,&
      msg      = "Logical scalar mismatch",&
      group    = "logical_scalar")

   !> Logical Vector Tests
   call tests%test(27)%check(&
      name     = "logical_vector_pass_1",&
      res      = [.true.,.false.],&
      expected = [.true.,.false.],&
      msg      = "Logical vector match",&
      group    = "logical_vector")

   call tests%test(28)%check(&
      name     = "logical_vector_fail_1",&
      res      = [.true.,.true.],&
      expected = [.true.,.false.],&
      msg      = "Logical vector value error",&
      group    = "logical_vector")

   call tests%test(29)%check(&
      name     = "logical_vector_fail_2",&
      res      = [.false.,.true.],&
      expected = [.true.,.false.],&
      msg      = "Logical vector order error",&
      group    = "logical_vector")

   !> Logical Matrix Tests
   call tests%test(30)%check(&
      name     = "logical_matrix_pass_1",&
      res      = reshape([.true.,.true.,.false.,.false.],[2,2]),&
      expected = reshape([.true.,.true.,.false.,.false.],[2,2]),&
      msg      = "Logical matrix match",&
      group    = "logical_matrix")

   call tests%test(31)%check(&
      name     = "logical_matrix_fail_1",&
      res      = reshape([.true.,.true.,.false.,.false.],[2,2]),&
      expected = reshape([.true.,.false.,.false.,.false.],[2,2]),&
      msg      = "Logical matrix value error",&
      group    = "logical_matrix")

   call tests%test(32)%check(&
      name     = "logical_matrix_fail_2",&
      res      = reshape([.true.,.true.,.false.,.false.],[2,2]),&
      expected = reshape([.true.,.false.,.true.,.false.],[2,2]),&
      msg      = "Logical matrix order error",&
      group    = "logical_matrix")

   !> Complex Scalar Tests
   call tests%test(33)%check(&
      name     = "complex_scalar_pass_1",&
      res      = (1.0_rk,1.0_rk),&
      expected = (1.0_rk,1.0_rk),&
      tol      = 1e-5_rk,&
      msg      = "Complex scalar match",&
      group    = "complex_scalar")

   call tests%test(34)%check(&
      name     = "complex_scalar_fail_1",&
      res      = (2.0_rk,1.0_rk),&
      expected = (1.0_rk,1.0_rk),&
      tol      = 1e-5_rk,&
      msg      = "Complex scalar real part error",&
      group    = "complex_scalar")

   call tests%test(35)%check(&
      name     = "complex_scalar_fail_2",&
      res      = (1.0_rk,2.0_rk),&
      expected = (1.0_rk,1.0_rk),&
      tol      = 1e-5_rk,&
      msg      = "Complex scalar imag part error",&
      group    = "complex_scalar")

   call tests%test(36)%check(&
      name     = "complex_scalar_pass_2",&
      res      = (1.0_rk,1.0_rk),&
      expected = (1.0_rk,1.0_rk),&
      msg      = "Complex scalar match (no tol)",&
      group    = "complex_scalar")

   call tests%test(37)%check(&
      name     = "complex_scalar_fail_3",&
      res      = (2.0_rk,1.0_rk),&
      expected = (1.0_rk,1.0_rk),&
      msg      = "Complex scalar real part error (no tol)",&
      group    = "complex_scalar")

   call tests%test(38)%check(&
      name     = "complex_scalar_fail_4",&
      res      = (1.0_rk,2.0_rk),&
      expected = (1.0_rk,1.0_rk),&
      msg      = "Complex scalar imag part error (no tol)",&
      group    = "complex_scalar")

   !> Complex Vector Tests
   call tests%test(39)%check(&
      name     = "complex_vector_pass_1",&
      res      = [cmplx(1,1,rk),cmplx(2,2,rk)],&
      expected = [cmplx(1,1,rk),cmplx(2,2,rk)],&
      tol      = 1e-5_rk,&
      msg      = "Complex vector match",&
      group    = "complex_vector")

   call tests%test(40)%check(&
      name     = "complex_vector_fail_1",&
      res      = [cmplx(2,1,rk),cmplx(2,2,rk)],&
      expected = [cmplx(1,1,rk),cmplx(2,2,rk)],&
      tol      = 1e-5_rk,&
      msg      = "Complex vector real error",&
      group    = "complex_vector")

   call tests%test(41)%check(&
      name     = "complex_vector_fail_2",&
      res      = [cmplx(2,2,rk),cmplx(1,1,rk)],&
      expected = [cmplx(1,1,rk),cmplx(2,2,rk)],&
      tol      = 1e-5_rk,&
      msg      = "Complex vector order error",&
      group    = "complex_vector")

   call tests%test(42)%check(&
      name     = "complex_vector_pass_2",&
      res      = [cmplx(1,1,rk),cmplx(2,2,rk)],&
      expected = [cmplx(1,1,rk),cmplx(2,2,rk)],&
      msg      = "Complex vector match (no tol)",&
      group    = "complex_vector")

   call tests%test(43)%check(&
      name     = "complex_vector_fail_3",&
      res      = [cmplx(2,1,rk),cmplx(2,2,rk)],&
      expected = [cmplx(1,1,rk),cmplx(2,2,rk)],&
      msg      = "Complex vector real error (no tol)",&
      group    = "complex_vector")

   call tests%test(44)%check(&
      name     = "complex_vector_fail_4",&
      res      = [cmplx(2,2,rk),cmplx(1,1,rk)],&
      expected = [cmplx(1,1,rk),cmplx(2,2,rk)],&
      msg      = "Complex vector order error (no tol)",&
      group    = "complex_vector")

   !> Complex Matrix Tests
   call tests%test(45)%check(&
      name     = "complex_matrix_pass_1",&
      res      = reshape([cmplx(1,1,rk),cmplx(2,2,rk),cmplx(3,3,rk),cmplx(4,4,rk)],[2,2]), &
      expected = reshape([cmplx(1,1,rk),cmplx(2,2,rk),cmplx(3,3,rk),cmplx(4,4,rk)],[2,2]),&
      tol      = 1e-5_rk, &
      msg      = "Complex matrix match",&
      group    = "complex_matrix")

   call tests%test(46)%check(&
      name     = "complex_matrix_fail_1",&
      res      = reshape([cmplx(1,1,rk),cmplx(2,2,rk),cmplx(3,5,rk),cmplx(4,4,rk)],[2,2]), &
      expected = reshape([cmplx(1,1,rk),cmplx(2,2,rk),cmplx(3,3,rk),cmplx(4,4,rk)],[2,2]),&
      tol      = 1e-5_rk, &
      msg      = "Complex matrix imag value error",&
      group    = "complex_matrix")

   call tests%test(47)%check(&
      name     = "complex_matrix_fail_2",&
      res      = reshape([cmplx(1,1,rk),cmplx(2,2,rk),cmplx(4,3,rk),cmplx(4,4,rk)],[2,2]), &
      expected = reshape([cmplx(1,1,rk),cmplx(2,2,rk),cmplx(3,3,rk),cmplx(4,4,rk)],[2,2]),&
      tol      = 1e-5_rk, &
      msg      = "Complex matrix real value error",&
      group    = "complex_matrix")

   call tests%test(48)%check(&
      name     = "complex_matrix_pass_2",&
      res      = reshape([cmplx(1,1,rk),cmplx(2,2,rk),cmplx(3,3,rk),cmplx(4,4,rk)],[2,2]), &
      expected = reshape([cmplx(1,1,rk),cmplx(2,2,rk),cmplx(3,3,rk),cmplx(4,4,rk)],[2,2]), &
      msg      = "Complex matrix match (no tol)",&
      group    = "complex_matrix")

   call tests%test(49)%check(&
      name     = "complex_matrix_fail_3",&
      res      = reshape([cmplx(1,1,rk),cmplx(2,2,rk),cmplx(3,5,rk),cmplx(4,4,rk)],[2,2]), &
      expected = reshape([cmplx(1,1,rk),cmplx(2,2,rk),cmplx(3,3,rk),cmplx(4,4,rk)],[2,2]), &
      msg      = "Complex matrix imag value error (no tol)",&
      group    = "complex_matrix")

   call tests%test(50)%check(&
      name     = "complex_matrix_fail_4",&
      res      = reshape([cmplx(1,1,rk),cmplx(2,2,rk),cmplx(4,3,rk),cmplx(4,4,rk)],[2,2]), &
      expected = reshape([cmplx(1,1,rk),cmplx(2,2,rk),cmplx(3,3,rk),cmplx(4,4,rk)],[2,2]), &
      msg      = "Complex matrix real value error (no tol)",&
      group    = "complex_matrix")

   !> Summary
   call tests%summary(required_score=36.0, verbose=3, stop_fail=.true.)

end program test2