Commit eccb7874 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Added unit tests for DocComment.

parent ba558164
Loading
Loading
Loading
Loading

tc_doc_comment.rb

0 → 100644
+75 −0
Original line number Diff line number Diff line
require "doc_comment"
require "test/unit"

class TestDocComment < Test::Unit::TestCase

  def test_function
    doc = JsDuck::DocComment.new("/**
 * @function foo
 * Some docs.
 * @param {Number} x doc for x
 * @param {Integer} y doc for y
 * @return {String} resulting value
 */")
    assert_equal("foo", doc[:function][:name])
    assert_equal("Some docs.\n", doc[:function][:doc])

    assert_equal(2, doc[:param].length)

    assert_equal("x", doc[:param][0][:name])
    assert_equal("Number", doc[:param][0][:type])
    assert_equal("doc for x\n", doc[:param][0][:doc])

    assert_equal("y", doc[:param][1][:name])
    assert_equal("Integer", doc[:param][1][:type])
    assert_equal("doc for y\n", doc[:param][1][:doc])

    assert_equal("String", doc[:return][:type])
    assert_equal("resulting value", doc[:return][:doc])
  end

  def test_class
    doc = JsDuck::DocComment.new("/**
 * @class my.package.Foo
 * @extends my.Bar
 * Some docs.
 */")
    assert_equal("my.package.Foo", doc[:class][:name])
    assert_equal("my.Bar", doc[:class][:extends])
    assert_equal("Some docs.", doc[:class][:doc])
  end

  def test_long_docs
    doc = JsDuck::DocComment.new("/**
 * @function foo
 *
 * Some docs.
 *
 * Nice docs.
 *
 * @param {Number} x some
 * long
 * docs.
 * @return {String} more
 * long
 * docs.
 */")
    assert_equal("Some docs.\n\nNice docs.\n\n", doc[:function][:doc])
    assert_equal("some\nlong\ndocs.\n", doc[:param][0][:doc])
    assert_equal("more\nlong\ndocs.", doc[:return][:doc])
  end

  def test_typeless_docs
    doc = JsDuck::DocComment.new("/**
 * @param x doc1
 * @return doc2
 */")
    assert_equal("x", doc[:param][0][:name])
    assert_equal("doc1\n", doc[:param][0][:doc])
    assert_equal("doc2", doc[:return][:doc])

    assert_equal(nil, doc[:param][0][:type])
    assert_equal(nil, doc[:return][:type])
  end
end
+1 −46
Original line number Diff line number Diff line
@@ -15,38 +15,6 @@ class TestJsDuck < Test::Unit::TestCase
    assert_equal([], JsDuck.parse("/* ") )
  end

  def test_return
    docs = JsDuck.parse("
/**
 * Some function
 * @return {String} some value
 * on several
 * lines
 */
")
    assert_equal("String", docs[0][:return][:type])
    assert_equal("some value\non several\nlines", docs[0][:return][:doc])
  end

  def test_param
    docs = JsDuck.parse("
/**
 * Some function
 * @param {Number} x value 1
 * @param {Float} y value 2
 */
")
    param1 = docs[0][:param][0]
    assert_equal("Number", param1[:type])
    assert_equal("x", param1[:name])
    assert_equal("value 1\n", param1[:doc])

    param2 = docs[0][:param][1]
    assert_equal("Float", param2[:type])
    assert_equal("y", param2[:name])
    assert_equal("value 2", param2[:doc])
  end

  def test_function
    docs = JsDuck.parse("
/**
@@ -202,7 +170,7 @@ function f(foo, bar){}
    assert_equal("Number", params[1][:type])
  end

  def test_explicit_class_name
  def test_explicit_class_name_overrides_implicit
    docs = JsDuck.parse("
/**
 * @class my.package.Foo
@@ -236,19 +204,6 @@ some.namespace.ClassName = function(){}
    assert_equal("My class", docs[0][:class][:doc])
  end

  def test_explicit_extends
    docs = JsDuck.parse("
/**
 * @class Foo
 * @extends some.namespace.Bar
 * My class
 */
")
    assert_equal("Foo", docs[0][:class][:name])
    assert_equal("some.namespace.Bar", docs[0][:class][:extends])
    assert_equal("My class", docs[0][:class][:doc])
  end

  def test_implicit_extends
    docs = JsDuck.parse("
/**