1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-10 19:25:12 +00:00
QB64-PE/tests/compile_tests/qb64pe/hasFunctionElement.bas
Matthew Kilgore 90941fffa7 Replace CONSTs while we have the individual elements
This moves the CONST replacement up before we turn the elements into a
single string. The advantage is that we don't have to worry about
splitting the string properly to find the CONST names as the elements
are already split for us.t
2024-01-18 13:00:13 -05:00

86 lines
2.2 KiB
QBasic

Option _Explicit
DEFLNG A-Z
$Console:Only
Dim Debug As Long
Debug = -1
'$include:'../../../source/global/constants.bas'
'$include:'../../../source/utilities/type.bi'
sp = "@" ' Makes the output readable
Type TestCase
args As String
results As String
End Type
Dim tests(6) As TestCase
tests(1).args = "2"
tests(1).results = MKL$(-1) + MKL$(0) + MKL$(0) + MKL$(0)
tests(2).args = "2" + sp + "," + sp + "3"
tests(2).results = MKL$(-1) + MKL$(-1) + MKL$(0) + MKL$(0)
' (2, foo(3, 2) ) - includes two function arguments, with one of them being a function call
tests(3).args = "2" + sp + "," + sp + _
"foo" + sp + "(" + sp + "3" + sp + "," + sp + "2" + sp + ")"
tests(3).results = MKL$(-1) + MKL$(-1) + MKL$(0) + MKL$(0) + MKL$(0)
' Trailing comma at the end of argument list
tests(4).args = "2" + sp + "," + sp + "3" + sp + ","
tests(4).results = MKL$(-1) + MKL$(-1) + MKL$(0) + MKL$(0)
tests(5).args = "2" + sp + "," + sp + "," + sp + "3"
tests(5).results = MKL$(-1) + MKL$(0) + MKL$(-1) + MKL$(0)
tests(6).args = "2" + sp + "," + sp + ","
tests(6).results = MKL$(-1) + MKL$(0) + MKL$(0) + MKL$(0)
ReDim provided(10) As Long, i As Long
For i = 1 To UBOUND(tests)
argStringToArray tests(i).results, provided()
Print "Test"; i; ", Args: "; tests(i).args
Dim k As Long
For k = 1 To UBOUND(provided)
Dim result As Long
result& = hasFunctionElement(tests(i).args, k)
Print " Expected:"; provided(k); ", Actual"; result&;
If provided(k) = result& Then
Print " PASS!"
Else
Print " FAIL!"
End If
Next
Print
Next
System
'$include:'../../../source/utilities/elements.bas'
SUB argStringToArray(argString As String, provided() As Long)
ReDim provided(LEN(argString) / 4) As Long, i As Long
for i = 1 to UBOUND(provided)
provided(i) = CVL(MID$(argString, (i - 1) * 4 + 1, 4))
next
END SUB
FUNCTION argStringPrint$(argString As String)
Dim res As String, i As Long
res$ = ""
res$ = STR$(CVL(MID$(argString, 1, 4)))
For i = 2 To LEN(argString) / 4
res$ = res$ + ", " + STR$(CVL(MID$(argString, (i - 1) * 4 + 1, 4)))
Next I
argStringPrint$ = res$
END FUNCTION