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