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-visitor.rb < prev   
Text File  |  2001-06-06  |  6KB  |  236 lines

  1. require 'runit/testcase'
  2. require 'runit/cui/mytestrunner'
  3.  
  4. require 'rd/visitor'
  5. require 'rd/block-element'
  6. require 'rd/list'
  7. require 'rd/desclist'
  8. require 'rd/methodlist'
  9. require 'rd/inline-element'
  10. require 'rd/tree'
  11. require 'rd/rd-struct'
  12. require 'test/dummy'
  13.  
  14. include RD
  15.  
  16. DummyStruct.define_relationship(NonterminalElement, DummyElement)
  17.  
  18. class TestVisitor < RUNIT::TestCase
  19.   def setup
  20.     @vis = DummyVisitor.new
  21.   end
  22.   
  23.   def test_visit_children
  24.     el = TextBlock.new
  25.     add_2_children(el)
  26.     assert_equal(["dummy", "dummy"], @vis.visit_children(el))
  27.  
  28.     empty = TextBlock.new
  29.     assert_equal([], @vis.visit_children(empty))
  30.   end
  31.  
  32.   def test_visit_DocumentElement
  33.     el = DocumentElement.new
  34.     add_2_children(el)
  35.     assert_equal(["apply_to_DocumentElement", [el, ["dummy", "dummy"]]],
  36.          @vis.visit_DocumentElement(el))
  37.   end
  38.  
  39.   def test_visit_Headline
  40.     el = Headline.new(1)
  41.     add_2_children(el)
  42.     assert_equal(["apply_to_Headline", [el, ["dummy", "dummy"]]],
  43.          @vis.visit_Headline(el))
  44.   end
  45.  
  46.   def test_visit_Include
  47.     el = Include.new "include"
  48.     assert_equal(["apply_to_Include", [el]],
  49.          @vis.visit_Include(el))
  50.   end
  51.  
  52.   def test_visit_TextBlock
  53.     el = TextBlock.new
  54.     add_2_children(el)
  55.     assert_equal(["apply_to_TextBlock", [el, ["dummy", "dummy"]]],
  56.          @vis.visit_TextBlock(el))
  57.   end
  58.  
  59.   def test_visit_Verbatim
  60.     el = Verbatim.new "Verbatim"
  61.     assert_equal(["apply_to_Verbatim", [el]],
  62.          @vis.visit_Verbatim(el))
  63.   end
  64.  
  65.   def test_visit_ItemList
  66.     el = ItemList.new
  67.     add_2_children(el)
  68.     assert_equal(["apply_to_ItemList", [el, ["dummy", "dummy"]]],
  69.          @vis.visit_ItemList(el))
  70.   end
  71.  
  72.   def test_visit_EnumList
  73.     el = EnumList.new
  74.     add_2_children(el)
  75.     assert_equal(["apply_to_EnumList", [el, ["dummy", "dummy"]]],
  76.          @vis.visit_EnumList(el))
  77.   end
  78.  
  79.   def test_visit_DescList
  80.     el = DescList.new
  81.     add_2_children(el)
  82.     assert_equal(["apply_to_DescList", [el, ["dummy", "dummy"]]],
  83.          @vis.visit_DescList(el))
  84.   end
  85.  
  86.   def test_visit_MethodList
  87.     el = MethodList.new
  88.     add_2_children(el)
  89.     assert_equal(["apply_to_MethodList", [el, ["dummy", "dummy"]]],
  90.          @vis.visit_MethodList(el))
  91.   end
  92.  
  93.   def test_visit_ItemListItem
  94.     el = ItemListItem.new
  95.     add_2_children(el)
  96.     assert_equal(["apply_to_ItemListItem", [el, ["dummy", "dummy"]]],
  97.          @vis.visit_ItemListItem(el))
  98.   end
  99.  
  100.   def test_visit_EnumListItem
  101.     el = EnumListItem.new
  102.     add_2_children(el)
  103.     assert_equal(["apply_to_EnumListItem", [el, ["dummy", "dummy"]]],
  104.          @vis.visit_EnumListItem(el))
  105.   end
  106.  
  107.   def test_visit_DescListItem
  108.     el = DescListItem.new
  109.     el.set_term_under_document_struct(DummyElement.new, DummyStruct)
  110.     add_2_children(el)
  111.     assert_equal(["apply_to_DescListItem", [el, "dummy", ["dummy", "dummy"]]],
  112.          @vis.visit_DescListItem(el))
  113.  
  114.     empty = DescListItem.new
  115.     empty.set_term_under_document_struct(DummyElement.new, DummyStruct)
  116.     assert_equal(["apply_to_DescListItem", [empty, "dummy", []]],
  117.          @vis.visit_DescListItem(empty))
  118.   end
  119.  
  120.   def test_visit_DescListItemTerm
  121.     el = DescListItem::Term.new
  122.     add_2_children(el)
  123.     assert_equal(["apply_to_DescListItemTerm", [el, ["dummy", "dummy"]]],
  124.          @vis.visit_DescListItemTerm(el))
  125.   end
  126.  
  127.   def test_visit_MethodListItem
  128.     el = MethodListItem.new
  129.     el.set_term_under_document_struct(DummyElement.new, DummyStruct)
  130.     add_2_children(el)
  131.     assert_equal(["apply_to_MethodListItem", [el, "dummy", ["dummy", "dummy"]]],
  132.          @vis.visit_MethodListItem(el))
  133.  
  134.     empty = MethodListItem.new
  135.     empty.set_term_under_document_struct(DummyElement.new, DummyStruct)
  136.     assert_equal(["apply_to_MethodListItem", [empty, "dummy", []]],
  137.          @vis.visit_MethodListItem(empty))
  138.   end
  139.  
  140.   def test_visit_MethodListItemTerm
  141.     el = MethodListItem::Term.new
  142.     assert_equal(["apply_to_MethodListItemTerm", [el]],
  143.          @vis.visit_MethodListItemTerm(el))
  144.   end
  145.  
  146.   def test_visit_StringElement
  147.     el = StringElement.new "string"
  148.     assert_equal(["apply_to_StringElement", [el]], @vis.visit_StringElement(el))
  149.   end
  150.  
  151.   def test_visit_Verb
  152.     el = Verb.new "string"
  153.     assert_equal(["apply_to_Verb", [el]], @vis.visit_Verb(el))
  154.   end
  155.  
  156.   def test_visit_Emphasis
  157.     el = Emphasis.new
  158.     add_2_children(el)
  159.     assert_equal(["apply_to_Emphasis", [el, ["dummy", "dummy"]]],
  160.          @vis.visit_Emphasis(el))
  161.   end
  162.  
  163.   def test_visit_Code
  164.     el = Code.new
  165.     add_2_children(el)
  166.     assert_equal(["apply_to_Code", [el, ["dummy", "dummy"]]],
  167.          @vis.visit_Code(el))
  168.   end
  169.  
  170.   def test_visit_Var
  171.     el = Var.new
  172.     add_2_children(el)
  173.     assert_equal(["apply_to_Var", [el, ["dummy", "dummy"]]],
  174.          @vis.visit_Var(el))
  175.   end
  176.  
  177.   def test_visit_Keyboard
  178.     el = Keyboard.new
  179.     add_2_children(el)
  180.     assert_equal(["apply_to_Keyboard", [el, ["dummy", "dummy"]]],
  181.          @vis.visit_Keyboard(el))
  182.   end
  183.  
  184.   def test_visit_Index
  185.     el = Index.new
  186.     add_2_children(el)
  187.     assert_equal(["apply_to_Index", [el, ["dummy", "dummy"]]],
  188.          @vis.visit_Index(el))
  189.   end
  190.  
  191.   def test_visit_Footnote
  192.     el = Footnote.new
  193.     add_2_children(el)
  194.     assert_equal(["apply_to_Footnote", [el, ["dummy", "dummy"]]],
  195.          @vis.visit_Footnote(el))
  196.   end
  197.  
  198.   def test_visit_Reference
  199.     el = Reference.new(Reference::RDLabel.new("label"))
  200.     add_2_children(el)
  201.     assert_equal(["apply_to_Reference_with_RDLabel", [el, ["dummy", "dummy"]]],
  202.          @vis.visit_Reference(el))
  203.  
  204.     empty = Reference.new(Reference::RDLabel.new("label"))
  205.     assert_equal(["apply_to_Reference_with_RDLabel", [empty, []]],
  206.          @vis.visit_Reference(empty))
  207.  
  208.     url_reference = Reference.new(Reference::URL.new("url"))
  209.     add_2_children(url_reference)
  210.     assert_equal(["apply_to_Reference_with_URL",
  211.            [url_reference, ["dummy", "dummy"]]],
  212.          @vis.visit_Reference(url_reference))
  213.  
  214.     # OldStyleDummyVisitor#apply_to_Reference_with_RDLabel is not implemented.
  215.     # So, #apply_to_reference is called instead of it.
  216.     old_visitor = OldStyleDummyVisitor.new
  217.     assert_equal(["apply_to_Reference", [el, ["dummy", "dummy"]]],
  218.          old_visitor.visit_Reference(el))
  219.   end
  220.  
  221.   def add_2_children(el)
  222.     el.add_children_under_document_struct([DummyElement.new, DummyElement.new],
  223.                       DummyStruct)
  224.   end
  225. end
  226.  
  227. class OldStyleDummyVisitor < Visitor
  228.   def apply_to_Reference(*args)
  229.     ["apply_to_Reference", args]
  230.   end
  231. end
  232.  
  233. if $0 == __FILE__
  234.   RUNIT::CUI::MyTestRunner.run(TestVisitor.suite)
  235. end
  236.