<html>
<head>
<style><!--
  body {background-color:#ffffff;}
  .file {border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;}
  .pathname {font-family:monospace; float:right;}
  .fileheader {margin-bottom:.5em;}
  .diff {margin:0;}
  .tasklist {padding:4px;border:1px dashed #000000;margin-top:1em;}
  .tasklist ul {margin-top:0;margin-bottom:0;}
  tr.alt {background-color:#eeeeee}
  #added {background-color:#ddffdd;}
  #addedchars {background-color:#99ff99;font-weight:bolder;}
  tr.alt #added {background-color:#ccf7cc;}
  #removed {background-color:#ffdddd;}
  #removedchars {background-color:#ff9999;font-weight:bolder;}
  tr.alt #removed {background-color:#f7cccc;}
  #info {color:#888888;}
  #context {background-color:#eeeeee;}
  td {padding-left:.3em;padding-right:.3em;}
  tr.head {border-bottom-width:1px;border-bottom-style:solid;}
  tr.head td {padding:0;padding-top:.2em;}
  .task {background-color:#ffff00;}
  .comment {padding:4px;border:1px dashed #000000;background-color:#ffffdd}
  .error {color:red;}
  hr {border-width:0px;height:2px;background:black;}
--></style>
</head>
<body>
<table cellspacing="0" cellpadding="0" border="0" rules="cols">
<tr class="head"><td colspan="4">Commit in <b><tt>trunk/as2api</tt></b><span id="info"> on MAIN</span></td></tr>
<tr><td><tt><a href="#file1"><span id="added">tc_doccomment_lexer.rb</span></a></tt></td><td align="right" id="added">+54</td><td></td><td nowrap="nowrap" align="right">added 261</td></tr>
<tr class="alt"><td><tt><a href="#file2"><span id="added">tc_doccomment_parser.rb</span></a></tt></td><td align="right" id="added">+66</td><td></td><td nowrap="nowrap" align="right">added 261</td></tr>
<tr><td><tt><a href="#file3">ts.rb</a></tt></td><td align="right" id="added">+2</td><td></td><td nowrap="nowrap" align="center">260 -&gt; 261</td></tr>
<tr><td></td><td align="right" id="added">+122</td><td></td><td></td></tr>
</table>
<small id="info">2 added + 1 modified, total 3 files</small><br />
<pre class="comment">
Some test cases which I forgot to commit a while back
</pre>
<hr /><a name="file1" /><div class="file">
<span class="pathname" id="added">trunk/as2api</span><br />
<div class="fileheader" id="added"><big><b>tc_doccomment_lexer.rb</b></big> <small id="info">added at 261</small></div>
<pre class="diff"><small id="info">--- trunk/as2api/tc_doccomment_lexer.rb        2006-01-05 21:42:32 UTC (rev 260)
+++ trunk/as2api/tc_doccomment_lexer.rb        2006-01-05 21:44:32 UTC (rev 261)
@@ -0,0 +1,54 @@
</small></pre><pre class="diff" id="added">+require 'test/unit'
+require 'parse/doccomment_lexer'
+require 'stringio'
+
+class TC_DocComemntLexer &lt; Test::Unit::TestCase
+
+  include ActionScript::ParseDoc
+
+  def test_stars
+    assert_lex_to("*", StarsToken.new("*", 1))
+    assert_lex_to("**", StarsToken.new("**", 1))
+    assert_lex_to(" *", StarsToken.new(" *", 1))
+    assert_lex_to(" \t**", StarsToken.new(" \t**", 1))
+  end
+
+  def test_braces
+    assert_lex_to("{", LBraceToken.new(1))
+    assert_lex_to("}", RBraceToken.new(1))
+  end
+
+  def test_inline_tag
+    assert_lex_to("{@", LBraceToken.new(1),
+                        WordToken.new("@", 1))
+    assert_lex_to("{@ ", LBraceToken.new(1),
+                         WordToken.new("@", 1),
+                         WhitespaceToken.new(" ", 1))
+    assert_lex_to("{@f", InlineAtTagToken.new("f", 1))
+  end
+
+  def test_para_tag
+    assert_lex_to("@ ", WordToken.new("@", 1),
+                        WhitespaceToken.new(" ", 1))
+    assert_lex_to("@f", ParaAtTagToken.new("f", 1))
+    # parser would catch that this is not a valid place for a para-tag, and
+    # treat as normal word,
+    assert_lex_to("{ @f", LBraceToken.new(1),
+                          WhitespaceToken.new(" ", 1),
+                          ParaAtTagToken.new("f", 1))
+  end
+
+ private
+
+  def assert_lex_to(text, *tokens)
+    input = StringIO.new(text)
+    lex = DocCommentLexer.new(input)
+    tokens.each do |expected|
+      tok = lex.get_next
+      assert_equal(expected.class, tok.class)
+      assert_equal(expected.body, tok.body)
+    end
+    assert_nil(lex.get_next)
+  end
+
+end
</pre></div>
<hr /><a name="file2" /><div class="file">
<span class="pathname" id="added">trunk/as2api</span><br />
<div class="fileheader" id="added"><big><b>tc_doccomment_parser.rb</b></big> <small id="info">added at 261</small></div>
<pre class="diff"><small id="info">--- trunk/as2api/tc_doccomment_parser.rb        2006-01-05 21:42:32 UTC (rev 260)
+++ trunk/as2api/tc_doccomment_parser.rb        2006-01-05 21:44:32 UTC (rev 261)
@@ -0,0 +1,66 @@
</small></pre><pre class="diff" id="added">+require 'test/unit'
+require 'parse/doccomment_lexer'
+require 'parse/doccomment_parser'
+require 'stringio'
+
+class MyDocCommentHandler &lt; ActionScript::ParseDoc::DocCommentHandler
+  def initialize; @collected_text=""; end
+  attr_reader :collected_text
+  def text(text); @collected_text&lt;&lt;text.to_s; end
+end
+
+class TC_DocCommentParser &lt; Test::Unit::TestCase
+
+  include ActionScript::ParseDoc
+
+  def test_parse_comment
+    simple_parse("", :parse_comment)
+    simple_parse("*", :parse_comment)
+    simple_parse(" *foo\n * foo\n", :parse_comment, "foo\n foo\n")
+
+    comment_text = &lt;&lt;HERE
+some test {text @param foo
+
+more {@foobar}
+
+@param asia is clever {@link   here }
+
+@throws java.lang.RuntimeException blah blah
+        blah blah
+
+@see other
+HERE
+
+    simple_parse(comment_text, :parse_comment, "some test {text @param foo\n\nmore \n\n asia is clever    here \n\n java.lang.RuntimeException blah blah\n        blah blah\n\n other\n")
+  end
+
+  def test_parse_para_tag
+    simple_parse("@param foo", :parse_line, " foo")
+  end
+
+  def test_parse_inline_tag
+    simple_parse("{@link foo}", :parse_inline_tag, " foo")
+    simple_parse("{@link\nfoo}", :parse_inline_tag, "\nfoo")
+    # check initial stars are stripped inside inline-tags,
+    simple_parse("{@link\n * foo}", :parse_inline_tag, "\n foo")
+    # stars should be stripped in an inline-tag's nested braces too,
+    simple_parse("{@code for(;;){\n * foo}}", :parse_inline_tag, " for(;;){\n foo}")
+  end
+
+  def test_parse_brace_pair
+    txt = "{{}{{}}}"
+    simple_parse(txt, :parse_brace_pair, txt)
+  end
+
+ private
+  def simple_parse(text, method, expected_text="")
+    input = StringIO.new(text)
+    lex = DocCommentLexer.new(input)
+    parse = DocCommentParser.new(lex)
+    handler = MyDocCommentHandler.new
+    parse.handler = handler
+    parse.method(method).call
+    assert_nil(lex.get_next)
+    assert_equal(expected_text, handler.collected_text)
+  end
+end
</pre></div>
<hr /><a name="file3" /><div class="file">
<span class="pathname">trunk/as2api</span><br />
<div class="fileheader"><big><b>ts.rb</b></big> <small id="info">260 -&gt; 261</small></div>
<pre class="diff"><small id="info">--- trunk/as2api/ts.rb        2006-01-05 21:42:32 UTC (rev 260)
+++ trunk/as2api/ts.rb        2006-01-05 21:44:32 UTC (rev 261)
@@ -1,4 +1,6 @@
</small></pre><pre class="diff" id="context"> require 'test/unit'
 require 'tc_actionscript_lexer.rb'
 require 'tc_actionscript_parser.rb'
</pre><pre class="diff" id="added">+require 'tc_doccomment_lexer.rb'
+require 'tc_doccomment_parser.rb'
</pre><pre class="diff" id="context"> require 'tc_doc_comment.rb'
</pre></div>
<center><small><a href="http://www.badgers-in-foil.co.uk/projects/cvsspam/" title="commit -&gt; email">CVSspam</a> 0.2.11</small></center>
</body></html>