Function UnitTest( _
) As Integer
' Find units which cannot be parsed by the conversion program.
Const strFn = "UnitTest"
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.
UnitTest = True
InitializeMaybe
Dim lngCurUnit As Long
For lngCurUnit = 1 To GetUnitCount
If estBE.TrueEveryNSeconds(30) Then
Debug.Print strFn & ": Info: checking unit #" & lngCurUnit & " of " & GetUnitCount & " " & Time
End If
Dim strUniCode As String
Dim strUniCodeStr As String
Dim strUniName As String
Dim dblUniConst As Double
Dim strUniDef As String
Dim strUniDefPar As String
Dim strUniCat As String
If Not GetUnit(lngCurUnit, strUniCode, strUniCodeStr, strUniName, dblUniConst, strUniDef, strUniDefPar, strUniCat) Then
UnitTest = False
Exit Function
End If
' Try parsing the unit code itself.
Dim strUnitCode As String
strUnitCode = strUniCode
Dim varRtn As Variant
varRtn = ConvertMeasure(1, strUnitCode, "")
If IsNull(varRtn) Or InStr(1, varRtn, ":", vbBinaryCompare) <> 0 Then
Debug.Print strFn & ": Error: error parsing " & strUnitCode & "; definition: " & dblUniConst & " " & strUniDef & "; result: " & varRtn
UnitTest = False
End If
' See if the Category specified for the current unit names a Category which was previously unknown within the
' units table--developer should consider creating a separate Category-type unit definition for the category.
strUnitCode = strUniCode
varRtn = FindCategory(strUnitCode)
If StrComp(varRtn, "unknown", vbTextCompare) = 0 Or InStr(1, varRtn, "reciprocal of ", vbTextCompare) = 1 Then
If StrComp(strUniCat, "unknown", vbTextCompare) <> 0 Then
Debug.Print strFn & ": Error: unknown category unit " & strUnitCode & "; definition: " & dblUniConst & " " & strUniDef & "; result: " & varRtn
UnitTest = False
End If
End If
' Find cases where the user-specified Category does not match the actual/calculated Category.
If StrComp(strUniCat, varRtn, vbTextCompare) <> 0 Then
' This is just a warning, not a fatal error.
Debug.Print strFn & ": Warning: unit " & strUnitCode & "; user-specified category: " & strUniCat & "; calculated category: " & varRtn
End If
' Try parsing the randomly-capitalized version of the unit code.
strUnitCode = estSE.RandomCapitalize(strUniCode)
varRtn = ConvertMeasure(1, strUnitCode, "")
If IsNull(varRtn) Or InStr(1, varRtn, ":", vbBinaryCompare) <> 0 Then
Debug.Print strFn & ": Error: error parsing randomly capitalized " & strUnitCode & "; definition: " & dblUniConst & " " & strUniDef & "; result: " & varRtn
UnitTest = False
End If
Next lngCurUnit
Debug.Print strFn & ": Info: End " & Time
End FunctionCopyright 1996-1999 Entisoft
Entisoft Tools is a trademark of Entisoft.