mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-09-04 11:10:15 +00:00
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
157 lines
3.8 KiB
QBasic
157 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
|