https://www.cdslab.org/paramonte/fortran/2
Current view: top level - test - test_pm_arraySplit@routines@split_D1_D1.inc.F90 (source / functions) Hit Total Coverage
Test: ParaMonte 2.0.0 :: Serial Fortran - Code Coverage Report Lines: 1141 1141 100.0 %
Date: 2024-04-08 03:18:57 Functions: 52 52 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       2             : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       3             : !!!!                                                                                                                            !!!!
       4             : !!!!    ParaMonte: Parallel Monte Carlo and Machine Learning Library.                                                           !!!!
       5             : !!!!                                                                                                                            !!!!
       6             : !!!!    Copyright (C) 2012-present, The Computational Data Science Lab                                                          !!!!
       7             : !!!!                                                                                                                            !!!!
       8             : !!!!    This file is part of the ParaMonte library.                                                                             !!!!
       9             : !!!!                                                                                                                            !!!!
      10             : !!!!    LICENSE                                                                                                                 !!!!
      11             : !!!!                                                                                                                            !!!!
      12             : !!!!       https://github.com/cdslaborg/paramonte/blob/main/LICENSE.md                                                          !!!!
      13             : !!!!                                                                                                                            !!!!
      14             : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      15             : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      16             : 
      17             : !>  \brief
      18             : !>  This module contains implementations of the tests of the procedures under the generic interfaces of [pm_arraySplit](@ref pm_arraySplit).
      19             : !>
      20             : !>  \fintest
      21             : !>
      22             : !>  \author
      23             : !>  \AmirShahmoradi, September 1, 2017, 11:35 PM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
      24             : 
      25             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      26             : 
      27             : #if     LK_ENABLED && D1_D1_ENABLED
      28             : #define IS_EQUAL .eqv.
      29             : #else
      30             : #define IS_EQUAL ==
      31             : #endif
      32             : 
      33             : #if     SK_ENABLED && D0_D0_ENABLED
      34             : #define GET_SIZE(array) len(array, kind = IK)
      35             : #define ALL
      36             : #else
      37             : #define GET_SIZE(array) size(array, kind = IK)
      38             : #endif
      39             :         character(*, SK), parameter :: PROCEDURE_NAME = "@split()"
      40             : #if     SK_ENABLED && D0_D0_ENABLED
      41             : #if     CVXK_ENABLED
      42           1 :         type(css_type), allocatable :: field(:), field_ref(:)
      43             : #elif   PVXK_ENABLED
      44             :         type(css_pdt(SKC)), allocatable :: field(:), field_ref(:)
      45             : #endif
      46           2 :         character(:,SKC), allocatable :: array, sep
      47             : #elif   SK_ENABLED && D1_D1_ENABLED
      48             : #if     CVXK_ENABLED
      49           1 :         type(cvs_type), allocatable :: field(:), field_ref(:)
      50             : #elif   PVXK_ENABLED
      51             :         type(cvs_pdt(SKC)), allocatable :: field(:), field_ref(:)
      52             : #endif
      53             :         character(2,SKC), allocatable :: array(:), sep(:)
      54             : #elif   IK_ENABLED && D1_D1_ENABLED
      55             : #if     CVXK_ENABLED
      56           1 :         type(cvi_type), allocatable :: field(:), field_ref(:)
      57             : #elif   PVXK_ENABLED
      58             :         type(cvi_pdt(IKC)), allocatable :: field(:), field_ref(:)
      59             : #endif
      60             :         integer(IKC), allocatable :: array(:), sep(:)
      61             : #elif   LK_ENABLED && D1_D1_ENABLED
      62             : #if     CVXK_ENABLED
      63           1 :         type(cvl_type), allocatable :: field(:), field_ref(:)
      64             : #elif   PVXK_ENABLED
      65             :         type(cvl_pdt(LKC)), allocatable :: field(:), field_ref(:)
      66             : #endif
      67             :         logical(LKC), allocatable :: array(:), sep(:)
      68             : #elif   CK_ENABLED && D1_D1_ENABLED
      69             : #if     CVXK_ENABLED
      70           1 :         type(cvc_type), allocatable :: field(:), field_ref(:)
      71             : #elif   PVXK_ENABLED
      72             :         type(cvc_pdt(CKC)), allocatable :: field(:), field_ref(:)
      73             : #endif
      74             :         complex(CKC), allocatable :: array(:), sep(:)
      75             : #elif   RK_ENABLED && D1_D1_ENABLED
      76             : #if     CVXK_ENABLED
      77           1 :         type(cvr_type), allocatable :: field(:), field_ref(:)
      78             : #elif   PVXK_ENABLED
      79             :         type(cvr_pdt(RKC)), allocatable :: field(:), field_ref(:)
      80             : #endif
      81             :         real(RKC), allocatable :: array(:), sep(:)
      82             : #else
      83             : #error  "Unrecognized interface."
      84             : #endif
      85             :         integer(IK), allocatable :: sindex(:,:), sindex_ref(:,:)
      86             :         integer(IK), allocatable :: instance(:)
      87             :         integer(IK) :: i
      88             : 
      89             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      90             : 
      91          26 :         assertion = .true._LK
      92          97 :         do i = 1, 2 ! repeat for index splitting.
      93          52 :             call runTestsWith()
      94          52 :             call runTestsWith(iseq = iseq)
      95          52 :             call runTestsWith(keep = .true._LK)
      96          52 :             call runTestsWith(keep = .false._LK)
      97          52 :             call runTestsWith(iseq = iseq, keep = .true._LK)
      98          78 :             call runTestsWith(iseq = iseq, keep = .false._LK)
      99             :         end do
     100             : 
     101             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     102             : 
     103             :     contains
     104             : 
     105             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     106             : 
     107             :         function iseq(Segment, sep & !LCOV_EXCL_LINE
     108             : #if     !(SK_ENABLED && D0_D0_ENABLED)
     109             :         , lenDelim & !LCOV_EXCL_LINE
     110             : #endif
     111             :         ) result(equivalent)
     112             :             logical(LK) :: equivalent
     113             : #if         !(SK_ENABLED && D0_D0_ENABLED)
     114             :             integer(IK), intent(in) :: lenDelim
     115             : #endif
     116             : #if         SK_ENABLED && D0_D0_ENABLED
     117             :             character(*,SKC), intent(in) :: sep, Segment
     118             : #elif       SK_ENABLED && D1_D1_ENABLED
     119             :             character(*,SKC), intent(in) :: Segment(lenDelim), sep(lenDelim)
     120             : #elif       IK_ENABLED && D1_D1_ENABLED
     121             :             integer(IKC)    , intent(in) :: Segment(lenDelim), sep(lenDelim)
     122             : #elif       LK_ENABLED && D1_D1_ENABLED
     123             :             logical(LKC)    , intent(in) :: Segment(lenDelim), sep(lenDelim)
     124             : #elif       CK_ENABLED && D1_D1_ENABLED
     125             :             complex(CKC)    , intent(in) :: Segment(lenDelim), sep(lenDelim)
     126             : #elif       RK_ENABLED && D1_D1_ENABLED
     127             :             real(RKC)       , intent(in) :: Segment(lenDelim), sep(lenDelim)
     128             : #endif
     129       82980 :             equivalent = ALL(sep IS_EQUAL Segment)
     130       49920 :         end function
     131             : 
     132             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     133             : 
     134        5616 :         subroutine reset()
     135        5616 :             if (allocated(array)) deallocate(array)
     136        5616 :             if (allocated(instance)) deallocate(instance)
     137        5616 :             if (allocated(sep)) deallocate(sep)
     138        5616 :             if (allocated(sindex)) deallocate(sindex)
     139        5616 :             if (allocated(sindex_ref)) deallocate(sindex_ref)
     140             : #if         CVXK_ENABLED || PVXK_ENABLED
     141        4314 :             if (allocated(field_ref)) deallocate(field_ref) ! \bug gfortran 11 will not even compile this line.
     142        4314 :             if (allocated(field)) deallocate(field) ! \bug gfortran 11 will not even compile this line.
     143             : #endif
     144        5616 :         end subroutine
     145             : 
     146             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     147             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     148             : 
     149         312 :         subroutine runTestsWith(iseq, keep)
     150             :             logical(LK) , intent(in), optional  :: keep
     151             :             logical(LK) , external  , optional  :: iseq
     152             : 
     153             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     154             : 
     155         312 :             call reset()
     156             : 
     157             : #if         SK_ENABLED && D0_D0_ENABLED
     158          24 :             array = ""
     159          24 :             sep = " "
     160             : #elif       SK_ENABLED && D1_D1_ENABLED
     161          72 :             sep = [" "]
     162          24 :             allocate(array(0))
     163             : #elif       IK_ENABLED && D1_D1_ENABLED
     164         216 :             sep = [1_IKC]
     165          72 :             allocate(array(0))
     166             : #elif       LK_ENABLED && D1_D1_ENABLED
     167         216 :             sep = [.false._LK]
     168          72 :             allocate(array(0))
     169             : #elif       CK_ENABLED && D1_D1_ENABLED
     170         180 :             sep = [1._CKC]
     171          60 :             allocate(array(0))
     172             : #elif       RK_ENABLED && D1_D1_ENABLED
     173         180 :             sep = [1._RKC]
     174          60 :             allocate(array(0))
     175             : #endif
     176             : #if         CVXK_ENABLED || PVXK_ENABLED
     177         168 :             allocate(field_ref(1))
     178         132 :             field_ref(1)%val = array
     179             : #endif
     180             : 
     181         312 :             allocate(sindex_ref(2,1))
     182         312 :             sindex_ref(1,1) = 1
     183         312 :             sindex_ref(2,1) = 0
     184             : 
     185         312 :             allocate(instance(0))
     186             : 
     187         312 :             call reportDelim(iseq, keep)
     188         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": An empty array, has empty resulting array.", int(__LINE__, IK))
     189             : 
     190         312 :             call reportDelim(iseq, keep, instance = instance)
     191         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": An empty array, has empty resulting array with `instance`.", int(__LINE__, IK))
     192             : 
     193         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
     194         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": An empty array, has empty resulting array with `instance` with `sorted = .true.`.", int(__LINE__, IK))
     195             : 
     196         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
     197         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": An empty array, has empty resulting array with `instance` with `sorted = .false.`.", int(__LINE__, IK))
     198             : 
     199         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
     200         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": An empty array, has empty resulting array with `instance` with `unique = .true.`.", int(__LINE__, IK))
     201             : 
     202         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
     203         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": An empty array, has empty resulting array with `instance` with `unique = .false.`.", int(__LINE__, IK))
     204             : 
     205         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
     206         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": An empty array, has empty resulting array with `instance` with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
     207             : 
     208         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .true._LK)
     209         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": An empty array, has empty resulting array with `instance` with `sorted = .false._LK, unique = .true.`.", int(__LINE__, IK))
     210             : 
     211         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
     212         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": An empty array, has empty resulting array with `instance` with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
     213             : 
     214         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
     215         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": An empty array, has empty resulting array with `instance` with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
     216             : 
     217             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     218             : 
     219         312 :             call reset()
     220             : 
     221             : #if         SK_ENABLED && D0_D0_ENABLED
     222          24 :             array = "AA"
     223          24 :             sep = ""
     224             : #elif       SK_ENABLED && D1_D1_ENABLED
     225          96 :             array = ["AA", "AA"]
     226          24 :             allocate(character(2) :: sep(0))
     227             : #elif       IK_ENABLED && D1_D1_ENABLED
     228         288 :             array = [1_IKC, 1_IKC]
     229          72 :             allocate(sep(0))
     230             : #elif       LK_ENABLED && D1_D1_ENABLED
     231         288 :             array = [.false._LK, .false._LK]
     232          72 :             allocate(sep(0))
     233             : #elif       CK_ENABLED && D1_D1_ENABLED
     234         240 :             array = [1._CKC, 1._CKC]
     235          60 :             allocate(sep(0))
     236             : #elif       RK_ENABLED && D1_D1_ENABLED
     237         240 :             array = [1._RKC, 1._RKC]
     238          60 :             allocate(sep(0))
     239             : #endif
     240             : #if         CVXK_ENABLED || PVXK_ENABLED
     241         168 :             allocate(field_ref(1))
     242         312 :             field_ref(1)%val = array
     243             : #endif
     244         312 :             allocate(sindex_ref(2,1))
     245         312 :             sindex_ref(1,1) = 1
     246         312 :             sindex_ref(2,1) = 2
     247             : 
     248         312 :             allocate(instance(0))
     249             : 
     250         312 :             call reportDelim(iseq, keep)
     251         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued.", int(__LINE__, IK))
     252             : 
     253         312 :             call reportDelim(iseq, keep, instance = instance)
     254         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is empty.", int(__LINE__, IK))
     255             : 
     256         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
     257         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is empty with `sorted = .true.`.", int(__LINE__, IK))
     258             : 
     259         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
     260         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is empty with `sorted = .false.`.", int(__LINE__, IK))
     261             : 
     262         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
     263         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is empty with `unique = .true.`.", int(__LINE__, IK))
     264             : 
     265         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
     266         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is empty with `unique = .false.`.", int(__LINE__, IK))
     267             : 
     268         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
     269         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is empty with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
     270             : 
     271         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .true._LK)
     272         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is empty with `sorted = .false._LK, unique = .true.`.", int(__LINE__, IK))
     273             : 
     274         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
     275         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is empty with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
     276             : 
     277         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
     278         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is empty with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
     279             : 
     280             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     281             : 
     282         312 :             call reset()
     283             : 
     284             : #if         SK_ENABLED && D0_D0_ENABLED
     285          24 :             array = "AA"
     286          24 :             sep = ""
     287             : #elif       SK_ENABLED && D1_D1_ENABLED
     288          96 :             array = ["AA", "AA"]
     289          24 :             allocate(character(2) :: sep(0))
     290             : #elif       IK_ENABLED && D1_D1_ENABLED
     291         288 :             array = [1_IKC, 1_IKC]
     292          72 :             allocate(sep(0))
     293             : #elif       LK_ENABLED && D1_D1_ENABLED
     294         288 :             array = [.false._LK, .false._LK]
     295          72 :             allocate(sep(0))
     296             : #elif       CK_ENABLED && D1_D1_ENABLED
     297         240 :             array = [1._CKC, 1._CKC]
     298          60 :             allocate(sep(0))
     299             : #elif       RK_ENABLED && D1_D1_ENABLED
     300         240 :             array = [1._RKC, 1._RKC]
     301          60 :             allocate(sep(0))
     302             : #endif
     303             : #if         CVXK_ENABLED || PVXK_ENABLED
     304         168 :             allocate(field_ref(1))
     305         312 :             field_ref(1)%val = array
     306             : #endif
     307         312 :             allocate(sindex_ref(2,1))
     308         312 :             sindex_ref(1,1) = 1
     309         312 :             sindex_ref(2,1) = 2
     310             : 
     311         936 :             instance = [1_IK]
     312             : 
     313         312 :             call reportDelim(iseq, keep)
     314         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued.", int(__LINE__, IK))
     315             : 
     316         312 :             call reportDelim(iseq, keep, instance = instance)
     317         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is non-empty.", int(__LINE__, IK))
     318             : 
     319         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
     320         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is non-empty with `sorted = .true.`.", int(__LINE__, IK))
     321             : 
     322         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
     323         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is non-empty with `sorted = .false.`.", int(__LINE__, IK))
     324             : 
     325         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
     326         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is non-empty with `unique = .true.`.", int(__LINE__, IK))
     327             : 
     328         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
     329         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is non-empty with `unique = .false.`.", int(__LINE__, IK))
     330             : 
     331         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
     332         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is non-empty with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
     333             : 
     334         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .true._LK)
     335         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is non-empty with `sorted = .false._LK, unique = .true.`.", int(__LINE__, IK))
     336             : 
     337         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
     338         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is non-empty with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
     339             : 
     340         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
     341         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with empty `sep` must yield an `field` of size 1 whose sole component is `array`-valued when `instance` is non-empty with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
     342             : 
     343             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     344             : 
     345         312 :             call reset()
     346             : 
     347             : #if         CVXK_ENABLED || PVXK_ENABLED
     348          72 :             if (getOption(.false._LK, keep)) then
     349         144 :                 allocate(field_ref(5))
     350             :             else
     351         192 :                 allocate(field_ref(3))
     352             :             endif
     353             : #endif
     354             : #if         SK_ENABLED && D0_D0_ENABLED
     355          24 :             array = "AA"
     356          24 :             sep = "A"
     357             : #if         CVXK_ENABLED || PVXK_ENABLED
     358          12 :             if (getOption(.false._LK, keep)) then
     359           4 :                 field_ref(1)%val = ""
     360           4 :                 field_ref(2)%val = sep
     361           4 :                 field_ref(3)%val = ""
     362           4 :                 field_ref(4)%val = sep
     363           4 :                 field_ref(5)%val = ""
     364             :             else
     365           8 :                 field_ref(1)%val = ""
     366           8 :                 field_ref(2)%val = ""
     367           8 :                 field_ref(3)%val = ""
     368             :             endif
     369             : #endif
     370             : #elif       SK_ENABLED && D1_D1_ENABLED
     371          96 :             array = ["AA", "AA"]
     372          72 :             sep = ["AA"]
     373             : #if         CVXK_ENABLED || PVXK_ENABLED
     374          12 :             if (getOption(.false._LK, keep)) then
     375           4 :                 allocate(character(2,SKC) :: field_ref(1)%val(0))
     376          16 :                 field_ref(2)%val = sep
     377           4 :                 allocate(character(2,SKC) :: field_ref(3)%val(0))
     378          16 :                 field_ref(4)%val = sep
     379           4 :                 allocate(character(2,SKC) :: field_ref(5)%val(0))
     380             :             else
     381           8 :                 allocate(character(2,SKC) :: field_ref(1)%val(0))
     382           8 :                 allocate(character(2,SKC) :: field_ref(2)%val(0))
     383           8 :                 allocate(character(2,SKC) :: field_ref(3)%val(0))
     384             :             endif
     385             : #endif
     386             : #elif       IK_ENABLED && D1_D1_ENABLED
     387         288 :             array = [1_IKC, 1_IKC]
     388         216 :             sep = [1_IKC]
     389             : #if         CVXK_ENABLED || PVXK_ENABLED
     390          12 :             if (getOption(.false._LK, keep)) then
     391           4 :                 allocate(field_ref(1)%val(0))
     392          16 :                 field_ref(2)%val = sep
     393           4 :                 allocate(field_ref(3)%val(0))
     394          16 :                 field_ref(4)%val = sep
     395           4 :                 allocate(field_ref(5)%val(0))
     396             :             else
     397           8 :                 allocate(field_ref(1)%val(0))
     398           8 :                 allocate(field_ref(2)%val(0))
     399           8 :                 allocate(field_ref(3)%val(0))
     400             :             endif
     401             : #endif
     402             : #elif       LK_ENABLED && D1_D1_ENABLED
     403         288 :             array = [.false._LK, .false._LK]
     404         216 :             sep = [.false._LK]
     405             : #if         CVXK_ENABLED || PVXK_ENABLED
     406          12 :             if (getOption(.false._LK, keep)) then
     407           4 :                 allocate(field_ref(1)%val(0))
     408          16 :                 field_ref(2)%val = sep
     409           4 :                 allocate(field_ref(3)%val(0))
     410          16 :                 field_ref(4)%val = sep
     411           4 :                 allocate(field_ref(5)%val(0))
     412             :             else
     413           8 :                 allocate(field_ref(1)%val(0))
     414           8 :                 allocate(field_ref(2)%val(0))
     415           8 :                 allocate(field_ref(3)%val(0))
     416             :             endif
     417             : #endif
     418             : #elif       CK_ENABLED && D1_D1_ENABLED
     419         240 :             array = [(1._CKC,-1._CKC), (1._CKC,-1._CKC)]
     420         180 :             sep = [(1._CKC,-1._CKC)]
     421             : #if         CVXK_ENABLED || PVXK_ENABLED
     422          12 :             if (getOption(.false._LK, keep)) then
     423           4 :                 allocate(field_ref(1)%val(0))
     424          16 :                 field_ref(2)%val = sep
     425           4 :                 allocate(field_ref(3)%val(0))
     426          16 :                 field_ref(4)%val = sep
     427           4 :                 allocate(field_ref(5)%val(0))
     428             :             else
     429           8 :                 allocate(field_ref(1)%val(0))
     430           8 :                 allocate(field_ref(2)%val(0))
     431           8 :                 allocate(field_ref(3)%val(0))
     432             :             endif
     433             : #endif
     434             : #elif       RK_ENABLED && D1_D1_ENABLED
     435         240 :             array = [1._RKC, 1._RKC]
     436         180 :             sep = [1._RKC]
     437             : #if         CVXK_ENABLED || PVXK_ENABLED
     438          12 :             if (getOption(.false._LK, keep)) then
     439           4 :                 allocate(field_ref(1)%val(0))
     440          16 :                 field_ref(2)%val = sep
     441           4 :                 allocate(field_ref(3)%val(0))
     442          16 :                 field_ref(4)%val = sep
     443           4 :                 allocate(field_ref(5)%val(0))
     444             :             else
     445           8 :                 allocate(field_ref(1)%val(0))
     446           8 :                 allocate(field_ref(2)%val(0))
     447           8 :                 allocate(field_ref(3)%val(0))
     448             :             endif
     449             : #endif
     450             : #endif
     451         312 :             if (getOption(.false._LK, keep)) then
     452         104 :                 allocate(sindex_ref(2,5))
     453         104 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
     454         104 :                 sindex_ref(1,2) = 1; sindex_ref(2,2) = 1
     455         104 :                 sindex_ref(1,3) = 2; sindex_ref(2,3) = 1
     456         104 :                 sindex_ref(1,4) = 2; sindex_ref(2,4) = 2
     457         104 :                 sindex_ref(1,5) = 3; sindex_ref(2,5) = 2
     458             :             else
     459         208 :                 allocate(sindex_ref(2,3))
     460         208 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
     461         208 :                 sindex_ref(1,2) = 2; sindex_ref(2,2) = 1
     462         208 :                 sindex_ref(1,3) = 3; sindex_ref(2,3) = 2
     463             :             end if
     464             : 
     465        1248 :             instance = [1_IK, 2_IK]
     466             : 
     467         312 :             call reportDelim(iseq, keep)
     468         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty.", int(__LINE__, IK))
     469             : 
     470         312 :             call reportDelim(iseq, keep, instance = instance)
     471         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty.", int(__LINE__, IK))
     472             : 
     473         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
     474         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty with `sorted = .true.`.", int(__LINE__, IK))
     475             : 
     476         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
     477         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty with `sorted = .false.`.", int(__LINE__, IK))
     478             : 
     479         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
     480         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty with `unique = .true.`.", int(__LINE__, IK))
     481             : 
     482         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
     483         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty with `unique = .false.`.", int(__LINE__, IK))
     484             : 
     485         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
     486         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
     487             : 
     488         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .true._LK)
     489         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty with `sorted = .false._LK, unique = .true.`.", int(__LINE__, IK))
     490             : 
     491         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
     492         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
     493             : 
     494         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
     495         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
     496             : 
     497             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     498             : 
     499         312 :             call reset()
     500             : 
     501             : #if         CVXK_ENABLED || PVXK_ENABLED
     502          72 :             if (getOption(.false._LK, keep)) then
     503         144 :                 allocate(field_ref(5))
     504             :             else
     505         192 :                 allocate(field_ref(3))
     506             :             endif
     507             : #endif
     508             : #if         SK_ENABLED && D0_D0_ENABLED
     509          24 :             array = "AA"
     510          24 :             sep = "A"
     511             : #if         CVXK_ENABLED || PVXK_ENABLED
     512          12 :             if (getOption(.false._LK, keep)) then
     513           4 :                 field_ref(1)%val = ""
     514           4 :                 field_ref(2)%val = sep
     515           4 :                 field_ref(3)%val = ""
     516           4 :                 field_ref(4)%val = sep
     517           4 :                 field_ref(5)%val = ""
     518             :             else
     519           8 :                 field_ref(1)%val = ""
     520           8 :                 field_ref(2)%val = ""
     521           8 :                 field_ref(3)%val = ""
     522             :             endif
     523             : #endif
     524             : #elif       SK_ENABLED && D1_D1_ENABLED
     525          96 :             array = ["AA", "AA"]
     526          72 :             sep = ["AA"]
     527             : #if         CVXK_ENABLED || PVXK_ENABLED
     528          12 :             if (getOption(.false._LK, keep)) then
     529           4 :                 allocate(character(2,SKC) :: field_ref(1)%val(0))
     530          16 :                 field_ref(2)%val = sep
     531           4 :                 allocate(character(2,SKC) :: field_ref(3)%val(0))
     532          16 :                 field_ref(4)%val = sep
     533           4 :                 allocate(character(2,SKC) :: field_ref(5)%val(0))
     534             :             else
     535           8 :                 allocate(character(2,SKC) :: field_ref(1)%val(0))
     536           8 :                 allocate(character(2,SKC) :: field_ref(2)%val(0))
     537           8 :                 allocate(character(2,SKC) :: field_ref(3)%val(0))
     538             :             endif
     539             : #endif
     540             : #elif       IK_ENABLED && D1_D1_ENABLED
     541         288 :             array = [1_IKC, 1_IKC]
     542         216 :             sep = [1_IKC]
     543             : #if         CVXK_ENABLED || PVXK_ENABLED
     544          12 :             if (getOption(.false._LK, keep)) then
     545           4 :                 allocate(field_ref(1)%val(0))
     546          16 :                 field_ref(2)%val = sep
     547           4 :                 allocate(field_ref(3)%val(0))
     548          16 :                 field_ref(4)%val = sep
     549           4 :                 allocate(field_ref(5)%val(0))
     550             :             else
     551           8 :                 allocate(field_ref(1)%val(0))
     552           8 :                 allocate(field_ref(2)%val(0))
     553           8 :                 allocate(field_ref(3)%val(0))
     554             :             endif
     555             : #endif
     556             : #elif       LK_ENABLED && D1_D1_ENABLED
     557         288 :             array = [.false._LK, .false._LK]
     558         216 :             sep = [.false._LK]
     559             : #if         CVXK_ENABLED || PVXK_ENABLED
     560          12 :             if (getOption(.false._LK, keep)) then
     561           4 :                 allocate(field_ref(1)%val(0))
     562          16 :                 field_ref(2)%val = sep
     563           4 :                 allocate(field_ref(3)%val(0))
     564          16 :                 field_ref(4)%val = sep
     565           4 :                 allocate(field_ref(5)%val(0))
     566             :             else
     567           8 :                 allocate(field_ref(1)%val(0))
     568           8 :                 allocate(field_ref(2)%val(0))
     569           8 :                 allocate(field_ref(3)%val(0))
     570             :             endif
     571             : #endif
     572             : #elif       CK_ENABLED && D1_D1_ENABLED
     573         240 :             array = [(1._CKC,-1._CKC), (1._CKC,-1._CKC)]
     574         180 :             sep = [(1._CKC,-1._CKC)]
     575             : #if         CVXK_ENABLED || PVXK_ENABLED
     576          12 :             if (getOption(.false._LK, keep)) then
     577           4 :                 allocate(field_ref(1)%val(0))
     578          16 :                 field_ref(2)%val = sep
     579           4 :                 allocate(field_ref(3)%val(0))
     580          16 :                 field_ref(4)%val = sep
     581           4 :                 allocate(field_ref(5)%val(0))
     582             :             else
     583           8 :                 allocate(field_ref(1)%val(0))
     584           8 :                 allocate(field_ref(2)%val(0))
     585           8 :                 allocate(field_ref(3)%val(0))
     586             :             endif
     587             : #endif
     588             : #elif       RK_ENABLED && D1_D1_ENABLED
     589         240 :             array = [1._RKC, 1._RKC]
     590         180 :             sep = [1._RKC]
     591             : #if         CVXK_ENABLED || PVXK_ENABLED
     592          12 :             if (getOption(.false._LK, keep)) then
     593           4 :                 allocate(field_ref(1)%val(0))
     594          16 :                 field_ref(2)%val = sep
     595           4 :                 allocate(field_ref(3)%val(0))
     596          16 :                 field_ref(4)%val = sep
     597           4 :                 allocate(field_ref(5)%val(0))
     598             :             else
     599           8 :                 allocate(field_ref(1)%val(0))
     600           8 :                 allocate(field_ref(2)%val(0))
     601           8 :                 allocate(field_ref(3)%val(0))
     602             :             endif
     603             : #endif
     604             : #endif
     605         312 :             if (getOption(.false._LK, keep)) then
     606         104 :                 allocate(sindex_ref(2,5))
     607         104 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
     608         104 :                 sindex_ref(1,2) = 1; sindex_ref(2,2) = 1
     609         104 :                 sindex_ref(1,3) = 2; sindex_ref(2,3) = 1
     610         104 :                 sindex_ref(1,4) = 2; sindex_ref(2,4) = 2
     611         104 :                 sindex_ref(1,5) = 3; sindex_ref(2,5) = 2
     612             :             else
     613         208 :                 allocate(sindex_ref(2,3))
     614         208 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
     615         208 :                 sindex_ref(1,2) = 2; sindex_ref(2,2) = 1
     616         208 :                 sindex_ref(1,3) = 3; sindex_ref(2,3) = 2
     617             :             end if
     618             : 
     619        1872 :             instance = [0_IK, 1_IK, 2_IK, 3_IK]
     620             : 
     621         312 :             call reportDelim(iseq, keep)
     622         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty.", int(__LINE__, IK))
     623             : 
     624         312 :             call reportDelim(iseq, keep, instance = instance)
     625         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and redundant.", int(__LINE__, IK))
     626             : 
     627         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
     628         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and redundant with `sorted = .true.`.", int(__LINE__, IK))
     629             : 
     630         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
     631         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and redundant with `sorted = .false.`.", int(__LINE__, IK))
     632             : 
     633         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
     634         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and redundant with `unique = .true.`.", int(__LINE__, IK))
     635             : 
     636         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
     637         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and redundant with `unique = .false.`.", int(__LINE__, IK))
     638             : 
     639         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
     640         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and redundant with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
     641             : 
     642         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .true._LK)
     643         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and redundant with `sorted = .false._LK, unique = .true.`.", int(__LINE__, IK))
     644             : 
     645         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
     646         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and redundant with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
     647             : 
     648         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
     649         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and redundant with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
     650             : 
     651             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     652             : 
     653         312 :             call reset()
     654             : 
     655             : #if         CVXK_ENABLED || PVXK_ENABLED
     656          72 :             if (getOption(.false._LK, keep)) then
     657         144 :                 allocate(field_ref(5))
     658             :             else
     659         192 :                 allocate(field_ref(3))
     660             :             endif
     661             : #endif
     662             : #if         SK_ENABLED && D0_D0_ENABLED
     663          24 :             array = "AA"
     664          24 :             sep = "A"
     665             : #if         CVXK_ENABLED || PVXK_ENABLED
     666          12 :             if (getOption(.false._LK, keep)) then
     667           4 :                 field_ref(1)%val = ""
     668           4 :                 field_ref(2)%val = sep
     669           4 :                 field_ref(3)%val = ""
     670           4 :                 field_ref(4)%val = sep
     671           4 :                 field_ref(5)%val = ""
     672             :             else
     673           8 :                 field_ref(1)%val = ""
     674           8 :                 field_ref(2)%val = ""
     675           8 :                 field_ref(3)%val = ""
     676             :             endif
     677             : #endif
     678             : #elif       SK_ENABLED && D1_D1_ENABLED
     679          96 :             array = ["AA", "AA"]
     680          72 :             sep = ["AA"]
     681             : #if         CVXK_ENABLED || PVXK_ENABLED
     682          12 :             if (getOption(.false._LK, keep)) then
     683           4 :                 allocate(character(2,SKC) :: field_ref(1)%val(0))
     684          16 :                 field_ref(2)%val = sep
     685           4 :                 allocate(character(2,SKC) :: field_ref(3)%val(0))
     686          16 :                 field_ref(4)%val = sep
     687           4 :                 allocate(character(2,SKC) :: field_ref(5)%val(0))
     688             :             else
     689           8 :                 allocate(character(2,SKC) :: field_ref(1)%val(0))
     690           8 :                 allocate(character(2,SKC) :: field_ref(2)%val(0))
     691           8 :                 allocate(character(2,SKC) :: field_ref(3)%val(0))
     692             :             endif
     693             : #endif
     694             : #elif       IK_ENABLED && D1_D1_ENABLED
     695         288 :             array = [1_IKC, 1_IKC]
     696         216 :             sep = [1_IKC]
     697             : #if         CVXK_ENABLED || PVXK_ENABLED
     698          12 :             if (getOption(.false._LK, keep)) then
     699           4 :                 allocate(field_ref(1)%val(0))
     700          16 :                 field_ref(2)%val = sep
     701           4 :                 allocate(field_ref(3)%val(0))
     702          16 :                 field_ref(4)%val = sep
     703           4 :                 allocate(field_ref(5)%val(0))
     704             :             else
     705           8 :                 allocate(field_ref(1)%val(0))
     706           8 :                 allocate(field_ref(2)%val(0))
     707           8 :                 allocate(field_ref(3)%val(0))
     708             :             endif
     709             : #endif
     710             : #elif       LK_ENABLED && D1_D1_ENABLED
     711         288 :             array = [.false._LK, .false._LK]
     712         216 :             sep = [.false._LK]
     713             : #if         CVXK_ENABLED || PVXK_ENABLED
     714          12 :             if (getOption(.false._LK, keep)) then
     715           4 :                 allocate(field_ref(1)%val(0))
     716          16 :                 field_ref(2)%val = sep
     717           4 :                 allocate(field_ref(3)%val(0))
     718          16 :                 field_ref(4)%val = sep
     719           4 :                 allocate(field_ref(5)%val(0))
     720             :             else
     721           8 :                 allocate(field_ref(1)%val(0))
     722           8 :                 allocate(field_ref(2)%val(0))
     723           8 :                 allocate(field_ref(3)%val(0))
     724             :             endif
     725             : #endif
     726             : #elif       CK_ENABLED && D1_D1_ENABLED
     727         240 :             array = [(1._CKC,-1._CKC), (1._CKC,-1._CKC)]
     728         180 :             sep = [(1._CKC,-1._CKC)]
     729             : #if         CVXK_ENABLED || PVXK_ENABLED
     730          12 :             if (getOption(.false._LK, keep)) then
     731           4 :                 allocate(field_ref(1)%val(0))
     732          16 :                 field_ref(2)%val = sep
     733           4 :                 allocate(field_ref(3)%val(0))
     734          16 :                 field_ref(4)%val = sep
     735           4 :                 allocate(field_ref(5)%val(0))
     736             :             else
     737           8 :                 allocate(field_ref(1)%val(0))
     738           8 :                 allocate(field_ref(2)%val(0))
     739           8 :                 allocate(field_ref(3)%val(0))
     740             :             endif
     741             : #endif
     742             : #elif       RK_ENABLED && D1_D1_ENABLED
     743         240 :             array = [1._RKC, 1._RKC]
     744         180 :             sep = [1._RKC]
     745             : #if         CVXK_ENABLED || PVXK_ENABLED
     746          12 :             if (getOption(.false._LK, keep)) then
     747           4 :                 allocate(field_ref(1)%val(0))
     748          16 :                 field_ref(2)%val = sep
     749           4 :                 allocate(field_ref(3)%val(0))
     750          16 :                 field_ref(4)%val = sep
     751           4 :                 allocate(field_ref(5)%val(0))
     752             :             else
     753           8 :                 allocate(field_ref(1)%val(0))
     754           8 :                 allocate(field_ref(2)%val(0))
     755           8 :                 allocate(field_ref(3)%val(0))
     756             :             endif
     757             : #endif
     758             : #endif
     759         312 :             if (getOption(.false._LK, keep)) then
     760         104 :                 allocate(sindex_ref(2,5))
     761         104 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
     762         104 :                 sindex_ref(1,2) = 1; sindex_ref(2,2) = 1
     763         104 :                 sindex_ref(1,3) = 2; sindex_ref(2,3) = 1
     764         104 :                 sindex_ref(1,4) = 2; sindex_ref(2,4) = 2
     765         104 :                 sindex_ref(1,5) = 3; sindex_ref(2,5) = 2
     766             :             else
     767         208 :                 allocate(sindex_ref(2,3))
     768         208 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
     769         208 :                 sindex_ref(1,2) = 2; sindex_ref(2,2) = 1
     770         208 :                 sindex_ref(1,3) = 3; sindex_ref(2,3) = 2
     771             :             end if
     772             : 
     773        1248 :             instance = [1_IK, -1_IK]
     774             : 
     775         312 :             call reportDelim(iseq, keep)
     776         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty.", int(__LINE__, IK))
     777             : 
     778         312 :             call reportDelim(iseq, keep, instance = instance)
     779         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and mixed.", int(__LINE__, IK))
     780             : 
     781         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
     782         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and mixed with `sorted = .true.`.", int(__LINE__, IK))
     783             : 
     784         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
     785         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and mixed with `sorted = .false.`.", int(__LINE__, IK))
     786             : 
     787         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
     788         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and mixed with `unique = .true.`.", int(__LINE__, IK))
     789             : 
     790         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
     791         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and mixed with `unique = .false.`.", int(__LINE__, IK))
     792             : 
     793         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
     794         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and mixed with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
     795             : 
     796         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .true._LK)
     797         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and mixed with `sorted = .false._LK, unique = .true.`.", int(__LINE__, IK))
     798             : 
     799         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
     800         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and mixed with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
     801             : 
     802         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
     803         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty and mixed with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
     804             : 
     805             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     806             : 
     807         312 :             call reset()
     808             : 
     809             : #if         CVXK_ENABLED || PVXK_ENABLED
     810          72 :             if (getOption(.false._LK, keep)) then
     811         144 :                 allocate(field_ref(5))
     812             :             else
     813         192 :                 allocate(field_ref(3))
     814             :             endif
     815             : #endif
     816             : #if         SK_ENABLED && D0_D0_ENABLED
     817          24 :             array = "AA"
     818          24 :             sep = "A"
     819             : #if         CVXK_ENABLED || PVXK_ENABLED
     820          12 :             if (getOption(.false._LK, keep)) then
     821           4 :                 field_ref(1)%val = ""
     822           4 :                 field_ref(2)%val = sep
     823           4 :                 field_ref(3)%val = ""
     824           4 :                 field_ref(4)%val = sep
     825           4 :                 field_ref(5)%val = ""
     826             :             else
     827           8 :                 field_ref(1)%val = ""
     828           8 :                 field_ref(2)%val = ""
     829           8 :                 field_ref(3)%val = ""
     830             :             endif
     831             : #endif
     832             : #elif       SK_ENABLED && D1_D1_ENABLED
     833          96 :             array = ["AA", "AA"]
     834          72 :             sep = ["AA"]
     835             : #if         CVXK_ENABLED || PVXK_ENABLED
     836          12 :             if (getOption(.false._LK, keep)) then
     837           4 :                 allocate(character(2,SKC) :: field_ref(1)%val(0))
     838          16 :                 field_ref(2)%val = sep
     839           4 :                 allocate(character(2,SKC) :: field_ref(3)%val(0))
     840          16 :                 field_ref(4)%val = sep
     841           4 :                 allocate(character(2,SKC) :: field_ref(5)%val(0))
     842             :             else
     843           8 :                 allocate(character(2,SKC) :: field_ref(1)%val(0))
     844           8 :                 allocate(character(2,SKC) :: field_ref(2)%val(0))
     845           8 :                 allocate(character(2,SKC) :: field_ref(3)%val(0))
     846             :             endif
     847             : #endif
     848             : #elif       IK_ENABLED && D1_D1_ENABLED
     849         288 :             array = [1_IKC, 1_IKC]
     850         216 :             sep = [1_IKC]
     851             : #if         CVXK_ENABLED || PVXK_ENABLED
     852          12 :             if (getOption(.false._LK, keep)) then
     853           4 :                 allocate(field_ref(1)%val(0))
     854          16 :                 field_ref(2)%val = sep
     855           4 :                 allocate(field_ref(3)%val(0))
     856          16 :                 field_ref(4)%val = sep
     857           4 :                 allocate(field_ref(5)%val(0))
     858             :             else
     859           8 :                 allocate(field_ref(1)%val(0))
     860           8 :                 allocate(field_ref(2)%val(0))
     861           8 :                 allocate(field_ref(3)%val(0))
     862             :             endif
     863             : #endif
     864             : #elif       LK_ENABLED && D1_D1_ENABLED
     865         288 :             array = [.false._LK, .false._LK]
     866         216 :             sep = [.false._LK]
     867             : #if         CVXK_ENABLED || PVXK_ENABLED
     868          12 :             if (getOption(.false._LK, keep)) then
     869           4 :                 allocate(field_ref(1)%val(0))
     870          16 :                 field_ref(2)%val = sep
     871           4 :                 allocate(field_ref(3)%val(0))
     872          16 :                 field_ref(4)%val = sep
     873           4 :                 allocate(field_ref(5)%val(0))
     874             :             else
     875           8 :                 allocate(field_ref(1)%val(0))
     876           8 :                 allocate(field_ref(2)%val(0))
     877           8 :                 allocate(field_ref(3)%val(0))
     878             :             endif
     879             : #endif
     880             : #elif       CK_ENABLED && D1_D1_ENABLED
     881         240 :             array = [(1._CKC,-1._CKC), (1._CKC,-1._CKC)]
     882         180 :             sep = [(1._CKC,-1._CKC)]
     883             : #if         CVXK_ENABLED || PVXK_ENABLED
     884          12 :             if (getOption(.false._LK, keep)) then
     885           4 :                 allocate(field_ref(1)%val(0))
     886          16 :                 field_ref(2)%val = sep
     887           4 :                 allocate(field_ref(3)%val(0))
     888          16 :                 field_ref(4)%val = sep
     889           4 :                 allocate(field_ref(5)%val(0))
     890             :             else
     891           8 :                 allocate(field_ref(1)%val(0))
     892           8 :                 allocate(field_ref(2)%val(0))
     893           8 :                 allocate(field_ref(3)%val(0))
     894             :             endif
     895             : #endif
     896             : #elif       RK_ENABLED && D1_D1_ENABLED
     897         240 :             array = [1._RKC, 1._RKC]
     898         180 :             sep = [1._RKC]
     899             : #if         CVXK_ENABLED || PVXK_ENABLED
     900          12 :             if (getOption(.false._LK, keep)) then
     901           4 :                 allocate(field_ref(1)%val(0))
     902          16 :                 field_ref(2)%val = sep
     903           4 :                 allocate(field_ref(3)%val(0))
     904          16 :                 field_ref(4)%val = sep
     905           4 :                 allocate(field_ref(5)%val(0))
     906             :             else
     907           8 :                 allocate(field_ref(1)%val(0))
     908           8 :                 allocate(field_ref(2)%val(0))
     909           8 :                 allocate(field_ref(3)%val(0))
     910             :             endif
     911             : #endif
     912             : #endif
     913         312 :             if (getOption(.false._LK, keep)) then
     914         104 :                 allocate(sindex_ref(2,5))
     915         104 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
     916         104 :                 sindex_ref(1,2) = 1; sindex_ref(2,2) = 1
     917         104 :                 sindex_ref(1,3) = 2; sindex_ref(2,3) = 1
     918         104 :                 sindex_ref(1,4) = 2; sindex_ref(2,4) = 2
     919         104 :                 sindex_ref(1,5) = 3; sindex_ref(2,5) = 2
     920             :             else
     921         208 :                 allocate(sindex_ref(2,3))
     922         208 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
     923         208 :                 sindex_ref(1,2) = 2; sindex_ref(2,2) = 1
     924         208 :                 sindex_ref(1,3) = 3; sindex_ref(2,3) = 2
     925             :             end if
     926             : 
     927        1560 :             instance = [1_IK, -2_IK, -1_IK]
     928             : 
     929         312 :             call reportDelim(iseq, keep)
     930         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty.", int(__LINE__, IK))
     931             : 
     932         312 :             call reportDelim(iseq, keep, instance = instance)
     933         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty, redundant, non-unique, and mixed.", int(__LINE__, IK))
     934             : 
     935         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
     936         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty, redundant, non-unique, and mixed, with `sorted = .true.`.", int(__LINE__, IK))
     937             : 
     938         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
     939         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty, redundant, non-unique, and mixed, with `sorted = .false.`.", int(__LINE__, IK))
     940             : 
     941         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
     942         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty, redundant, non-unique, and mixed, with `unique = .false.`.", int(__LINE__, IK))
     943             : 
     944         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
     945         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty, redundant, non-unique, and mixed, with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
     946             : 
     947         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
     948         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty, redundant, non-unique, and mixed, with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
     949             : 
     950             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     951             : 
     952         312 :             call reset()
     953             : 
     954             : #if         CVXK_ENABLED || PVXK_ENABLED
     955          72 :             if (getOption(.false._LK, keep)) then
     956         144 :                 allocate(field_ref(5))
     957             :             else
     958         192 :                 allocate(field_ref(3))
     959             :             endif
     960             : #endif
     961             : #if         SK_ENABLED && D0_D0_ENABLED
     962          24 :             array = "AA"
     963          24 :             sep = "A"
     964             : #if         CVXK_ENABLED || PVXK_ENABLED
     965          12 :             if (getOption(.false._LK, keep)) then
     966           4 :                 field_ref(1)%val = ""
     967           4 :                 field_ref(2)%val = sep
     968           4 :                 field_ref(3)%val = ""
     969           4 :                 field_ref(4)%val = sep
     970           4 :                 field_ref(5)%val = ""
     971             :             else
     972           8 :                 field_ref(1)%val = ""
     973           8 :                 field_ref(2)%val = ""
     974           8 :                 field_ref(3)%val = ""
     975             :             endif
     976             : #endif
     977             : #elif       SK_ENABLED && D1_D1_ENABLED
     978          96 :             array = ["AA", "AA"]
     979          72 :             sep = ["AA"]
     980             : #if         CVXK_ENABLED || PVXK_ENABLED
     981          12 :             if (getOption(.false._LK, keep)) then
     982           4 :                 allocate(character(2,SKC) :: field_ref(1)%val(0))
     983          16 :                 field_ref(2)%val = sep
     984           4 :                 allocate(character(2,SKC) :: field_ref(3)%val(0))
     985          16 :                 field_ref(4)%val = sep
     986           4 :                 allocate(character(2,SKC) :: field_ref(5)%val(0))
     987             :             else
     988           8 :                 allocate(character(2,SKC) :: field_ref(1)%val(0))
     989           8 :                 allocate(character(2,SKC) :: field_ref(2)%val(0))
     990           8 :                 allocate(character(2,SKC) :: field_ref(3)%val(0))
     991             :             endif
     992             : #endif
     993             : #elif       IK_ENABLED && D1_D1_ENABLED
     994         288 :             array = [1_IKC, 1_IKC]
     995         216 :             sep = [1_IKC]
     996             : #if         CVXK_ENABLED || PVXK_ENABLED
     997          12 :             if (getOption(.false._LK, keep)) then
     998           4 :                 allocate(field_ref(1)%val(0))
     999          16 :                 field_ref(2)%val = sep
    1000           4 :                 allocate(field_ref(3)%val(0))
    1001          16 :                 field_ref(4)%val = sep
    1002           4 :                 allocate(field_ref(5)%val(0))
    1003             :             else
    1004           8 :                 allocate(field_ref(1)%val(0))
    1005           8 :                 allocate(field_ref(2)%val(0))
    1006           8 :                 allocate(field_ref(3)%val(0))
    1007             :             endif
    1008             : #endif
    1009             : #elif       LK_ENABLED && D1_D1_ENABLED
    1010         288 :             array = [.false._LK, .false._LK]
    1011         216 :             sep = [.false._LK]
    1012             : #if         CVXK_ENABLED || PVXK_ENABLED
    1013          12 :             if (getOption(.false._LK, keep)) then
    1014           4 :                 allocate(field_ref(1)%val(0))
    1015          16 :                 field_ref(2)%val = sep
    1016           4 :                 allocate(field_ref(3)%val(0))
    1017          16 :                 field_ref(4)%val = sep
    1018           4 :                 allocate(field_ref(5)%val(0))
    1019             :             else
    1020           8 :                 allocate(field_ref(1)%val(0))
    1021           8 :                 allocate(field_ref(2)%val(0))
    1022           8 :                 allocate(field_ref(3)%val(0))
    1023             :             endif
    1024             : #endif
    1025             : #elif       CK_ENABLED && D1_D1_ENABLED
    1026         240 :             array = [(1._CKC,-1._CKC), (1._CKC,-1._CKC)]
    1027         180 :             sep = [(1._CKC,-1._CKC)]
    1028             : #if         CVXK_ENABLED || PVXK_ENABLED
    1029          12 :             if (getOption(.false._LK, keep)) then
    1030           4 :                 allocate(field_ref(1)%val(0))
    1031          16 :                 field_ref(2)%val = sep
    1032           4 :                 allocate(field_ref(3)%val(0))
    1033          16 :                 field_ref(4)%val = sep
    1034           4 :                 allocate(field_ref(5)%val(0))
    1035             :             else
    1036           8 :                 allocate(field_ref(1)%val(0))
    1037           8 :                 allocate(field_ref(2)%val(0))
    1038           8 :                 allocate(field_ref(3)%val(0))
    1039             :             endif
    1040             : #endif
    1041             : #elif       RK_ENABLED && D1_D1_ENABLED
    1042         240 :             array = [1._RKC, 1._RKC]
    1043         180 :             sep = [1._RKC]
    1044             : #if         CVXK_ENABLED || PVXK_ENABLED
    1045          12 :             if (getOption(.false._LK, keep)) then
    1046           4 :                 allocate(field_ref(1)%val(0))
    1047          16 :                 field_ref(2)%val = sep
    1048           4 :                 allocate(field_ref(3)%val(0))
    1049          16 :                 field_ref(4)%val = sep
    1050           4 :                 allocate(field_ref(5)%val(0))
    1051             :             else
    1052           8 :                 allocate(field_ref(1)%val(0))
    1053           8 :                 allocate(field_ref(2)%val(0))
    1054           8 :                 allocate(field_ref(3)%val(0))
    1055             :             endif
    1056             : #endif
    1057             : #endif
    1058         312 :             if (getOption(.false._LK, keep)) then
    1059         104 :                 allocate(sindex_ref(2,5))
    1060         104 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
    1061         104 :                 sindex_ref(1,2) = 1; sindex_ref(2,2) = 1
    1062         104 :                 sindex_ref(1,3) = 2; sindex_ref(2,3) = 1
    1063         104 :                 sindex_ref(1,4) = 2; sindex_ref(2,4) = 2
    1064         104 :                 sindex_ref(1,5) = 3; sindex_ref(2,5) = 2
    1065             :             else
    1066         208 :                 allocate(sindex_ref(2,3))
    1067         208 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
    1068         208 :                 sindex_ref(1,2) = 2; sindex_ref(2,2) = 1
    1069         208 :                 sindex_ref(1,3) = 3; sindex_ref(2,3) = 2
    1070             :             end if
    1071             : 
    1072        1872 :             instance = [1_IK, -1_IK, -2_IK, 0_IK]
    1073             : 
    1074         312 :             call reportDelim(iseq, keep)
    1075         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty.", int(__LINE__, IK))
    1076             : 
    1077         312 :             call reportDelim(iseq, keep, instance = instance)
    1078         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty, redundant, non-unique, unsorted, and mixed.", int(__LINE__, IK))
    1079             : 
    1080         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
    1081         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty, redundant, non-unique, unsorted, and mixed, with `sorted = .false.`.", int(__LINE__, IK))
    1082             : 
    1083         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
    1084         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty, redundant, non-unique, unsorted, and mixed, with `unique = .false.`.", int(__LINE__, IK))
    1085             : 
    1086         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
    1087         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size `size(array)/size(sep) + 1` whose components are all empty when `instance` is non-empty, redundant, non-unique, unsorted, and mixed, with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
    1088             : 
    1089             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1090             : 
    1091         312 :             call reset()
    1092             : 
    1093             : #if         CVXK_ENABLED || PVXK_ENABLED
    1094          72 :             if (getOption(.false._LK, keep)) then
    1095          96 :                 allocate(field_ref(3))
    1096             :             else
    1097         144 :                 allocate(field_ref(2))
    1098             :             endif
    1099             : #endif
    1100             : #if         SK_ENABLED && D0_D0_ENABLED
    1101          24 :             array = "AA"
    1102          24 :             sep = "A"
    1103             : #if         CVXK_ENABLED || PVXK_ENABLED
    1104          12 :             if (getOption(.false._LK, keep)) then
    1105           4 :                 field_ref(1)%val = ""
    1106           4 :                 field_ref(2)%val = sep
    1107           4 :                 field_ref(3)%val = "A"
    1108             :             else
    1109           8 :                 field_ref(1)%val = ""
    1110           8 :                 field_ref(2)%val = "A"
    1111             :             endif
    1112             : #endif
    1113             : #elif       SK_ENABLED && D1_D1_ENABLED
    1114          96 :             array = ["AA", "AA"]
    1115          72 :             sep = ["AA"]
    1116             : #if         CVXK_ENABLED || PVXK_ENABLED
    1117          12 :             if (getOption(.false._LK, keep)) then
    1118           4 :                 field_ref(1)%val = [character(2,SKC) ::]
    1119          16 :                 field_ref(2)%val = sep
    1120          12 :                 field_ref(3)%val = ["AA"]
    1121             :             else
    1122           8 :                 field_ref(1)%val = [character(2,SKC) ::]
    1123          24 :                 field_ref(2)%val = ["AA"]
    1124             :             endif
    1125             : #endif
    1126             : #elif       IK_ENABLED && D1_D1_ENABLED
    1127         288 :             array = [1_IKC, 1_IKC]
    1128         216 :             sep = [1_IKC]
    1129             : #if         CVXK_ENABLED || PVXK_ENABLED
    1130          12 :             if (getOption(.false._LK, keep)) then
    1131           4 :                 field_ref(1)%val = [integer(IKC) ::]
    1132          16 :                 field_ref(2)%val = sep
    1133          12 :                 field_ref(3)%val = [1_IKC]
    1134             :             else
    1135           8 :                 field_ref(1)%val = [integer(IKC) ::]
    1136          24 :                 field_ref(2)%val = [1_IKC]
    1137             :             endif
    1138             : #endif
    1139             : #elif       LK_ENABLED && D1_D1_ENABLED
    1140         288 :             array = [.false._LK, .false._LK]
    1141         216 :             sep = [.false._LK]
    1142             : #if         CVXK_ENABLED || PVXK_ENABLED
    1143          12 :             if (getOption(.false._LK, keep)) then
    1144           4 :                 field_ref(1)%val = [logical(LKC) ::]
    1145          16 :                 field_ref(2)%val = sep
    1146          12 :                 field_ref(3)%val = [.false._LKC]
    1147             :             else
    1148           8 :                 field_ref(1)%val = [logical(LKC) ::]
    1149          24 :                 field_ref(2)%val = [.false._LKC]
    1150             :             endif
    1151             : #endif
    1152             : #elif       CK_ENABLED && D1_D1_ENABLED
    1153         240 :             array = [(1._CKC,-1._CKC), (1._CKC,-1._CKC)]
    1154         180 :             sep = [(1._CKC,-1._CKC)]
    1155             : #if         CVXK_ENABLED || PVXK_ENABLED
    1156          12 :             if (getOption(.false._LK, keep)) then
    1157           4 :                 field_ref(1)%val = [complex(CKC) ::]
    1158          16 :                 field_ref(2)%val = sep
    1159          12 :                 field_ref(3)%val = [(1._CKC,-1._CKC)]
    1160             :             else
    1161           8 :                 field_ref(1)%val = [complex(CKC) ::]
    1162          24 :                 field_ref(2)%val = [(1._CKC,-1._CKC)]
    1163             :             endif
    1164             : #endif
    1165             : #elif       RK_ENABLED && D1_D1_ENABLED
    1166         240 :             array = [1._RKC, 1._RKC]
    1167         180 :             sep = [1._RKC]
    1168             : #if         CVXK_ENABLED || PVXK_ENABLED
    1169          12 :             if (getOption(.false._LK, keep)) then
    1170           4 :                 field_ref(1)%val = [real(RKC) ::]
    1171          16 :                 field_ref(2)%val = sep
    1172          12 :                 field_ref(3)%val = [1._RKC]
    1173             :             else
    1174           8 :                 field_ref(1)%val = [real(RKC) ::]
    1175          24 :                 field_ref(2)%val = [1._RKC]
    1176             :             endif
    1177             : #endif
    1178             : #endif
    1179         312 :             if (getOption(.false._LK, keep)) then
    1180         104 :                 allocate(sindex_ref(2,3))
    1181         104 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
    1182         104 :                 sindex_ref(1,2) = 1; sindex_ref(2,2) = 1
    1183         104 :                 sindex_ref(1,3) = 2; sindex_ref(2,3) = 2
    1184             :             else
    1185         208 :                 allocate(sindex_ref(2,2))
    1186         208 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
    1187         208 :                 sindex_ref(1,2) = 2; sindex_ref(2,2) = 2
    1188             :             end if
    1189             : 
    1190        1248 :             instance = [1_IK, -2_IK]
    1191             : 
    1192         312 :             call reportDelim(iseq, keep, instance = instance)
    1193         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose first component is empty but the last corresponds to the last element of `array` when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed.", int(__LINE__, IK))
    1194             : 
    1195         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
    1196         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose first component is empty but the last corresponds to the last element of `array` when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `sorted = .true.`.", int(__LINE__, IK))
    1197             : 
    1198         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
    1199         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose first component is empty but the last corresponds to the last element of `array` when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `sorted = .false.`.", int(__LINE__, IK))
    1200             : 
    1201         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
    1202         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose first component is empty but the last corresponds to the last element of `array` when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `unique = .false.`.", int(__LINE__, IK))
    1203             : 
    1204         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
    1205         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose first component is empty but the last corresponds to the last element of `array` when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
    1206             : 
    1207         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
    1208         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose first component is empty but the last corresponds to the last element of `array` when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
    1209             : 
    1210             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1211             : 
    1212         312 :             call reset()
    1213             : 
    1214             : #if         SK_ENABLED && D0_D0_ENABLED
    1215          24 :             array = "AA"
    1216          24 :             sep = "A"
    1217             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1218             : !            field_ref(1)%val = ""
    1219             : !            field_ref(2)%val = "A"
    1220             : !#endif
    1221             : #elif       SK_ENABLED && D1_D1_ENABLED
    1222          96 :             array = ["AA", "AA"]
    1223          72 :             sep = ["AA"]
    1224             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1225             : !            allocate(character(2,SKC) :: field_ref(1)%val(0))
    1226             : !            field_ref(2)%val = ["AA"]
    1227             : !#endif
    1228             : #elif       IK_ENABLED && D1_D1_ENABLED
    1229         288 :             array = [1_IKC, 1_IKC]
    1230         216 :             sep = [1_IKC]
    1231             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1232             : !            allocate(field_ref(1)%val(0))
    1233             : !            field_ref(2)%val = [1_IKC]
    1234             : !#endif
    1235             : #elif       LK_ENABLED && D1_D1_ENABLED
    1236         288 :             array = [.false._LK, .false._LK]
    1237         216 :             sep = [.false._LK]
    1238             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1239             : !            allocate(field_ref(1)%val(0))
    1240             : !            field_ref(2)%val = [.false._LK]
    1241             : !#endif
    1242             : #elif       CK_ENABLED && D1_D1_ENABLED
    1243         240 :             array = [(1._CKC,-1._CKC), (1._CKC,-1._CKC)]
    1244         180 :             sep = [(1._CKC,-1._CKC)]
    1245             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1246             : !            allocate(field_ref(1)%val(0))
    1247             : !            field_ref(2)%val = [(1._CKC,-1._CKC)]
    1248             : !#endif
    1249             : #elif       RK_ENABLED && D1_D1_ENABLED
    1250         240 :             array = [1._RKC, 1._RKC]
    1251         180 :             sep = [1._RKC]
    1252             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1253             : !            allocate(field_ref(1)%val(0))
    1254             : !            field_ref(2)%val = [1._RKC]
    1255             : !#endif
    1256             : #endif
    1257         936 :             instance = [-2_IK]
    1258             : #if         CVXK_ENABLED || PVXK_ENABLED
    1259          72 :             if (getOption(.false._LK, keep)) then
    1260          96 :                 allocate(field_ref(3))
    1261          24 :                 field_ref(1)%val = array(1:0)
    1262          64 :                 field_ref(2)%val = array(1:1)
    1263          64 :                 field_ref(3)%val = array(2:2)
    1264             :             else
    1265         144 :                 allocate(field_ref(2))
    1266          48 :                 field_ref(1)%val = array(1:0)
    1267         128 :                 field_ref(2)%val = array(2:2)
    1268             :             endif
    1269             : #endif
    1270         312 :             if (getOption(.false._LK, keep)) then
    1271         104 :                 allocate(sindex_ref(2,3))
    1272         104 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
    1273         104 :                 sindex_ref(1,2) = 1; sindex_ref(2,2) = 1
    1274         104 :                 sindex_ref(1,3) = 2; sindex_ref(2,3) = 2
    1275             :             else
    1276         208 :                 allocate(sindex_ref(2,2))
    1277         208 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
    1278         208 :                 sindex_ref(1,2) = 2; sindex_ref(2,2) = 2
    1279             :             endif
    1280             : 
    1281         312 :             call reportDelim(iseq, keep, instance = instance)
    1282         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose first component is empty but the last corresponds to the last element of `array` when `instance` is non-empty but incomprehensive and unique.", int(__LINE__, IK))
    1283             : 
    1284         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
    1285         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose first component is empty but the last corresponds to the last element of `array` when `instance` is non-empty but incomprehensive and unique, with `sorted = .true.`.", int(__LINE__, IK))
    1286             : 
    1287         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
    1288         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose first component is empty but the last corresponds to the last element of `array` when `instance` is non-empty but incomprehensive and unique, with `sorted = .false.`.", int(__LINE__, IK))
    1289             : 
    1290         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
    1291         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose first component is empty but the last corresponds to the last element of `array` when `instance` is non-empty but incomprehensive and unique, with `unique = .true.`.", int(__LINE__, IK))
    1292             : 
    1293         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
    1294         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose first component is empty but the last corresponds to the last element of `array` when `instance` is non-empty but incomprehensive and unique, with `unique = .false.`.", int(__LINE__, IK))
    1295             : 
    1296         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
    1297         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose first component is empty but the last corresponds to the last element of `array` when `instance` is non-empty but incomprehensive and unique, with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
    1298             : 
    1299         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
    1300         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose first component is empty but the last corresponds to the last element of `array` when `instance` is non-empty but incomprehensive and unique, with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
    1301             : 
    1302         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
    1303         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose first component is empty but the last corresponds to the last element of `array` when `instance` is non-empty but incomprehensive and unique, with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
    1304             : 
    1305             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1306             : 
    1307         312 :             call reset()
    1308             : 
    1309             : #if         SK_ENABLED && D0_D0_ENABLED
    1310          24 :             array = "AA"
    1311          24 :             sep = "A"
    1312             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1313             : !            field_ref(1)%val = "A"
    1314             : !            field_ref(2)%val = ""
    1315             : !#endif
    1316             : #elif       SK_ENABLED && D1_D1_ENABLED
    1317          96 :             array = ["AA", "AA"]
    1318          72 :             sep = ["AA"]
    1319             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1320             : !            field_ref(1)%val = ["AA"]
    1321             : !            allocate(character(2,SKC) :: field_ref(2)%val(0))
    1322             : !#endif
    1323             : #elif       IK_ENABLED && D1_D1_ENABLED
    1324         288 :             array = [1_IKC, 1_IKC]
    1325         216 :             sep = [1_IKC]
    1326             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1327             : !            field_ref(1)%val = [1_IKC]
    1328             : !            allocate(field_ref(2)%val(0))
    1329             : !#endif
    1330             : #elif       LK_ENABLED && D1_D1_ENABLED
    1331         288 :             array = [.false._LK, .false._LK]
    1332         216 :             sep = [.false._LK]
    1333             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1334             : !            field_ref(1)%val = [.false._LK]
    1335             : !            allocate(field_ref(2)%val(0))
    1336             : !#endif
    1337             : #elif       CK_ENABLED && D1_D1_ENABLED
    1338         240 :             array = [(1._CKC,-1._CKC), (1._CKC,-1._CKC)]
    1339         180 :             sep = [(1._CKC,-1._CKC)]
    1340             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1341             : !            field_ref(1)%val = [(1._CKC,-1._CKC)]
    1342             : !            allocate(field_ref(2)%val(0))
    1343             : !#endif
    1344             : #elif       RK_ENABLED && D1_D1_ENABLED
    1345         240 :             array = [1._RKC, 1._RKC]
    1346         180 :             sep = [1._RKC]
    1347             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1348             : !            field_ref(1)%val = [1._RKC]
    1349             : !            allocate(field_ref(2)%val(0))
    1350             : !#endif
    1351             : #endif
    1352        1248 :             instance = [-1_IK, 3_IK]
    1353             : #if         CVXK_ENABLED || PVXK_ENABLED
    1354          72 :             if (getOption(.false._LK, keep)) then
    1355          96 :                 allocate(field_ref(3))
    1356          64 :                 field_ref(1)%val = array(1:1)
    1357          64 :                 field_ref(2)%val = array(2:2)
    1358          24 :                 field_ref(3)%val = array(3:2)
    1359             :             else
    1360         144 :                 allocate(field_ref(2))
    1361         128 :                 field_ref(1)%val = array(1:1)
    1362          48 :                 field_ref(2)%val = array(3:2)
    1363             :             endif
    1364             : #endif
    1365         312 :             if (getOption(.false._LK, keep)) then
    1366         104 :                 allocate(sindex_ref(2,3))
    1367         104 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 1
    1368         104 :                 sindex_ref(1,2) = 2; sindex_ref(2,2) = 2
    1369         104 :                 sindex_ref(1,3) = 3; sindex_ref(2,3) = 2
    1370             :             else
    1371         208 :                 allocate(sindex_ref(2,2))
    1372         208 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 1
    1373         208 :                 sindex_ref(1,2) = 3; sindex_ref(2,2) = 2
    1374             :             endif
    1375             : 
    1376         312 :             call reportDelim(iseq, keep, instance = instance)
    1377         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose last component is empty but the first corresponds to the first element of `array` when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed.", int(__LINE__, IK))
    1378             : 
    1379         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
    1380         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose last component is empty but the first corresponds to the first element of `array` when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `sorted = .true.`.", int(__LINE__, IK))
    1381             : 
    1382         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
    1383         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose last component is empty but the first corresponds to the first element of `array` when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `sorted = .false.`.", int(__LINE__, IK))
    1384             : 
    1385         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
    1386         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose last component is empty but the first corresponds to the first element of `array` when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `unique = .true.`.", int(__LINE__, IK))
    1387             : 
    1388         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
    1389         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose last component is empty but the first corresponds to the first element of `array` when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `unique = .false.`.", int(__LINE__, IK))
    1390             : 
    1391         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
    1392         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose last component is empty but the first corresponds to the first element of `array` when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
    1393             : 
    1394         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
    1395         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose last component is empty but the first corresponds to the first element of `array` when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
    1396             : 
    1397         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
    1398         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` of non-empty `sep` must yield an `field` of size two whose last component is empty but the first corresponds to the first element of `array` when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
    1399             : 
    1400             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1401             : 
    1402         312 :             call reset()
    1403             : 
    1404             : #if         SK_ENABLED && D0_D0_ENABLED
    1405          24 :             array = "AA"
    1406             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1407             : !            field_ref(1)%val = ""
    1408             : !            field_ref(2)%val = ""
    1409             : !#endif
    1410             : #elif       SK_ENABLED && D1_D1_ENABLED
    1411          96 :             array = ["AA", "AA"]
    1412             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1413             : !            allocate(character(2,SKC) :: field_ref(1)%val(0))
    1414             : !            allocate(character(2,SKC) :: field_ref(2)%val(0))
    1415             : !#endif
    1416             : #elif       IK_ENABLED && D1_D1_ENABLED
    1417         288 :             array = [1_IKC, 1_IKC]
    1418             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1419             : !            allocate(field_ref(1)%val(0))
    1420             : !            allocate(field_ref(2)%val(0))
    1421             : !#endif
    1422             : #elif       LK_ENABLED && D1_D1_ENABLED
    1423         288 :             array = [.false._LK, .false._LK]
    1424             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1425             : !            allocate(field_ref(1)%val(0))
    1426             : !            allocate(field_ref(2)%val(0))
    1427             : !#endif
    1428             : #elif       CK_ENABLED && D1_D1_ENABLED
    1429         240 :             array = [(1._CKC,-1._CKC), (1._CKC,-1._CKC)]
    1430             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1431             : !            allocate(field_ref(1)%val(0))
    1432             : !            allocate(field_ref(2)%val(0))
    1433             : !#endif
    1434             : #elif       RK_ENABLED && D1_D1_ENABLED
    1435         240 :             array = [1._RKC, 1._RKC]
    1436             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1437             : !            allocate(field_ref(1)%val(0))
    1438             : !            allocate(field_ref(2)%val(0))
    1439             : !#endif
    1440             : #endif
    1441        1464 :             sep = array
    1442        1248 :             instance = [-1_IK, 3_IK]
    1443             : 
    1444             : #if         CVXK_ENABLED || PVXK_ENABLED
    1445          72 :             if (getOption(.false._LK, keep)) then
    1446          96 :                 allocate(field_ref(3))
    1447          24 :                 field_ref(1)%val = array(1:0)
    1448          84 :                 field_ref(2)%val = array(1:GET_SIZE(array)) ! fpp
    1449          44 :                 field_ref(3)%val = array(GET_SIZE(array)+1:GET_SIZE(array)) ! fpp
    1450             :             else
    1451         144 :                 allocate(field_ref(2))
    1452          48 :                 field_ref(1)%val = array(1:0)
    1453          88 :                 field_ref(2)%val = array(GET_SIZE(array):GET_SIZE(array)-1) ! fpp
    1454             :             endif
    1455             : #endif
    1456         312 :             if (getOption(.false._LK, keep)) then
    1457         104 :                 allocate(sindex_ref(2,3))
    1458         104 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
    1459         104 :                 sindex_ref(1,2) = 1; sindex_ref(2,2) = GET_SIZE(array) ! fpp
    1460         104 :                 sindex_ref(1,3) = GET_SIZE(array); sindex_ref(2,3) = GET_SIZE(array) - 1 ! fpp
    1461             :             else
    1462         208 :                 allocate(sindex_ref(2,2))
    1463         208 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
    1464         208 :                 sindex_ref(1,2) = GET_SIZE(array); sindex_ref(2,2) = GET_SIZE(array) - 1 ! fpp
    1465             :             endif
    1466             : 
    1467         312 :             call reportDelim(iseq, keep, instance = instance)
    1468         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` the same as the `array` must yield an `field` of size two whose components are all empty when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed.", int(__LINE__, IK))
    1469             : 
    1470         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
    1471         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` the same as the `array` must yield an `field` of size two whose components are all empty when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `sorted = .true.`.", int(__LINE__, IK))
    1472             : 
    1473         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
    1474         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` the same as the `array` must yield an `field` of size two whose components are all empty when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `sorted = .false.`.", int(__LINE__, IK))
    1475             : 
    1476         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
    1477         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` the same as the `array` must yield an `field` of size two whose components are all empty when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `unique = .true.`.", int(__LINE__, IK))
    1478             : 
    1479         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
    1480         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` the same as the `array` must yield an `field` of size two whose components are all empty when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `unique = .false.`.", int(__LINE__, IK))
    1481             : 
    1482         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
    1483         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` the same as the `array` must yield an `field` of size two whose components are all empty when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
    1484             : 
    1485         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
    1486         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` the same as the `array` must yield an `field` of size two whose components are all empty when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
    1487             : 
    1488         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
    1489         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` the same as the `array` must yield an `field` of size two whose components are all empty when `instance` is non-empty but incomprehensive, redundant, non-unique, and mixed, with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
    1490             : 
    1491             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1492             : 
    1493         312 :             call reset()
    1494             : 
    1495             : #if         SK_ENABLED && D0_D0_ENABLED
    1496          24 :             array = "AA"
    1497             : #elif       SK_ENABLED && D1_D1_ENABLED
    1498          96 :             array = ["AA", "AA"]
    1499             : #elif       IK_ENABLED && D1_D1_ENABLED
    1500         288 :             array = [1_IKC, 1_IKC]
    1501             : #elif       LK_ENABLED && D1_D1_ENABLED
    1502         288 :             array = [.false._LK, .false._LK]
    1503             : #elif       CK_ENABLED && D1_D1_ENABLED
    1504         240 :             array = [(1._CKC,-1._CKC), (1._CKC,-1._CKC)]
    1505             : #elif       RK_ENABLED && D1_D1_ENABLED
    1506         240 :             array = [1._RKC, 1._RKC]
    1507             : #endif
    1508        1464 :             sep = array
    1509        1248 :             instance = [0_IK, 3_IK]
    1510             : #if         CVXK_ENABLED || PVXK_ENABLED
    1511         168 :             allocate(field_ref(1))
    1512         312 :             field_ref(1)%val = array
    1513             : #endif
    1514         312 :             allocate(sindex_ref(2,1))
    1515         312 :             sindex_ref(1,1) = 1; sindex_ref(2,1) = GET_SIZE(array) ! fpp
    1516             : 
    1517         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
    1518         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` the same as the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .true.`.", int(__LINE__, IK))
    1519             : 
    1520         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
    1521         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` the same as the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .false.`.", int(__LINE__, IK))
    1522             : 
    1523         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
    1524         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` the same as the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty but non-sensible, with `unique = .true.`.", int(__LINE__, IK))
    1525             : 
    1526         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
    1527         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` the same as the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty but non-sensible, with `unique = .false.`.", int(__LINE__, IK))
    1528             : 
    1529         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
    1530         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` the same as the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
    1531             : 
    1532         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
    1533         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` the same as the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
    1534             : 
    1535         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
    1536         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` the same as the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
    1537             : 
    1538             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1539             : 
    1540         312 :             call reset()
    1541             : 
    1542             : #if         SK_ENABLED && D0_D0_ENABLED
    1543          24 :             array = "AA"
    1544          24 :             sep = array//array
    1545             : #elif       SK_ENABLED && D1_D1_ENABLED
    1546          96 :             array = ["AA", "AA"]
    1547         240 :             sep = [array, array]
    1548             : #elif       IK_ENABLED && D1_D1_ENABLED
    1549         288 :             array = [1_IKC, 1_IKC]
    1550         720 :             sep = [array, array]
    1551             : #elif       LK_ENABLED && D1_D1_ENABLED
    1552         288 :             array = [.false._LK, .false._LK]
    1553         720 :             sep = [array, array]
    1554             : #elif       CK_ENABLED && D1_D1_ENABLED
    1555         240 :             array = [(1._CKC,-1._CKC), (1._CKC,-1._CKC)]
    1556         600 :             sep = [array, array]
    1557             : #elif       RK_ENABLED && D1_D1_ENABLED
    1558         240 :             array = [1._RKC, 1._RKC]
    1559         600 :             sep = [array, array]
    1560             : #endif
    1561        1248 :             instance = [0_IK, 3_IK]
    1562             : #if         CVXK_ENABLED || PVXK_ENABLED
    1563         168 :             allocate(field_ref(1))
    1564         312 :             field_ref(1)%val = array
    1565             : #endif
    1566         312 :             allocate(sindex_ref(2,1))
    1567         312 :             sindex_ref(1,1) = 1; sindex_ref(2,1) = GET_SIZE(array) ! fpp
    1568             : 
    1569         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
    1570         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` larger than the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .true.`.", int(__LINE__, IK))
    1571             : 
    1572         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
    1573         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` larger than the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .false.`.", int(__LINE__, IK))
    1574             : 
    1575         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
    1576         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` larger than the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty but non-sensible, with `unique = .true.`.", int(__LINE__, IK))
    1577             : 
    1578         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
    1579         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` larger than the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty but non-sensible, with `unique = .false.`.", int(__LINE__, IK))
    1580             : 
    1581         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
    1582         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` larger than the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
    1583             : 
    1584         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
    1585         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` larger than the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
    1586             : 
    1587         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
    1588         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` larger than the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
    1589             : 
    1590         936 :             instance = [1_IK]
    1591             : 
    1592         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
    1593         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` larger than the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty, and sensible, with `sorted = .true.`.", int(__LINE__, IK))
    1594             : 
    1595         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
    1596         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` larger than the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty, and sensible, with `sorted = .false.`.", int(__LINE__, IK))
    1597             : 
    1598         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
    1599         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` larger than the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty, and sensible, with `unique = .true.`.", int(__LINE__, IK))
    1600             : 
    1601         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
    1602         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` larger than the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty, and sensible, with `unique = .false.`.", int(__LINE__, IK))
    1603             : 
    1604         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
    1605         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` larger than the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty, and sensible, with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
    1606             : 
    1607         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
    1608         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` larger than the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty, and sensible, with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
    1609             : 
    1610         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
    1611         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` larger than the `array` must yield an `field` of size two whose components are all empty when `instance` is ordered, unique, non-empty, and sensible, with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
    1612             : 
    1613             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1614             : 
    1615         312 :             call reset()
    1616             : 
    1617             : #if         SK_ENABLED && D0_D0_ENABLED
    1618          24 :             array = "AABBCCAA"
    1619          24 :             sep = "AA"
    1620             : #elif       SK_ENABLED && D1_D1_ENABLED
    1621         240 :             array = ["AA", "AA", "BB", "BB", "CC", "CC", "AA", "AA"]
    1622          96 :             sep = ["AA", "AA"]
    1623             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1624             : !            allocate(character(2,SKC) :: field_ref(1)%val(0))
    1625             : !            allocate(character(2,SKC) :: field_ref(3)%val(0))
    1626             : !            field_ref(2)%val = ["BB", "CC"]
    1627             : !#endif
    1628             : #elif       IK_ENABLED && D1_D1_ENABLED
    1629         720 :             array = [1_IKC, 1_IKC, 2_IKC, 2_IKC, 3_IKC, 3_IKC, 1_IKC, 1_IKC]
    1630         288 :             sep = [1_IKC, 1_IKC]
    1631             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1632             : !            allocate(field_ref(1)%val(0))
    1633             : !            field_ref(2)%val = [2_IKC, 2_IKC, 3_IKC, 3_IKC]
    1634             : !            allocate(field_ref(3)%val(0))
    1635             : !#endif
    1636             : #elif       LK_ENABLED && D1_D1_ENABLED
    1637         720 :             array = [.false._LK, .false._LK, .true._LK, .true._LK, .true._LK, .true._LK, .false._LK, .false._LK]
    1638         288 :             sep = [.false._LK, .false._LK]
    1639             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1640             : !            allocate(field_ref(1)%val(0))
    1641             : !            field_ref(2)%val = [.true._LK, .true._LK, .true._LK, .true._LK]
    1642             : !            allocate(field_ref(3)%val(0))
    1643             : !#endif
    1644             : #elif       CK_ENABLED && D1_D1_ENABLED
    1645         600 :             array = [(1._CKC,-1._CKC), (1._CKC,-1._CKC), (2._CKC,-2._CKC), (2._CKC,-2._CKC), (3._CKC,-3._CKC), (3._CKC,-3._CKC), (1._CKC,-1._CKC), (1._CKC,-1._CKC)]
    1646         240 :             sep = [(1._CKC,-1._CKC), (1._CKC,-1._CKC)]
    1647             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1648             : !            allocate(field_ref(1)%val(0))
    1649             : !            field_ref(2)%val = [(2._CKC,-2._CKC), (2._CKC,-2._CKC), (3._CKC,-3._CKC), (3._CKC,-3._CKC)]
    1650             : !            allocate(field_ref(3)%val(0))
    1651             : !#endif
    1652             : #elif       RK_ENABLED && D1_D1_ENABLED
    1653         600 :             array = [1._RKC, 1._RKC, 2._RKC, 2._RKC, 3._RKC, 3._RKC, 1._RKC, 1._RKC]
    1654         240 :             sep = [1._RKC, 1._RKC]
    1655             : !#if         CVXK_ENABLED || PVXK_ENABLED
    1656             : !            allocate(field_ref(1)%val(0))
    1657             : !            field_ref(2)%val = [2._RKC, 2._RKC, 3._RKC, 3._RKC]
    1658             : !            allocate(field_ref(3)%val(0))
    1659             : !#endif
    1660             : #endif
    1661             : #if         CVXK_ENABLED || PVXK_ENABLED
    1662          72 :             if (getOption(.false._LK, keep)) then
    1663         144 :                 allocate(field_ref(5))
    1664          24 :                 field_ref(1)%val = array(1:0)
    1665          84 :                 field_ref(2)%val = array(1:2)
    1666         124 :                 field_ref(3)%val = array(3:6)
    1667          84 :                 field_ref(4)%val = array(7:8)
    1668          24 :                 field_ref(5)%val = array(9:8)
    1669             :             else
    1670         192 :                 allocate(field_ref(3))
    1671          48 :                 field_ref(1)%val = array(1:0)
    1672         248 :                 field_ref(2)%val = array(3:6)
    1673          48 :                 field_ref(3)%val = array(8:7)
    1674             :             endif
    1675             : #endif
    1676         312 :             if (getOption(.false._LK, keep)) then
    1677         104 :                 allocate(sindex_ref(2,5))
    1678         104 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
    1679         104 :                 sindex_ref(1,2) = 1; sindex_ref(2,2) = 2
    1680         104 :                 sindex_ref(1,3) = 3; sindex_ref(2,3) = 6
    1681         104 :                 sindex_ref(1,4) = 7; sindex_ref(2,4) = 8
    1682         104 :                 sindex_ref(1,5) = 9; sindex_ref(2,5) = 8
    1683             :             else
    1684         208 :                 allocate(sindex_ref(2,3))
    1685         208 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 0
    1686         208 :                 sindex_ref(1,2) = 3; sindex_ref(2,2) = 6
    1687         208 :                 sindex_ref(1,3) = 9; sindex_ref(2,3) = 8
    1688             :             endif
    1689        1248 :             instance = [1_IK, -1_IK]
    1690             : 
    1691         312 :             call reportDelim(iseq, keep)
    1692         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` occurrence at the beginning and the end of the `array` must yield an `field` of size three whose first and last elements are empty.", int(__LINE__, IK))
    1693             : 
    1694         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
    1695         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` occurrence at the beginning and the end of the `array` must yield an `field` of size three whose first and last elements are empty when `instance` is ordered, unique, non-empty, and sensible, with `sorted = .true.`.", int(__LINE__, IK))
    1696             : 
    1697         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
    1698         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` occurrence at the beginning and the end of the `array` must yield an `field` of size three whose first and last elements are empty when `instance` is ordered, unique, non-empty, and sensible, with `sorted = .false.`.", int(__LINE__, IK))
    1699             : 
    1700         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
    1701         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` occurrence at the beginning and the end of the `array` must yield an `field` of size three whose first and last elements are empty when `instance` is ordered, unique, non-empty, and sensible, with `unique = .true.`.", int(__LINE__, IK))
    1702             : 
    1703         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
    1704         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` occurrence at the beginning and the end of the `array` must yield an `field` of size three whose first and last elements are empty when `instance` is ordered, unique, non-empty, and sensible, with `unique = .false.`.", int(__LINE__, IK))
    1705             : 
    1706         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
    1707         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` occurrence at the beginning and the end of the `array` must yield an `field` of size three whose first and last elements are empty when `instance` is ordered, unique, non-empty, and sensible, with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
    1708             : 
    1709         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
    1710         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` occurrence at the beginning and the end of the `array` must yield an `field` of size three whose first and last elements are empty when `instance` is ordered, unique, non-empty, and sensible, with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
    1711             : 
    1712         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
    1713         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with `sep` occurrence at the beginning and the end of the `array` must yield an `field` of size three whose first and last elements are empty when `instance` is ordered, unique, non-empty, and sensible, with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
    1714             : 
    1715             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1716             : 
    1717         312 :             call reset()
    1718             : 
    1719             : #if         SK_ENABLED && D0_D0_ENABLED
    1720          24 :             array = "AA"
    1721          24 :             sep = "X"
    1722             : #elif       SK_ENABLED && D1_D1_ENABLED
    1723          96 :             array = ["AA", "AA"]
    1724          72 :             sep = ["XX"]
    1725             : #elif       IK_ENABLED && D1_D1_ENABLED
    1726         288 :             array = [1_IKC, 1_IKC]
    1727         216 :             sep = [0_IKC]
    1728             : #elif       LK_ENABLED && D1_D1_ENABLED
    1729         288 :             array = [.false._LK, .false._LK]
    1730         216 :             sep = [.true._LK]
    1731             : #elif       CK_ENABLED && D1_D1_ENABLED
    1732         240 :             array = [(1._CKC,-1._CKC), (1._CKC,-1._CKC)]
    1733         180 :             sep = [(0._CKC,0._CKC)]
    1734             : #elif       RK_ENABLED && D1_D1_ENABLED
    1735         240 :             array = [1._RKC, 1._RKC]
    1736         180 :             sep = [0._RKC]
    1737             : #endif
    1738        1248 :             instance = [0_IK, 3_IK]
    1739             : #if         CVXK_ENABLED || PVXK_ENABLED
    1740         168 :             allocate(field_ref(1))
    1741         312 :             field_ref(1)%val = array
    1742             : #endif
    1743         312 :             allocate(sindex_ref(2,1))
    1744         312 :             sindex_ref(1,1) = 1; sindex_ref(2,1) = 2
    1745             : 
    1746         312 :             call reportDelim(iseq, keep)
    1747         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with non-matching `sep` must yield an `field` of size one whose sole component is `array`.", int(__LINE__, IK))
    1748             : 
    1749         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
    1750         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with non-matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .true.`.", int(__LINE__, IK))
    1751             : 
    1752         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
    1753         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with non-matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .false.`.", int(__LINE__, IK))
    1754             : 
    1755         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
    1756         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with non-matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty but non-sensible, with `unique = .true.`.", int(__LINE__, IK))
    1757             : 
    1758         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
    1759         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with non-matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty but non-sensible, with `unique = .false.`.", int(__LINE__, IK))
    1760             : 
    1761         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
    1762         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with non-matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
    1763             : 
    1764         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
    1765         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with non-matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
    1766             : 
    1767         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
    1768         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with non-matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
    1769             : 
    1770         936 :             instance = [1_IK]
    1771             : 
    1772         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
    1773         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with non-matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty, and sensible, with `sorted = .true.`.", int(__LINE__, IK))
    1774             : 
    1775         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
    1776         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with non-matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty, and sensible, with `sorted = .false.`.", int(__LINE__, IK))
    1777             : 
    1778         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
    1779         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with non-matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty, and sensible, with `unique = .true.`.", int(__LINE__, IK))
    1780             : 
    1781         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
    1782         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with non-matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty, and sensible, with `unique = .false.`.", int(__LINE__, IK))
    1783             : 
    1784         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
    1785         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with non-matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty, and sensible, with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
    1786             : 
    1787         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
    1788         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with non-matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty, and sensible, with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
    1789             : 
    1790         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
    1791         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with non-matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty, and sensible, with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
    1792             : 
    1793             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1794             : 
    1795         312 :             call reset()
    1796             : 
    1797             : #if         SK_ENABLED && D0_D0_ENABLED
    1798          24 :             array = "AXAXA"
    1799          24 :             sep = "X"
    1800             : #elif       SK_ENABLED && D1_D1_ENABLED
    1801         168 :             array = ["AA", "XX", "AA", "XX", "AA"]
    1802          72 :             sep = ["XX"]
    1803             : #elif       IK_ENABLED && D1_D1_ENABLED
    1804         504 :             array = [1_IKC, 0_IKC, 1_IKC, 0_IKC, 1_IKC]
    1805         216 :             sep = [0_IKC]
    1806             : #elif       LK_ENABLED && D1_D1_ENABLED
    1807         504 :             array = [.false._LK, .true._LK, .false._LK, .true._LK, .false._LK]
    1808         216 :             sep = [.true._LK]
    1809             : #elif       CK_ENABLED && D1_D1_ENABLED
    1810         420 :             array = [(1._CKC,-1._CKC), (0._CKC,0._CKC), (1._CKC,-1._CKC), (0._CKC,0._CKC), (1._CKC,-1._CKC)]
    1811         180 :             sep = [(0._CKC,0._CKC)]
    1812             : #elif       RK_ENABLED && D1_D1_ENABLED
    1813         420 :             array = [1._RKC, 0._RKC, 1._RKC, 0._RKC, 1._RKC]
    1814         180 :             sep = [0._RKC]
    1815             : #endif
    1816        1248 :             instance = [1_IK, -1_IK]
    1817             : #if         CVXK_ENABLED || PVXK_ENABLED
    1818          72 :             if (getOption(.false._LK, keep)) then
    1819         144 :                 allocate(field_ref(5))
    1820          64 :                 field_ref(1)%val = array(1:1)
    1821          64 :                 field_ref(2)%val = array(2:2)
    1822          64 :                 field_ref(3)%val = array(3:3)
    1823          64 :                 field_ref(4)%val = array(4:4)
    1824          64 :                 field_ref(5)%val = array(5:5)
    1825             :             else
    1826         192 :                 allocate(field_ref(3))
    1827         128 :                 field_ref(1)%val = array(1:1)
    1828         128 :                 field_ref(2)%val = array(3:3)
    1829         128 :                 field_ref(3)%val = array(5:5)
    1830             :             endif
    1831             : #endif
    1832         312 :             if (getOption(.false._LK, keep)) then
    1833         104 :                 allocate(sindex_ref(2,5))
    1834         104 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 1
    1835         104 :                 sindex_ref(1,2) = 2; sindex_ref(2,2) = 2
    1836         104 :                 sindex_ref(1,3) = 3; sindex_ref(2,3) = 3
    1837         104 :                 sindex_ref(1,4) = 4; sindex_ref(2,4) = 4
    1838         104 :                 sindex_ref(1,5) = 5; sindex_ref(2,5) = 5
    1839             :             else
    1840         208 :                 allocate(sindex_ref(2,3))
    1841         208 :                 sindex_ref(1,1) = 1; sindex_ref(2,1) = 1
    1842         208 :                 sindex_ref(1,2) = 3; sindex_ref(2,2) = 3
    1843         208 :                 sindex_ref(1,3) = 5; sindex_ref(2,3) = 5
    1844             :             end if
    1845             : 
    1846         312 :             call reportDelim(iseq, keep)
    1847         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with two `sep` occurrences must yield an `field` of size three whose three components are the non-matching elements of `array`.", int(__LINE__, IK))
    1848             : 
    1849         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
    1850         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with two `sep` occurrences must yield an `field` of size three whose three components are the non-matching elements of `array` when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .true.`.", int(__LINE__, IK))
    1851             : 
    1852         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
    1853         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with two `sep` occurrences must yield an `field` of size three whose three components are the non-matching elements of `array` when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .false.`.", int(__LINE__, IK))
    1854             : 
    1855         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
    1856         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with two `sep` occurrences must yield an `field` of size three whose three components are the non-matching elements of `array` when `instance` is ordered, unique, non-empty but non-sensible, with `unique = .true.`.", int(__LINE__, IK))
    1857             : 
    1858         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
    1859         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with two `sep` occurrences must yield an `field` of size three whose three components are the non-matching elements of `array` when `instance` is ordered, unique, non-empty but non-sensible, with `unique = .false.`.", int(__LINE__, IK))
    1860             : 
    1861         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
    1862         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with two `sep` occurrences must yield an `field` of size three whose three components are the non-matching elements of `array` when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
    1863             : 
    1864         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
    1865         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with two `sep` occurrences must yield an `field` of size three whose three components are the non-matching elements of `array` when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
    1866             : 
    1867         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
    1868         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with two `sep` occurrences must yield an `field` of size three whose three components are the non-matching elements of `array` when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
    1869             : 
    1870             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1871             : 
    1872         312 :             call reset()
    1873             : 
    1874             : #if         SK_ENABLED && D0_D0_ENABLED
    1875          24 :             array = "AA"
    1876          24 :             sep = "A"
    1877             : #elif       SK_ENABLED && D1_D1_ENABLED
    1878          96 :             array = ["AA", "AA"]
    1879          72 :             sep = ["AA"]
    1880             : #elif       IK_ENABLED && D1_D1_ENABLED
    1881         288 :             array = [1_IKC, 1_IKC]
    1882         216 :             sep = [1_IKC]
    1883             : #elif       LK_ENABLED && D1_D1_ENABLED
    1884         288 :             array = [.false._LK, .false._LK]
    1885         216 :             sep = [.false._LK]
    1886             : #elif       CK_ENABLED && D1_D1_ENABLED
    1887         240 :             array = [(1._CKC,-1._CKC), (1._CKC,-1._CKC)]
    1888         180 :             sep = [(1._CKC,-1._CKC)]
    1889             : #elif       RK_ENABLED && D1_D1_ENABLED
    1890         240 :             array = [1._RKC, 1._RKC]
    1891         180 :             sep = [1._RKC]
    1892             : #endif
    1893        1248 :             instance = [0_IK, 3_IK]
    1894             : #if         CVXK_ENABLED || PVXK_ENABLED
    1895         168 :             allocate(field_ref(1))
    1896         312 :             field_ref(1)%val = array
    1897             : #endif
    1898         312 :             allocate(sindex_ref(2,1))
    1899         312 :             sindex_ref(1,1) = 1; sindex_ref(2,1) = 2
    1900             : 
    1901         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK)
    1902         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with a matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .true.`.", int(__LINE__, IK))
    1903             : 
    1904         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK)
    1905         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with a matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .false.`.", int(__LINE__, IK))
    1906             : 
    1907         312 :             call reportDelim(iseq, keep, instance = instance, unique = .true._LK)
    1908         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with a matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty but non-sensible, with `unique = .true.`.", int(__LINE__, IK))
    1909             : 
    1910         312 :             call reportDelim(iseq, keep, instance = instance, unique = .false._LK)
    1911         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with a matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty but non-sensible, with `unique = .false.`.", int(__LINE__, IK))
    1912             : 
    1913         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .false._LK)
    1914         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with a matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .true._LK, unique = .false.`.", int(__LINE__, IK))
    1915             : 
    1916         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .true._LK, unique = .true._LK)
    1917         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with a matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .true._LK, unique = .true.`.", int(__LINE__, IK))
    1918             : 
    1919         312 :             call reportDelim(iseq, keep, instance = instance, sorted = .false._LK, unique = .false._LK)
    1920         312 :             call test%assert(assertion, PROCEDURE_NAME//SK_": A non-empty `array` with a matching `sep` must yield an `field` of size one whose sole component is `array` when `instance` is ordered, unique, non-empty but non-sensible, with `sorted = .false._LK, unique = .false.`.", int(__LINE__, IK))
    1921             : 
    1922             :             !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1923             : 
    1924         312 :         end subroutine
    1925             : 
    1926             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1927             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1928             : 
    1929             :         subroutine reportDelim ( iseq & ! LCOV_EXCL_LINE
    1930             :                                 , keep & ! LCOV_EXCL_LINE
    1931             :                                 , instance & ! LCOV_EXCL_LINE
    1932             :                                 , sorted & ! LCOV_EXCL_LINE
    1933             :                                 , unique & ! LCOV_EXCL_LINE
    1934             :                                 )
    1935             :             use pm_io, only: display_type
    1936             :             logical(LK) , external  , optional              :: iseq
    1937             :             logical(LK) , intent(in), optional              :: keep
    1938             :             integer(IK) , intent(in), optional, contiguous  :: instance(:)
    1939             :             logical(LK) , intent(in), optional              :: sorted
    1940             :             logical(LK) , intent(in), optional              :: unique
    1941       50232 :             type(display_type)                              :: disp
    1942             : #if         CVXK_ENABLED || PVXK_ENABLED
    1943             :             integer(IK)                                     :: i
    1944             : #endif
    1945             : 
    1946       50232 :             disp = display_type()
    1947             : 
    1948       50232 :             if (present(iseq) .and. present(instance) .and. present(sorted) .and. present(unique)) then
    1949        9672 :                 call setSplit(sindex, array, sep, iseq = iseq, instance = instance, sorted = sorted, unique = unique, keep = keep)
    1950             : #if             CVXK_ENABLED || PVXK_ENABLED
    1951        7008 :                 call setSplit(field, array, sep, iseq = iseq, instance = instance, sorted = sorted, unique = unique, keep = keep)
    1952             : #endif
    1953       40560 :             elseif (present(iseq) .and. present(instance) .and. present(sorted) .and. .not. present(unique)) then
    1954        6084 :                 call setSplit(sindex, array, sep, iseq = iseq, instance = instance, sorted = sorted, keep = keep)
    1955             : #if             CVXK_ENABLED || PVXK_ENABLED
    1956        4332 :                 call setSplit(field, array, sep, iseq = iseq, instance = instance, sorted = sorted, keep = keep)
    1957             : #endif
    1958       34476 :             elseif (present(iseq) .and. present(instance) .and. .not. present(sorted) .and. present(unique)) then
    1959        5772 :                 call setSplit(sindex, array, sep, iseq = iseq, instance = instance, unique = unique, keep = keep)
    1960             : #if             CVXK_ENABLED || PVXK_ENABLED
    1961        4152 :                 call setSplit(field, array, sep, iseq = iseq, instance = instance, unique = unique, keep = keep)
    1962             : #endif
    1963       28704 :             elseif (present(iseq) .and. present(instance) .and. .not. present(sorted) .and. .not. present(unique)) then
    1964        1872 :                 call setSplit(sindex, array, sep, iseq = iseq, instance = instance, keep = keep)
    1965             : #if             CVXK_ENABLED || PVXK_ENABLED
    1966        1200 :                 call setSplit(field, array, sep, iseq = iseq, instance = instance, keep = keep)
    1967             : #endif
    1968       28548 :             elseif (present(iseq) .and. .not. present(instance) .and. .not. present(sorted) .and. .not. present(unique)) then
    1969        1716 :                 call setSplit(sindex, array, sep, iseq = iseq, keep = keep)
    1970             : #if             CVXK_ENABLED || PVXK_ENABLED
    1971         396 :                 call setSplit(field, array, sep, iseq = iseq, keep = keep)
    1972             : #endif
    1973       25116 :             elseif (.not. present(iseq) .and. present(instance) .and. present(sorted) .and. present(unique)) then
    1974        9672 :                 call setSplit(sindex, array, sep, instance = instance, sorted = sorted, unique = unique, keep = keep)
    1975             : #if             CVXK_ENABLED || PVXK_ENABLED
    1976        7008 :                 call setSplit(field, array, sep, instance = instance, sorted = sorted, unique = unique, keep = keep)
    1977             : #endif
    1978       15444 :             elseif (.not. present(iseq) .and. present(instance) .and. present(sorted) .and. .not. present(unique)) then
    1979        6084 :                 call setSplit(sindex, array, sep, instance = instance, sorted = sorted, keep = keep)
    1980             : #if             CVXK_ENABLED || PVXK_ENABLED
    1981        4332 :                 call setSplit(field, array, sep, instance = instance, sorted = sorted, keep = keep)
    1982             : #endif
    1983        9360 :             elseif (.not. present(iseq) .and. present(instance) .and. .not. present(sorted) .and. present(unique)) then
    1984        5772 :                 call setSplit(sindex, array, sep, instance = instance, unique = unique, keep = keep)
    1985             : #if             CVXK_ENABLED || PVXK_ENABLED
    1986        4152 :                 call setSplit(field, array, sep, instance = instance, unique = unique, keep = keep)
    1987             : #endif
    1988        3588 :             elseif (.not. present(iseq) .and. present(instance) .and. .not. present(sorted) .and. .not. present(unique)) then
    1989        1872 :                 call setSplit(sindex, array, sep, instance = instance, keep = keep)
    1990             : #if             CVXK_ENABLED || PVXK_ENABLED
    1991        1200 :                 call setSplit(field, array, sep, instance = instance, keep = keep)
    1992             : #endif
    1993        3432 :             elseif (.not. present(iseq) .and. .not. present(instance) .and. .not. present(sorted) .and. .not. present(unique)) then
    1994        1716 :                 call setSplit(sindex, array, sep, keep = keep)
    1995             : #if             CVXK_ENABLED || PVXK_ENABLED
    1996         396 :                 call setSplit(field, array, sep, keep = keep)
    1997             : #endif
    1998             :             else
    1999             :                 error stop PROCEDURE_NAME//SK_": Unrecognized interface in testing." ! LCOV_EXCL_LINE
    2000             :             end if
    2001             : 
    2002             :             ! Report test results if needed.
    2003             : 
    2004             : #if         CVXK_ENABLED || PVXK_ENABLED
    2005       37200 :             do i = 1, size(field_ref)
    2006       52840 :                 assertion = assertion .and. ALL(field(i)%val IS_EQUAL field_ref(i)%val) ! fpp
    2007             :             end do
    2008             : #endif
    2009      383136 :             assertion = assertion .and. all(sindex == sindex_ref)
    2010       50232 :             if (test%traceable .and. .not. assertion) then
    2011             : 
    2012             :                 ! LCOV_EXCL_START
    2013             :                 write(test%disp%unit,"(*(g0,:,', '))")
    2014             : 
    2015             :                 call disp%show("sep")
    2016             :                 call disp%show( sep )
    2017             :                 call disp%show("array")
    2018             :                 call disp%show( array )
    2019             :                 call disp%show("sindex")
    2020             :                 call disp%show( sindex )
    2021             :                 call disp%show("sindex_ref")
    2022             :                 call disp%show( sindex_ref )
    2023             : #if             CVXK_ENABLED || PVXK_ENABLED
    2024             :                 call disp%show("field")
    2025             :                 call disp%show( field )
    2026             :                 call disp%show("field_ref")
    2027             :                 call disp%show( field_ref )
    2028             : #endif
    2029             :                 write(test%disp%unit,"(*(g0,:,', '))") "present(instance)  ", present(instance)
    2030             :                 write(test%disp%unit,"(*(g0,:,', '))") "present(unique)    ", present(unique)
    2031             :                 write(test%disp%unit,"(*(g0,:,', '))") "present(sorted)    ", present(sorted)
    2032             :                 write(test%disp%unit,"(*(g0,:,', '))") "present(keep)      ", present(keep)
    2033             :                 write(test%disp%unit,"(*(g0,:,', '))") "present(iseq)      ", present(iseq)
    2034             : 
    2035             :                 if (present(instance)) then
    2036             :                 write(test%disp%unit,"(*(g0,:,', '))") "instance           ", instance
    2037             :                 end if
    2038             : 
    2039             :                 if (present(sorted)) then
    2040             :                 write(test%disp%unit,"(*(g0,:,', '))") "sorted             ", sorted
    2041             :                 end if
    2042             : 
    2043             :                 if (present(unique)) then
    2044             :                 write(test%disp%unit,"(*(g0,:,', '))") "unique             ", unique
    2045             :                 end if
    2046             : 
    2047             :                 if (present(keep)) then
    2048             :                 write(test%disp%unit,"(*(g0,:,', '))") "keep               ", keep
    2049             :                 end if
    2050             : 
    2051             :                 write(test%disp%unit,"(*(g0,:,', '))")
    2052             :                 ! LCOV_EXCL_STOP
    2053             : 
    2054             :             end if
    2055             : 
    2056       50232 :         end subroutine
    2057             : 
    2058             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2059             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2060             : 
    2061             : #undef GET_SIZE
    2062             : #undef IS_EQUAL
    2063             : #undef ALL

ParaMonte: Parallel Monte Carlo and Machine Learning Library 
The Computational Data Science Lab
© Copyright 2012 - 2024