------art_16505_12739112.1168511574974
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi,

No, you didn't tell me things I already know :) Thanks a LOT for your
help...

I temporarily got around my troubles by creating a ruby file with the
functions I needed to be run, 'load'ed the file into the .rb file that
contains the Test::Unit::TestCase class, and ran it from there.

This worked for me, but your solution appears to be more elegant - I'll be
switching to the 'send' way of doing things.

Thanks again!

Kp.

On 1/11/07, Pit Capitain <pit / capitain.de> wrote:
>
> Kp schrieb:
> > Yes, the 'functions' I'm talking about are not the functions that will
> > automatically be executed, and their names don't start with 'test...'.
> >
> > But since they are within the Test::Unit:TestCase class, they have
> > access to
> > methods such as 'assert' etc.
> >
> > What I need is a way to access and run these functions from an external
> > program (a different .rb file). I don't want these functions to be run
> > automatically as unit-testing tests, as I'm using them to test
> > functionality
> > of a web-based app using the Selenium-RC tool.
> >
> > Hope I was clearer here... much thanks for your reply.
>
> Kp, why do you put your methods in a subclass of Test::Unit::TestCase?
> If all you need are the assertion methods you can do something like this:
>
>    require "test/unit/assertions"
>
>    class C
>      include Test::Unit::Assertions
>      def check_successor a, b
>        assert_equal a, b.succ
>      end
>    end
>
>    c  .new
>    c.check_successor 2, 1
>    c.check_successor 3, 1 rescue puts $!
>
>    # <3> expected but was
>    # <2>.
>
> This way the automatic test runner of test/unit isn't run.
>
> If you have problems calling those methods "from an external program",
> maybe you should look at the #send method. Continuing the code above:
>
>    methods_to_run_with_args  
>      [ "check_successor", "b", "a" ],
>      [ "check_successor", "c", "a" ],
>      [ "check_successor", 3, 2 ],
>      [ "check_successor", 4, 2 ],
>    ]
>
>    methods_to_run_with_args.each do |name, *args|
>      begin
>        print "running #{name} with #{args.inspect}: "
>        c.send name, *args                            # <<< here is c.send
>      rescue Test::Unit::AssertionFailedError
>        puts "failed"
>      rescue Exception
>        puts "error"
>      else
>        puts "ok"
>      end
>    end
>
>    # running check_successor with ["b", "a"]: ok
>    # running check_successor with ["c", "a"]: failed
>    # running check_successor with [3, 2]: ok
>    # running check_successor with [4, 2]: failed
>
> Sorry if I told you things you already know. Feel free to ask again if
> this doesn't answer your question.
>
> Regards,
> Pit
>
>


-- 
"I refuse to prove that I exist," says God, "for proof denies faith, and
without faith I am nothing."
"But," says Man, "the Babel fish is a dead giveaway isn't it? It could not
have evolved by chance. It proves that you exist, and so therefore, by your
own arguments, you don't. Q.E.D."
"Oh dear," says God, "I hadn't thought of that," and promptly vanishes in a
puff of logic.
"Oh, that was easy," says Man, and for an encore goes on to prove that black
is white and gets himself killed on the next zebra crossing.

------art_16505_12739112.1168511574974--