-
Notifications
You must be signed in to change notification settings - Fork 4
/
test_docstring.rb
93 lines (74 loc) · 2.3 KB
/
test_docstring.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
require 'helper.rb'
require "yard"
require "yard-tomdoc"
describe YARD::Docstring do
make_docstring = Proc.new do |comment|
if YARD::VERSION == '0.8.0'
YARD::DocstringParser.new.parse(comment, self).to_docstring
else
YARD::Docstring.new(comment)
end
end
before do
comment = <<-eof
# Duplicate some text an arbitrary number of times.
#
# text - The String to be duplicated.
# count - The Integer number of times to duplicate the text.
# options - Options (default: {})
# :a - Option a
# :b - Option b
#
# Examples
# multiplex('Tom', 4)
# # => 'TomTomTomTom'
#
# Returns the duplicated String.
#
# Raises ArgumentError if something bad happened
eof
@docstring = make_docstring[comment]
end
it "should fill docstring with description" do
@docstring.assert == "Duplicate some text an arbitrary number of times."
end
it "should fill param tags" do
tags = @docstring.tags(:param)
tags.size.assert == 3
tags[0].name.assert == 'text'
tags[1].name.assert == 'count'
tags[2].name.assert == 'options'
end
it "should fill options tags" do
tags = @docstring.tags(:option)
tags.size.assert == 2
tags[0].name.assert == 'options'
tags[0].pair.name.assert == ':a'
tags[0].pair.text.assert == 'Option a'
tags[1].name.assert == 'options'
tags[1].pair.name.assert == ':b'
tags[1].pair.text.assert == 'Option b'
end
it "should fill examples tags" do
@docstring.tags(:example).size.assert == 1
@docstring.tag(:example).text.assert == "multiplex('Tom', 4)\n# => 'TomTomTomTom'"
end
it "should fill return tag" do
@docstring.tag(:return).text.assert == "the duplicated String."
end
it "should fill raise tag" do
@docstring.tag(:raise).text.assert == "ArgumentError if something bad happened"
end
describe "Internal description" do
it "should fill api private tag" do
docstring = make_docstring["# Internal: It will do a big things in future"]
docstring.tag(:api).text.assert == "private"
end
end
describe "Deprecated description" do
it "should fill deprecated tag" do
docstring = make_docstring["# Deprecated: Some description."]
docstring.tag(:deprecated).text.assert == "Do not use this in new code, and replace it when updating old code."
end
end
end