[#4341] DRY and embedded docs. — Hugh Sasse Staff Elec Eng <hgs@...>
If I have a here document in some ruby program:
[#4347] Re: DATA and rewind. — ts <decoux@...>
>>>>> "H" == Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
[#4350] Re: Thirty-seven Reasons [Hal Fulton] Love[s] Ruby — "David Douthitt" <DDouthitt@...>
[#4396] Re: New Require (was: RAA development ideas (was: RE: Looking for inp ut on a 'links' page)) — Hugh Sasse Staff Elec Eng <hgs@...>
On 9 Aug 2000, Dave Thomas wrote:
[#4411] Re: RAA development ideas (was: RE: Lookin g for inp ut on a 'links' page) — Aleksi Niemel<aleksi.niemela@...>
Me:
On Thu, 10 Aug 2000, [iso-8859-1] Aleksi Niemelwrote:
[#4465] More RubyUnit questions. — Hugh Sasse Staff Elec Eng <hgs@...>
I am beginning to get a feel for this, but I still have a few more
[#4478] Re: RubyUnit. Warnings to be expected? — ts <decoux@...>
>>>>> "H" == Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
[#4481] Invoking an extension after compilation — Dave Thomas <Dave@...>
Hi,
[#4501] What's the biggest Ruby development? — Dave Thomas <Dave@...>
[#4502] methods w/ ! giving nil — Hugh Sasse Staff Elec Eng <hgs@...>
I have got used to the idea that methods that end in '!' return nil if
[#4503] RubyUnit and encapsulation. — Hugh Sasse Staff Elec Eng <hgs@...>
My_class's instance variables are not all "attr :<name>" type variables,
[#4537] Process.wait bug + fix — Brian Fundakowski Feldman <green@...>
If your system uses the rb_waitpid() codepath of rb_f_wait(),
[#4567] Re: What's the biggest Ruby development? — Aleksi Niemel<aleksi.niemela@...>
Dave said:
Robert Feldt <feldt@ce.chalmers.se> writes:
On Sat, 26 Aug 2000, Dave Thomas wrote:
Robert Feldt <feldt@ce.chalmers.se> writes:
On Mon, 28 Aug 2000, Dave Thomas wrote:
Robert Feldt <feldt@ce.chalmers.se> writes:
[#4591] Can't get Tcl/Tk working — Stephen White <steve@...>
I can't get any of the samples in the ext/tk/sample directory working. All
I'm sure looking forwards to buying the book. :)
Stephen White <steve@deaf.org> writes:
On Sun, 27 Aug 2000, Dave Thomas wrote:
Stephen White <steve@deaf.org> writes:
[#4608] Class methods — Mark Slagell <ms@...>
Reading the thread about regexp matches made me wonder about this:
[#4611] mod_ruby 0.1.19 — shreeve@...2s.org (Steve Shreeve)
Shugo (and others),
[#4633] Printing tables — DaVinci <bombadil@...>
Hi.
[#4647] Function argument lists in parentheses? — Toby Hutton <thutton@...>
Hello,
[#4652] Andy and Dave's European Tour 2000 — Dave Thomas <Dave@...>
Hi,
[#4672] calling super from c — Robert Feldt <feldt@...>
[#4699] Double parenthesis — Klaus Spreckelsen <ks@...1.ruhr-uni-bochum.de>
Why is the first line ok, but the second line is not?
[ruby-talk:04428] Re: Getting started with RubyUnit?
Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
> Has anyone written any English docs on getting started with RubyUnit?
> I expaect there will be lots of information in Dave and Andy's book,
> but in the meantime I cannot find much to give me the basic concepts
> on how to use this. I had a search with Google for information but
> didn't see much.
Sorry - we don't have a chapter on it (umm... maybe we should have)
but it's pretty straightforward.
A basic recipe is:
- require 'runit/testcase' and 'runit/cui/testrunner'
- Write your tests in a separate class which is a subclass of
RUNIT::TestCase.
- write each test (or group of tests) in a method whose name starts
'test_'
- Run the tests with a line like:
RUNIT::CUI::TestRunner.run(<classname>.suite)
where classname is hte name of your testing class.
Within each test, use the 'assert' methods to perform a test:
assert(boolean, [ optional message])
assert_equal(expected, actual [, msg])
assert_equal_float(expected, actual, e, message="")
assert_same(expected, actual, message="") # uses equal?
assert_nil(obj, message="")
assert_not_nil(obj, message="")
assert_respond_to(method, obj, message="")
assert_kind_of(c, obj, message="")
assert_instance_of(c, obj, message="")
assert_match(str, re, message="")
assert_exception(exception, message="") {block}
assert_no_exception(*arg) {block}
Then, you can also write two instance methods to setup the environment
for each test, and to tear it down afterwards (setup and teardown
respectively).
As an example, here's some of the code we use to test class Array:
class TestArray < Rubicon::TestCase
def test_00_new
a = Array.new()
assert_instance_of(Array, a)
assert_equal(0, a.length)
assert_nil(a[0])
end
def test_01_square_brackets
a = Array[ 5, 4, 3, 2, 1 ]
assert_instance_of(Array, a)
assert_equal(5, a.length)
5.times { |i| assert_equal(5-i, a[i]) }
assert_nil(a[6])
end
def test_AND # '&'
assert_equal([1, 3], [ 1, 1, 3, 5 ] & [ 1, 2, 3 ])
assert_equal([], [ 1, 1, 3, 5 ] & [ ])
assert_equal([], [ ] & [ 1, 2, 3 ])
assert_equal([], [ 1, 2, 3 ] & [ 4, 5, 6 ])
end
def test_MUL # '*'
assert_equal([], []*3)
assert_equal([1, 1, 1], [1]*3)
assert_equal([1, 2, 1, 2, 1, 2], [1, 2]*3)
assert_equal([], [1, 2, 3] * 0)
assert_exception(ArgumentError) { [1, 2]*(-3) }
assert_equal('1-2-3-4-5', [1, 2, 3, 4, 5] * '-')
assert_equal('12345', [1, 2, 3, 4, 5] * '')
end
end
(We actually inherit from our own class, Rubicon, which does more
statistics collection than the basic runit. Rubicon--if the code
crosses it, we get to take over the world)
Hope this helps.
Dave