<-- Previous || Up || Next -->

Prefix Test Function
Units Class

Function PrefixTest() As Integer
    ' Find prefixes and combinations of prefixes and units which cannot be parsed by the conversion program.

    Const strFn = "PrefixTest"
    Debug.Print strFn & ": Info: Begin " & Time

    '' Assume that the definitions are valid; will reset return value to False when
    '' and if errors are found in the definitions.
    PrefixTest = True

    InitializeMaybe

    Dim lngCurPre As Long
    For lngCurPre = 1 To GetPrefixCount
        If estBE.TrueEveryNSeconds(30) Then
            Debug.Print strFn & ": Info: checking prefix #" & lngCurPre & " of " & GetPrefixCount & " " & Time
        End If

        Dim strPreCode As String
        Dim strPreCodeStr As String
        Dim strPreName As String
        Dim dblPreExp As Double

        Dim dblCurExp As Double
        If Not GetPrefix(lngCurPre, strPreCode, strPreCodeStr, strPreName, dblPreExp) Then
            PrefixTest = False
            Exit Function
        End If

        '' Try parsing the prefix code itself.
        Dim varRtn As Variant
        varRtn = ConvertMeasure(1, strPreCode, "")
        If IsNull(varRtn) Or InStr(1, varRtn, ":", vbBinaryCompare) <> 0 Then
            Debug.Print strFn & ": Error: error parsing " & strPreCode & "; definition: " & dblPreExp & "; result: " & varRtn
            PrefixTest = False
        End If

        '' Try parsing the randomly-capitalized version of the prefix code.
        Dim strPrefixCode As String
        strPrefixCode = estSE.RandomCapitalize(strPreCode)
        varRtn = ConvertMeasure(1, strPrefixCode, "")
        If IsNull(varRtn) Or InStr(1, varRtn, ":", vbBinaryCompare) <> 0 Then
            Debug.Print strFn & ": Error: error parsing randomly capitalized " & strPrefixCode & "; definition: " & dblPreExp & "; result: " & varRtn
            PrefixTest = False
        End If

        '' When unit definitions have been loaded, parse the combination of the current prefix with a ramdomly chosen unit.
        If GetUnitCount > 0 Then
            Dim lngRand As Long
            lngRand = estRV.RandomLongWithinRangeFast(1, GetUnitCount)
    
            Dim strCurCode As String
            If Not GetUnit(lngRand, strCurCode) Then
                PrefixTest = False
                Exit Function
            End If

            strPrefixCode = strPreCode + strCurCode
            varRtn = ConvertMeasure(1, strPrefixCode, "")
            If IsNull(varRtn) Or InStr(1, varRtn, ":", vbBinaryCompare) <> 0 Then
                Debug.Print strFn & ": Error: error parsing prefix and random unit " & strPrefixCode & "; result: " & varRtn
                PrefixTest = False
            End If
        End If
    Next lngCurPre

    Debug.Print strFn & ": Info: End " & Time
End Function

Copyright 1996-1999 Entisoft
Entisoft Tools is a trademark of Entisoft.