Public Function IsGoodSliceLng() As Boolean
' verify correct SliceLng returns
' returns True if all tests are passed
  Dim fFailed As Boolean
  
  ' replace "SliceLng03" with the name of your function to test
  
  Dim alSrc() As Long
  Dim alTrg() As Long
  Dim lStart As Long, lCount As Long, fExclude As Boolean
  Dim fRet As Boolean

  ' unbound src
  fRet = SliceLng03(alSrc(), alTrg())
  If fRet = True Then Stop: fFailed = True
  If JoinLng(alTrg()) <> "" Then Stop: fFailed = True

  ' [0,1,2]
  ReDim alSrc(2)
  alSrc(0) = 0: alSrc(1) = 1: alSrc(2) = 2
  
  ' all defaults => ret src
  fRet = SliceLng03(alSrc(), alTrg())
  If JoinLng(alTrg()) <> "0,1,2" Then Stop: fFailed = True
  
  ' exclude false --------------------------------------------------------
  fExclude = False
  
  ' count < 0, exclude false => ret start to ubound
  fRet = SliceLng03(alSrc(), alTrg(), 1, -1, fExclude)
  If JoinLng(alTrg()) <> "1,2" Then Stop: fFailed = True
  
  ' count = 0, exclude false => ret empty
  fRet = SliceLng03(alSrc(), alTrg(), 1, 0, fExclude)
  If fRet = True Then Stop: fFailed = True
  If JoinLng(alTrg()) <> "" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), -1, 1, fExclude)
  If JoinLng(alTrg()) <> "0" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), 1, 1, fExclude)
  If JoinLng(alTrg()) <> "1" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), 1, 2, fExclude)
  If JoinLng(alTrg()) <> "1,2" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), 1, 3, fExclude)
  If JoinLng(alTrg()) <> "1,2" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), 0, 2, fExclude)
  If JoinLng(alTrg()) <> "0,1" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), 0, 3, fExclude)
  If JoinLng(alTrg()) <> "0,1,2" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), 2, , fExclude)
  If JoinLng(alTrg()) <> "2" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), 3, , fExclude)
  If fRet = True Then Stop: fFailed = True
  If JoinLng(alTrg()) <> "" Then Stop: fFailed = True
 
  ' exclude true --------------------------------------------------------
  fExclude = True
  
  ' count < 0, exclude true => ret exclusion of (start to ubound)
  fRet = SliceLng03(alSrc(), alTrg(), 1, -1, fExclude)
  If JoinLng(alTrg()) <> "0" Then Stop: fFailed = True
  
  ' count = 0, exclude true => ret src
  fRet = SliceLng03(alSrc(), alTrg(), 1, 0, fExclude)
  If JoinLng(alTrg()) <> "0,1,2" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), -1, 1, fExclude)
  If JoinLng(alTrg()) <> "1,2" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), 1, 1, fExclude)
  If JoinLng(alTrg()) <> "0,2" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), 1, 2, fExclude)
  If JoinLng(alTrg()) <> "0" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), 1, 3, fExclude)
  If JoinLng(alTrg()) <> "0" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), 0, 2, fExclude)
  If JoinLng(alTrg()) <> "2" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), 0, 3, fExclude)
  If fRet = True Then Stop: fFailed = True
  If JoinLng(alTrg()) <> "" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), 2, , fExclude)
  If JoinLng(alTrg()) <> "0,1" Then Stop: fFailed = True
  
  fRet = SliceLng03(alSrc(), alTrg(), 3, , fExclude)
  If JoinLng(alTrg()) <> "0,1,2" Then Stop: fFailed = True
 
  ' well done
  IsGoodSliceLng = Not fFailed

End Function

Public Property Get JoinLng(alLong() As Long, Optional Delimiter As String = ",") As String
' by Don, 20011111
  On Error GoTo hell
  Dim i As Long
  For i = LBound(alLong) To UBound(alLong) - 1
    JoinLng = JoinLng & (alLong(i) & Delimiter)
  Next
  JoinLng = JoinLng & alLong(UBound(alLong))
hell:
End Property


Back to SliceLng