Registering User-Defined Functions as Test Object Methods

The two functions below illustrate how you can enhance your Test Object Model by either replacing existing test object methods with new ones or by adding new methods to existing test objects. The following example can be found in the UserDefineFunction.vbs file located in the <Installdir>\CodeSamplesPlus folder.

Function SelectRegExp(Obj, patrn, Button, Offset)
	dim NumOfItems, i, CurrentValue, regEx, ItemToSelect, oldFilter
' Initialize the regular expression object with the pattern
	Set regEx = New RegExp
	regEx.Pattern = patrn
	regEx.IgnoreCase = False

	oldFilter = Reporter.Filter ' save the default setting
	Reporter.Filter = 2 ' Send only errors
	ItemToSelect = -1
	' Retrieve the number of items in the list
	NumOfItems = obj.GetROProperty("items count")
	For i=0 to NumOfItems-1
		CurrentValue = obj.GetItem(i)
		If regEx.Test(CurrentValue) Then
			If (ItemToSelect <> -1) Then
				SelectRegExp = -1 ' item not unique
				Reporter.Filter = oldFilter
				Exit Function
			End If
			ItemToSelect = i
		End If
	Next
	Reporter.Filter = oldFilter ' Restore the default setting
	' The actual selection
	If (ItemToSelect >= 0) Then
		SelectRegExp = obj.Select(ItemToSelect, Button, Offset)
	Else
		SelectRegExp = -1
	End If
End Function

 SelectItems(Obj, items)
	Dim idx, item
	If (StrComp(obj.GetROProperty("type"), "select-multiple", 1) = 0) Then
		For Each item In items
			obj.Select(item)
		Next
	Else
		obj.Select(items(0))
	End If
End Function

' Override the Select function of the WinList object
RegisterUserFunc "WinList", "Select", "SelectRegExp"

' Or add the SelectRegExp function to the WinList object
RegisterUserFunc "WinList", "SelectRegExp", "SelectRegExp"
RegisterUserFunc "WinList", "SelectItems", "SelectItems"

' Example of usage:
WinList("mylist").Select "2002.*"
WinList("mylist").SelectItems Array("item1", "item3", "item6")