'
' This file is part of the LibreOffice project.
'
' This Source Code Form is subject to the terms of the Mozilla Public
' License, v. 2.0. If a copy of the MPL was not distributed with this
' file, You can obtain one at http://mozilla.org/MPL/2.0/.
'

Option Explicit

Dim int16 As Integer,   int32 As Long,    flt32 As Single, flt64 As Double, _
    curr  As Currency,  dat   As Date,    str   As String,                  _
    myErr As Variant,   var   As Variant, byt3  As Byte,   bool  As Boolean

Dim int_%, long_&, single_!, double_#, currency_@, string_$, array_

Function doUnitTest
    ' TypeLen()

    dat = #02/17/2012# : myErr = CVErr("errMsg")
    assert( TypeLen(int16) = 2 , "TypeLen(int16) is not 2")
    assert( TypeLen(int32) = 4 , "TypeLen(int32) is not 4")
    assert( TypeLen(flt32) = 4 , "TypeLen(flt32) is not 4" )
    assert( TypeLen(flt64) = 8 , "TypeLen(flt64) is not 8" )
    assert( TypeLen(curr)  = 8 , "TypeLen(curr) is not 8" )
    assert( TypeLen(dat)   = 8 , "TypeLen(dat) is not 8" )
    assert( TypeLen(str)   = 0 , "TypeLen(str) is not 0" ) ' when empty
    assert( TypeLen(myErr) = 2 , "TypeLen(myErr) is not 2" )
    assert( TypeLen(bool)  = 1 , "TypeLen(bool) is not 1" )
    assert( TypeLen(var)   = 0 , "TypeLen(var) is not 0" ) ' when empty
    assert( TypeLen(byt3)  = 1 , "TypeLen(byt3) is not 1" )

    assert( TypeLen(int_)      = 2 , "TypeLen(int_) is not 2" )
    assert( TypeLen(long_)     = 4 , "TypeLen(long_) is not 4" )
    assert( TypeLen(single_)   = 4 , "TypeLen(single_) is not 4" )
    assert( TypeLen(double_)   = 8 , "TypeLen(double_) is not 8" )
    assert( TypeLen(currency_) = 8 , "TypeLen(currency_) is not 8" )
    assert( TypeLen(string_)   = 0 , "TypeLen(string_) is not 0" )

    If FailedAssertion Then
        doUnitTest = "test_typelen_method.vb fails" + messages
        Exit Function
    EndIf
    doUnitTest = "OK" ' All checks passed
End Function

Sub DEV_TEST
    MsgBox doUnitTest
End Sub

Dim failedAssertion As Boolean, messages As String

Sub assert(expression As Boolean, errMessage As String)
    If ( Not expression ) Then
       messages = messages + Chr(10) + ErrMessage
       failedAssertion = True
    EndIf
End Sub
