diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-14 23:36:45 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-14 23:36:45 +0000 |
commit | 8bf66da9df5c0798a7305be9bf82e0e6859235f6 (patch) | |
tree | 0195b446819ac0b2cbb9644f197a78db91207f8e /test/test_tsort.rb | |
parent | 70a5ace096104a2bd31db85ac191acd3479434b4 (diff) | |
download | ruby-8bf66da9df5c0798a7305be9bf82e0e6859235f6.tar.gz ruby-8bf66da9df5c0798a7305be9bf82e0e6859235f6.tar.xz ruby-8bf66da9df5c0798a7305be9bf82e0e6859235f6.zip |
* test/test_pp.rb: extract from lib/pp.rb.
* test/test_prettyprint.rb: extract from lib/prettyprint.rb.
* test/test_tsort.rb: extract from lib/tsort.rb.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22321 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/test_tsort.rb')
-rw-r--r-- | test/test_tsort.rb | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/test/test_tsort.rb b/test/test_tsort.rb index 981fedd98..38018c49c 100644 --- a/test/test_tsort.rb +++ b/test/test_tsort.rb @@ -1,4 +1,44 @@ -require 'pathname' -require Pathname.new(__FILE__).dirname.join('inlinetest.rb') -target = __FILE__[/test_(.*\.rb)$/, 1] -InlineTest.loadtest(target) +require 'tsort' +require 'test/unit' + +class TSortHash < Hash # :nodoc: + include TSort + alias tsort_each_node each_key + def tsort_each_child(node, &block) + fetch(node).each(&block) + end +end + +class TSortArray < Array # :nodoc: + include TSort + alias tsort_each_node each_index + def tsort_each_child(node, &block) + fetch(node).each(&block) + end +end + +class TSortTest < Test::Unit::TestCase # :nodoc: + def test_dag + h = TSortHash[{1=>[2, 3], 2=>[3], 3=>[]}] + assert_equal([3, 2, 1], h.tsort) + assert_equal([[3], [2], [1]], h.strongly_connected_components) + end + + def test_cycle + h = TSortHash[{1=>[2], 2=>[3, 4], 3=>[2], 4=>[]}] + assert_equal([[4], [2, 3], [1]], + h.strongly_connected_components.map {|nodes| nodes.sort}) + assert_raise(TSort::Cyclic) { h.tsort } + end + + def test_array + a = TSortArray[[1], [0], [0], [2]] + assert_equal([[0, 1], [2], [3]], + a.strongly_connected_components.map {|nodes| nodes.sort}) + + a = TSortArray[[], [0]] + assert_equal([[0], [1]], + a.strongly_connected_components.map {|nodes| nodes.sort}) + end +end + |