Forum Discussion

paul_nardell's avatar
paul_nardell
New Contributor
15 years ago

TestComplete Evaluate Statement function equivalent

Does TestComplete have an Evaluate function equivalent?



What I'm trying to do is build a string then execute it as a function call.



So for example, if I have a function called "Start_Application" which takes two parameters, path and mode, I've built a string that looks like this



FunctionCall = "Start_Application" & "(" & Path & "," & Mode & ")"



Then I want to run:

 

Set Err = Evaluate(FunctionCall) which would be the equivalent of doing Set Err = Start_Application("C:\Test.exe",0)



Is there a way to do this?
  • tristaanogre's avatar
    tristaanogre
    Esteemed Contributor
    Yes, TestComplete has an evaluate function.  In fact, I use it frequently.  My code example below is DelphiScript but it should give you an idea of the capability.





            Document := Sys.OleObject(XML_DOM_OBJECT);

            Document.Load(BaselineDirectory + EVENT_TICKET_HOLD_BASELINE + VarToStr(Self.MessageID) + '.xml');

            Log.Message(BaselineDirectory + EVENT_TICKET_HOLD_BASELINE + VarToStr(Self.MessageID) + '.xml loaded.');

            //Create object for result

            Log.Message('Attempting to create XML node: ' + MESSAGE_EVENT_TICKET_HOLD + VarToStr(Self.MessageID));

            XML.CreateXML(MESSAGE_EVENT_TICKET_HOLD + VarToStr(Self.MessageID), Document);

            //Compare! Easy peasy.

            Comparison := Evaluate('XML.' + MESSAGE_EVENT_TICKET_HOLD + VarToStr(Self.MessageID));

            Comparison.Options.IgnoreNodeOrder := True;

            Comparison.Compare(Response.DOMObject);





    Now, I don't think you can use Evaluate to evaluate a function, only an object.  However, if you want do do a function call, you can do something like this.





            Result := ODT.Classes.New('eGalaxyMessage');

            Result := Runner.CallMethod('ODT' + aMessageType + 'Message.AddObjectSpecificProperties', Result);





    Hope this helps!



    P.S. Hi, gang!  I'm back... been away too long...
  • Hi,



    Use the Eval or Execute function to do this. These functions are standard VBScript functions.

    In general, TC doesn't have a special function for this, but you can use native functions of the scripting language you are using.



    Jared