Automation Beyond

Testing and Test Automation for Software Quality Assurance. Above Requirements. Beyond Expectations. Methodologies and concepts. Framework Design. Programming and Scripting. Created by Albert Gareev.

Implementing optional and default parameters (QTP, VBScript)

Posted by Albert Gareev on 2009/05/24

Original date: 16 Dec 2008, 1:14pm

Service function

Public Function AssociateParameters(ByVal strParams)
 Dim objDictionary, Values, strPair, Pair
 Dim intCount, i
 
 strParams = Replace(strParams, "\,", Chr(176))
 strParams = Replace(strParams, "\=", Chr(187))

 Values  = Split(strParams, ",")
 intCount = UBound(Values)
 Set objDictionary = CreateObject("Scripting.Dictionary")

 For i=0 To intCount
  strPair = Trim(Values(i))
  Pair = Split(strPair, "=")
  If UBound(Pair) = 1 Then
   If Not objDictionary.Exists(Trim(Pair(0))) Then
    objDictionary.Add Trim(Pair(0)), Replace(Replace(Trim(Pair(1)), Chr(176), ","), Chr(187), "=")
   Else 
    objDictionary.Item(Trim(Pair(0))) = Replace(Replace(Trim(Pair(1)), Chr(176), ","), Chr(187), "=")
   End If
  End If
 Next
 
 Set AssociateParameters =  objDictionary
End Function

 

Implementation

Public Function SetWindow(ByRef objWin, ByVal objParameter)
Dim boolRC
Dim sTypeName
Dim intSync, boolSync
Dim sWinState, intX, intY

'Verify parameters
sTypeName = TypeName (objParameter)
If sTypeName <> "Dictionary"  Then
Set objParameter = CreateObject("Scripting.Dictionary")
End If

'--First optional parameter--
'Sync
If objParameter.Exists("p.sync") Then
   boolSync = TRUE
   intSync = CInt(objParameter.Item("p.sync"))
   If intSync <= 0 Then
      intSync = 300
   End If
Else
   boolSync = FALSE
End If

If boolSync Then
   objWin.WaitProperty "enabled", 1, intSync
End If

boolRC = objWin.Exist(0)
If Not boolRC Then
   SetWindow = FALSE
   Exit Function
End If

'Retrieve arguments
sWinState = UCase(objParameter.Item("state"))
'--HERE WE'RE DEFAULTING--
If sWinState = "" Then
   sWinState = "FOCUS"
End If

Select Case UCase(sWinState)
   Case "FOCUS"
      objWin.Activate
   Case "MIN"
      objWin.Minimize
   Case "MAX"
      objWin.Maximize
      objWin.Activate
   Case "RESTORE"
      objWin.Restore
      objWin.Activate
   Case "RESIZE"
      '--More optional parameters--
      intX = CInt(objParameter.Item("p.width"))
      intY = CInt(objParameter.Item("p.height"))
      objWin.Resize intX, intY
      objWin.Activate
   Case "MOVE"
      '--More optional parameters--
      intX = CInt(objParameter.Item("p.x"))
      intY = CInt(objParameter.Item("p.y"))
      objWin.Move intX, intY
      objWin.Activate
   Case Else
      objWin.Activate
End Select

SetWindow = TRUE
End Function

Examples


'Just verify the window exists and set focus on
boolRC = SetWindow(Window("Test Window"), Nothing)

'Verify the window exists and maximize
boolRC = SetWindow(Window("Test Window"), AssociateParameters("state = MAX"))

'Verify the window exists and move
boolRC = SetWindow(Window("Test Window"), AssociateParameters("state = MOVE, p.x = 10, p.y = 10"))

PS. Later on I published an article describing this approach and how to use function overloading in VBScript.

2 Responses to “Implementing optional and default parameters (QTP, VBScript)”

  1. [...] Implementing optional and default parameters [...]

  2. [...] objParameter – Dictionary object containing optional parameters [...]

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>