Forum Discussion
rkarger
14 years agoOccasional Contributor
Not sure how to separate my code, sorry.
My object structure was a class called Test which holds an array of checkpoint objects which each hold a trigger object. The trigger object is different based on the type of input it gets so I need to add methods to the object based on what type it is. When any Run"Type"Trigger method is called it logs ""Type" Trigger Running" and every time this code ran I would get a log saying something like:
Adding Method
Running Digital Trigger
Calling Trigger's Method
Running Digital Trigger
I hoped after I discovered the problem that I could just get the returned results from the function that was called through AddMethod but it did not give me the output, instead I got what I expected which was the method object. The problem with that is that I need to call the function only once and if it runs without giving me the output my test doesn't run properly. I've since worked around it but I hope this helps you replicate and solve this issue.
VBScript:
Function RunTrigger
If This.type = "click" Then
Log.Message "Adding Method"
Call This.AddMethod("RunClickTrigger", MainUnit.RunClickTrigger")
Log.Message "Calling Trigger's Method"
RunTrigger = This.RunClickTrigger
ElseIf This.type = "drag" Then
Log.Message "Adding Method"
Call This.AddMethod("RunDragTrigger", MainUnit.RunDragTrigger")
Log.Message "Calling Trigger's Method"
RunTrigger = This.RunDragTrigger
ElseIf This.type = "digital" Then
Log.Message "Adding Method"
Call This.AddMethod("RunDigitalTrigger", MainUnit.RunDigitalTrigger")
Log.Message "Calling Trigger's Method"
RunTrigger = This.RunDigitalTrigger
ElseIf This.type = "analog" Then
Log.Message "Adding Method"
Call This.AddMethod("RunAnalogTrigger", MainUnit.RunAnalogTrigger")
Log.Message "Calling Trigger's Method"
RunTrigger = This.RunAnalogTrigger
ElseIf This.type = "serial" Then
Log.Message "Adding Method"
Call This.AddMethod("RunSerialTrigger", MainUnit.RunSerialTrigger")
Log.Message "Calling Trigger's Method"
RunTrigger = This.RunSerialTrigger
ElseIf This.type = "wait" Then
Log.Message "Adding Method"
Call This.AddMethod("RunWaitTrigger", MainUnit.RunWaitTrigger")
Log.Message "Calling Trigger's Method"
RunTrigger = This.RunWaitTrigger
'If the type value is not one of the specified types, log it
Else
Log.Message "Unknown Trigger Type"
Log.Message This.type
End If
End Function
My object structure was a class called Test which holds an array of checkpoint objects which each hold a trigger object. The trigger object is different based on the type of input it gets so I need to add methods to the object based on what type it is. When any Run"Type"Trigger method is called it logs ""Type" Trigger Running" and every time this code ran I would get a log saying something like:
Adding Method
Running Digital Trigger
Calling Trigger's Method
Running Digital Trigger
I hoped after I discovered the problem that I could just get the returned results from the function that was called through AddMethod but it did not give me the output, instead I got what I expected which was the method object. The problem with that is that I need to call the function only once and if it runs without giving me the output my test doesn't run properly. I've since worked around it but I hope this helps you replicate and solve this issue.
VBScript:
Function RunTrigger
If This.type = "click" Then
Log.Message "Adding Method"
Call This.AddMethod("RunClickTrigger", MainUnit.RunClickTrigger")
Log.Message "Calling Trigger's Method"
RunTrigger = This.RunClickTrigger
ElseIf This.type = "drag" Then
Log.Message "Adding Method"
Call This.AddMethod("RunDragTrigger", MainUnit.RunDragTrigger")
Log.Message "Calling Trigger's Method"
RunTrigger = This.RunDragTrigger
ElseIf This.type = "digital" Then
Log.Message "Adding Method"
Call This.AddMethod("RunDigitalTrigger", MainUnit.RunDigitalTrigger")
Log.Message "Calling Trigger's Method"
RunTrigger = This.RunDigitalTrigger
ElseIf This.type = "analog" Then
Log.Message "Adding Method"
Call This.AddMethod("RunAnalogTrigger", MainUnit.RunAnalogTrigger")
Log.Message "Calling Trigger's Method"
RunTrigger = This.RunAnalogTrigger
ElseIf This.type = "serial" Then
Log.Message "Adding Method"
Call This.AddMethod("RunSerialTrigger", MainUnit.RunSerialTrigger")
Log.Message "Calling Trigger's Method"
RunTrigger = This.RunSerialTrigger
ElseIf This.type = "wait" Then
Log.Message "Adding Method"
Call This.AddMethod("RunWaitTrigger", MainUnit.RunWaitTrigger")
Log.Message "Calling Trigger's Method"
RunTrigger = This.RunWaitTrigger
'If the type value is not one of the specified types, log it
Else
Log.Message "Unknown Trigger Type"
Log.Message This.type
End If
End Function