home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ruby164.zip / rbemx164.zip / ruby / share / doc / rdtool-0.6.10 / test / test-reference-resolver.rb < prev    next >
Text File  |  2001-06-03  |  7KB  |  209 lines

  1. require 'runit/testcase'
  2. require 'runit/cui/testrunner'
  3. require 'runit/topublic'
  4.  
  5. require 'test/temp-dir'
  6.  
  7. require 'rd/reference-resolver'
  8. require 'rd/tree'
  9. require 'rd/rd-struct'
  10.  
  11. include RD
  12.  
  13. class TestReferenceResolver < RUNIT::TestCase
  14.   def setup
  15.     @tr_head1 = Tree.new_with_document_struct(DocumentStructure::RD)
  16.     @de_head1 = DocumentElement.new
  17.     @tr_head1.root = @de_head1
  18.  
  19.     hl_head1 = nil
  20.     se_head1 = nil
  21.     @de_head1.build do
  22.       hl_head1 = new Headline, 1 do
  23.     se_head1 = new StringElement, "label"
  24.       end
  25.     end
  26.     @hl_head1 = hl_head1
  27.     @se_head1 = se_head1
  28.  
  29.     @tr_head2 = Tree.new_with_document_struct(DocumentStructure::RD)
  30.     @de_head2 = DocumentElement.new
  31.     @tr_head2.root = @de_head2
  32.     hl1_head2, hl2_head2 = nil
  33.  
  34.     @de_head2.build do
  35.       hl1_head2 = new Headline, 1 do
  36.     new StringElement, "label1"
  37.       end
  38.       new TextBlock
  39.       hl2_head2 = new Headline, 2 do
  40.     new StringElement, "label2"
  41.       end
  42.     end
  43.     @hl1_head2 = hl1_head2
  44.     @hl2_head2 = hl2_head2
  45.  
  46.     @tr_desc = Tree.new_with_document_struct(DocumentStructure::RD)
  47.     @de_desc = DocumentElement.new
  48.     @tr_desc.root = @de_desc
  49.     hl1_desc, dt1_desc = nil
  50.     @de_desc.build do
  51.       hl1_desc = new(Headline, 1) do
  52.     new StringElement, "label1"
  53.       end
  54.       new DescList do
  55.     new DescListItem do
  56.       dt1_desc = make_term do
  57.         new StringElement, "label2"
  58.       end
  59.     end
  60.       end
  61.     end
  62.     @hl1_desc = hl1_desc
  63.     @dt1_desc = dt1_desc
  64.  
  65.     @tr_conf = Tree.new_with_document_struct(DocumentStructure::RD)
  66.     @de_conf = DocumentElement.new
  67.     @tr_conf.root = @de_conf
  68.     hl1_conf, hl2_conf = nil
  69.     @de_conf.build do
  70.       hl1_conf = new Headline, 1 do
  71.     new StringElement, "label"
  72.       end
  73.       hl2_conf = new Headline, 2 do
  74.     new StringElement, "label"
  75.       end
  76.     end
  77.     @hl1_conf = hl1_conf
  78.     @hl2_conf = hl2_conf
  79.     
  80.     @tr_no = Tree.new_with_document_struct(DocumentStructure::RD)
  81.     @de_no = DocumentElement.new
  82.     @tr_no.root = @de_no
  83.  
  84.     @resolver = ReferenceResolver.new(@tr_head2)
  85.   end
  86.  
  87.   def test_referent_of_label
  88.     @tr_desc.include_path = ["test/data"]
  89.     resolv = ReferenceResolver.new(@tr_desc, "label:")
  90.     label1 = Reference::RDLabel.new("label1")
  91.     assert_equal([nil, "label:0"], resolv.referent_of_label(label1))
  92.     label2 = Reference::RDLabel.new("label2")    
  93.     assert_equal([nil, "label:1"], resolv.referent_of_label(label2))
  94.     label_ext = Reference::RDLabel.new("label1", "label.rd")
  95.     assert_equal(["label", "label:0"], resolv.referent_of_label(label_ext))
  96.  
  97.     label3 = Reference::RDLabel.new("label3")
  98.     assert_equal(nil, resolv.referent_of_label(label3))
  99.     label_ext3 = Reference::RDLabel.new("label3", "label.rd")
  100.     assert_equal(["label", nil], resolv.referent_of_label(label_ext3))
  101.   end
  102.  
  103.   def test_refer_element
  104.     resolv = ReferenceResolver.new(@tr_head1)
  105.     assert_equal([@hl_head1], resolv.refer_element("label"))
  106.     assert_equal([], resolv.refer_element("label not found"))
  107.     resolv = ReferenceResolver.new(@tr_head2)
  108.     assert_equal([@hl1_head2], resolv.refer_element("label1"))
  109.     assert_equal([@hl2_head2], resolv.refer_element("label2"))
  110.     resolv = ReferenceResolver.new(@tr_desc)
  111.     assert_equal([@hl1_desc], resolv.refer_element("label1"))
  112.     assert_equal([@dt1_desc], resolv.refer_element("label2"))
  113.     resolv = ReferenceResolver.new(@tr_conf)
  114.     assert_equal([@hl1_conf, @hl2_conf], resolv.refer_element("label"))
  115.     resolv = ReferenceResolver.new(@tr_no)
  116.     assert_equal([], resolv.refer_element("label"))
  117.   end
  118.  
  119.   def test_refer
  120.     resolv = ReferenceResolver.new(@tr_head1, "label:")
  121.     assert_equal("label:0", resolv.refer("label"))
  122.     assert_equal(nil, resolv.refer("label not found"))
  123.     resolv = ReferenceResolver.new(@tr_head2, "label:")
  124.     assert_equal("label:0", resolv.refer("label1"))
  125.     assert_equal("label:1", resolv.refer("label2"))
  126.     resolv = ReferenceResolver.new(@tr_desc, "label:")
  127.     assert_equal("label:0", resolv.refer("label1"))
  128.     assert_equal("label:1", resolv.refer("label2"))
  129.     resolv = ReferenceResolver.new(@tr_conf, "label:")
  130.     assert_equal("label:0", resolv.refer("label"))
  131.     resolv = ReferenceResolver.new(@tr_no, "label:")
  132.     assert_equal(nil, resolv.refer("label"))
  133.  
  134.     resolv = ReferenceResolver.new(@tr_head1, "label:")
  135.     label = Reference::RDLabel.new("label")
  136.     assert_equal("label:0", resolv.refer(label))
  137.     ref = Reference.new(label)
  138.     assert_equal("label:0", resolv.refer(ref))
  139.   end
  140.  
  141.   def test_refer_external_file
  142.     tr_ext = Tree.new_with_document_struct(DocumentStructure::RD,
  143.                         ["test/data"])
  144.     label_ext = Reference::RDLabel.new("label1", "label.rd")
  145.     de = DocumentElement.new
  146.     tr_ext.root = de
  147.     ref = nil
  148.     de.build do
  149.       new TextBlock do
  150.     se = StringElement.new "label"
  151.     ref = new Reference, label_ext
  152.       end
  153.     end
  154.     label_not_exist = Reference::RDLabel.new("label3", "label.rd")
  155.     resolv = ReferenceResolver.new(tr_ext)
  156.     
  157.     assert_equal(["label", "label:0"], resolv.refer_external_file(ref))
  158.     assert_equal(["label", "label:0"], resolv.refer_external_file(label_ext))
  159.     assert_equal(["label", nil], resolv.refer_external_file(label_not_exist))
  160.   end
  161.  
  162.   def test_get_label_num
  163.     assert_equal(0, @resolver.get_label_num(@hl1_head2))
  164.     assert_equal(1, @resolver.get_label_num(@hl2_head2))
  165.     assert_equal(nil, @resolver.get_label_num(@dt1_desc))
  166.   end
  167.  
  168.   def test_get_anchor
  169.     resolv = ReferenceResolver.new(@tr_head2, "Label-")
  170.     assert_equal("Label-0", resolv.get_anchor(@hl1_head2))
  171.     assert_equal("Label-1", resolv.get_anchor(@hl2_head2))
  172.     assert_equal(nil, resolv.get_anchor(@dt1_desc))
  173.   end
  174.  
  175.   def test_label2str
  176.     assert_equal("string", @resolver.label2str("string"))
  177.     assert_equal("label", @resolver.label2str(@hl_head1))
  178.     assert_equal("label2", @resolver.label2str(@dt1_desc))
  179.     label = Reference::RDLabel.new("label1")
  180.     assert_equal("label1", @resolver.label2str(label))
  181.     ref = Reference.new(label)
  182.     assert_equal("label1", @resolver.label2str(ref))    
  183.     assert_exception(ArgumentError) do
  184.       @resolver.label2str([])
  185.     end
  186.   end
  187.  
  188.   def test_make_rbl_file
  189.     in_temp_dir do
  190.       begin
  191.     @resolver.make_rbl_file("label-head")
  192.     assert(File.exist?("label-head.rbl"))
  193.       ensure
  194.     remove_file("label-head.rbl")
  195.       end
  196.       begin
  197.     @resolver.make_rbl_file("label-head2.rd")
  198.     assert(File.exist?("label-head2.rbl"))
  199.       ensure
  200.     remove_file("label-head2.rbl")
  201.       end
  202.     end
  203.   end
  204. end
  205.  
  206. if $0 == __FILE__
  207.   RUNIT::CUI::TestRunner.run(TestReferenceResolver.suite)
  208. end
  209.