1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-08-05 06:30:25 +00:00
QB64-PE/tests/compile_tests/qb64pe/element.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

158 lines
3.8 KiB
QBasic

Option _Explicit
DEFLNG A-Z
$Console:Only
Dim Debug As Long
'$include:'../../../source/global/constants.bas'
'$include:'../../../source/utilities/type.bi'
sp = "@" ' Makes the output readable
Type TestCase
format As String
providedArgs As String
result As Long
firstOptional As Long
End Type
Dim tests(18) As TestCase
tests(1).format = "?[?]"
tests(1).providedArgs = MKL$(-1)
tests(1).result = -1
tests(1).firstOptional = 2
tests(2).format = "?[?]"
tests(2).providedArgs = MKL$(-1) + MKL$(-1)
tests(2).result = -1
tests(2).firstOptional = 2
tests(3).format = "?[?]"
tests(3).providedArgs = MKL$(0) + MKL$(-1)
tests(3).result = 0
tests(3).firstOptional = 2
tests(4).format = "?[??]"
tests(4).providedArgs = MKL$(0) + MKL$(-1)
tests(4).result = 0
tests(4).firstOptional = 2
tests(5).format = "?[??]"
tests(5).providedArgs = MKL$(0) + MKL$(-1) + MKL$(-1)
tests(5).result = 0
tests(5).firstOptional = 2
tests(6).format = "?[??]"
tests(6).providedArgs = MKL$(-1) + MKL$(-1) + MKL$(-1)
tests(6).result = -1
tests(6).firstOptional = 2
tests(7).format = "?[??]"
tests(7).providedArgs = MKL$(-1) + MKL$(0) + MKL$(0)
tests(7).result = -1
tests(7).firstOptional = 2
tests(8).format = "?[??]"
tests(8).providedArgs = MKL$(-1)
tests(8).result = -1
tests(8).firstOptional = 2
tests(9).format = "?[?[?]]"
tests(9).providedArgs = MKL$(-1)
tests(9).result = -1
tests(9).firstOptional = 2
tests(10).format = "?[?[?]]"
tests(10).providedArgs = MKL$(-1) + MKL$(-1) + MKL$(0)
tests(10).result = -1
tests(10).firstOptional = 2
tests(11).format = "?[?[?]]"
tests(11).providedArgs = MKL$(-1) + MKL$(-1) + MKL$(-1)
tests(11).result = -1
tests(11).firstOptional = 2
tests(12).format = "?[?[?]]"
tests(12).providedArgs = MKL$(-1) + MKL$(0) + MKL$(-1)
tests(12).result = 0
tests(12).firstOptional = 2
tests(13).format = "?[[?][?]]"
tests(13).providedArgs = MKL$(-1) + MKL$(0) + MKL$(-1)
tests(13).result = -1
tests(13).firstOptional = 2
tests(14).format = "[?][??]"
tests(14).providedArgs = MKL$(0) + MKL$(-1) + MKL$(-1)
tests(14).result = -1
tests(14).firstOptional = 1
tests(15).format = "?"
tests(15).providedArgs = MKL$(0) + MKL$(-1) + MKL$(-1)
tests(15).result = 0
tests(15).firstOptional = 0
tests(16).format = "?"
tests(16).providedArgs = ""
tests(16).result = 0
tests(16).firstOptional = 0
tests(17).format = "?[?]"
tests(17).providedArgs = ""
tests(17).result = 0
tests(17).firstOptional = 2
tests(18).format = "???[?]"
tests(18).providedArgs = MKL$(-1) + MKL$(-1) + MKL$(-1) + MKL$(-1)
tests(18).result = -1
tests(18).firstOptional = 4
ReDim provided(10) As Long
Dim i As Long
For i = 1 To UBOUND(tests)
Dim firstOpt As Long, result As Long
firstOpt& = 0
argStringToArray tests(i).providedArgs, provided()
result& = isValidArgSet(tests(i).format, provided(), firstOpt&)
Print "Test"; i; ", Format: "; tests(i).format; ", Args: "; argStringPrint$(tests(i).providedArgs)
Print " Expected:"; tests(i).result; ", Actual"; result&
Print " firstOpt:"; tests(i).firstOptional; ", Actual"; firstOpt&
If tests(i).result = result& And tests(i).firstOptional = firstOpt& Then
Print " PASS!"
Else
Print " FAIL!"
End If
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$ = ""
If argString = "" Then argStringPrint$ = "": Exit Function
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