------art_13059_32825444.1144122587653
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

I don't quite understand what is being passed to new

>> dg2 = DiGraph.new([1,2], [2,3])

If I try to pass an array of arrays to new, it doesn't work.
Is there a way to use reflection to figure this out?

On 3/31/06, Ruby Quiz <james / grayproductions.net> wrote:
>
> The three rules of Ruby Quiz:
>
> 1.  Please do not post any solutions or spoiler discussion for this quiz
> until
> 48 hours have passed from the time on this message.
>
> 2.  Support Ruby Quiz by submitting ideas as often as you can:
>
> http://www.rubyquiz.com/
>
> 3.  Enjoy!
>
> Suggestion:  A [QUIZ] in the subject of emails about the problem helps
> everyone
> on Ruby Talk follow the discussion.
>
>
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>
> by Robert Feldt
>
> In this week's Ruby Quiz you will not only have fun and (hopefully) learn
> something; you will also contribute to a research project evaluating
> automated
> testing techniques. So please read on and then take the quiz!
>
> The goal of this quiz is to write a good and extensive test suite for a
> Ruby
> DiGraph (directed graph) class. The new (hotshot, and annoying ;)) quality
> manager at your work has challenged all the developers. He is planning
> major
> cutbacks since he claims that automated testing tools can do as good or
> better a
> job! The focus of the testing is on the following two methods of the
> DiGraph
> class:
>
>         # Return the length of the longest simple path (an arc/edge can
> only
>         # occur once in the path) that includes <node>.
>         DiGraph#max_length_of_simple_path_including_node(node)
>
>         # Returns the strongly connected component (itself a
> DirectedGraph)
>         # that includes <node>.
>         DiGraph#strongly_connected_component_including_node(node)
>
> Any Ruby object can be a node in a graph and you create graphs by giving a
> number of edges. Each edge is an Array with maximum two nodes where the
> first
> node is the source node.
>
> The quiz has two phases: first a black-box phase and then a white-box
> phase. In
> the black-box phase you do not have access to the source code but do your
> testing over the network via drb. When you are satisfied with your tests
> for
> this phase you submit them, get the source code and start the white-box
> phase.
> Now you can extend your test suite given the actual code, fix problems and
> even
> refactor the code as you see fit (as long as you do not change the
> interface).
>
> You need to download the file "rubyquiz73.rb" to participate in the
> distributed
> testing:
>
>         http://rubyquiz.com/rubyquiz73.rb
>
> After downloading and saving that file, here is how you get a reference to
> the
> class under test (CUT):
>
>         require 'test/unit'
>         require 'rubyquiz73'
>
>         # You must insert your email address as <youremail> in this method
> call!
>         DiGraph = RubyQuiz73.class_under_test("<youremail>")
>
>         class TestDiGraph < Test::Unit::TestCase
>           def test_01_digraph_creation
>             dg1 = DiGraph.new
>             assert_kind_of(DiGraph, dg1)
>             assert_equal(0, dg1.size)
>           end
>
>           def test_02_size
>             dg2 = DiGraph.new([1,2], [2,3])
>             assert_equal(3, dg2.size)
>             assert_equal(2, dg2.num_edges)
>           end
>
>           # Add/write your own tests here...
>         end
>
> Note that since we use drb for the distributed testing and we had to make
> some
> performance trade-offs not every assertion or code might work exactly as
> it
> would if run locally. However, most "normal" things will work.
>
> When you consider yourself ready with the blackbox phase of the testing
> you
> should submit your test suite. You do this by issuing the command:
>
>         ruby rubyquiz73.rb submit1 <test_filename.rb>
>
> and giving the path to your test file. The script will get back the source
> code
> for the class being tested and save it. You can now look at the source
> code and
> add tests as you see fit. You can also alter and refactor the source code
> as
> long as you do not change the interface. When you are done with this,
> whitebox
> phase, you submit your test file and source file like so (you can add
> additional
> files if you have split your tests over several files):
>
>         ruby rubyquiz73.rb submit2 <test_filename.rb> <src_filename.rb>
>
> [Editor's Note:  Please also send in your tests to Ruby Talk, after the
> spoiler
> period, for use in the summary.  --JEG2]
>
> You can also get some help information by issuing:
>
>         ruby rubyquiz73.rb help
>
> You are encouraged to briefly document (in comments or by other means) how
> and
> why you arrived at and included the test cases you've chosen and why you
> think
> your tests are thorough. You are also encouraged to add tests for
> additional
> methods of the DiGraph class as you see fit. Note that the devious Quality
> Manager has not eliminated all problems with the given code so you are
> expected
> to find problems/faults!
>
> If the specifications in the RDoc comments above are not complete enough
> then
> please make additional, sound assumptions and make them clear in your
> tests /
> documentation.
>
>
> http://www.cs.odu.edu/~toida/nerzic/content/digraph/definition.html
>
>         http://www.nist.gov/dads/HTML/stronglyConnectedCompo.html
>
>

------art_13059_32825444.1144122587653--