test/unit/code_object/provider/yard/docstring_test.rb in inch-0.4.10 vs test/unit/code_object/provider/yard/docstring_test.rb in inch-0.5.0.rc1

- old
+ new

@@ -1,26 +1,27 @@ -require File.expand_path(File.dirname(__FILE__) + "/../../../../test_helper") +require File.expand_path(File.dirname(__FILE__) + '/../../../../test_helper') describe ::Inch::CodeObject::Provider::YARD::Docstring do let(:described_class) { ::Inch::CodeObject::Provider::YARD::Docstring } # # loose TomDoc compatibility # + it "should notice things in tomdoc style docs" do - text = <<-DOC +text = <<-DOC Internal: Detects the Language of the blob. param1 - String filename param2 - String blob data. A block also maybe passed in for lazy loading. This behavior is deprecated and you should always pass in a String. param3 - Optional String mode (defaults to nil) Returns Language or nil. - DOC +DOC docstring = described_class.new(text) assert docstring.describes_internal_api? assert docstring.mentions_parameter?(:param1) assert docstring.mentions_parameter?(:param2) assert docstring.mentions_parameter?(:param3) @@ -31,239 +32,160 @@ assert docstring.mentions_return? assert docstring.describes_return? end it "should notice things in tomdoc style docs 2" do - text = <<-DOC +text = <<-DOC Public: Look up Language by one of its aliases. param1 - A String alias of the Language Examples Language.find_by_alias('cpp') # => #<Language name="C++"> Returns the Lexer or nil if none was found. - DOC +DOC docstring = described_class.new(text) assert docstring.mentions_parameter?(:param1) assert docstring.describes_parameter?(:param1) refute docstring.mentions_parameter?(:alias) refute docstring.mentions_parameter?(:Look) assert docstring.contains_code_example? assert docstring.mentions_return? assert docstring.describes_return? end - it "should notice multi-line returns in tomdoc style docs" do - text = <<-DOC -Public: Look up Language by one of its aliases. - -Returns the Lexer or nil - if none was found. - DOC - docstring = described_class.new(text) - assert docstring.mentions_return? - assert docstring.describes_return? - end - - it "should notice multi-line returns in tomdoc style docs 2" do - text = <<-DOC -Public: Look up Language by one of its aliases. - -Returns the Lexer or nil - if none - was found. - DOC - docstring = described_class.new(text) - assert docstring.mentions_return? - assert docstring.describes_return? - end - it "should notice things in tomdoc style docs 3" do - text = <<-DOC +text = <<-DOC Public: Look up Language by one of its aliases. param1 - A String alias of the Language Examples Language.find_by_alias('cpp') # => #<Language name="C++"> Returns the Lexer or nil if none was found. - DOC +DOC docstring = described_class.new(text) assert docstring.mentions_parameter?(:param1) assert docstring.describes_parameter?(:param1) refute docstring.mentions_parameter?(:alias) refute docstring.mentions_parameter?(:Look) assert docstring.contains_code_example? assert docstring.mentions_return? assert docstring.describes_return? end - it "should understand 'Returns nil.'" do - text = <<-DOC -[...] -Returns nil. - DOC - docstring = described_class.new(text) - assert docstring.describes_return? - end - it "should understand 'Returns nil.' without fullstop and in lowercase" do - text = <<-DOC -[...] -returns nil - DOC - docstring = described_class.new(text) - assert docstring.describes_return? - end - - it "should understand 'Returns nothing.'" do - text = <<-DOC -[...] -Returns nothing. - DOC - docstring = described_class.new(text) - assert docstring.describes_return? - end - - it "should understand 'Returns nothing.' without fullstop and in lowercase" do - text = <<-DOC -[...] -returns nothing - DOC - docstring = described_class.new(text) - assert docstring.describes_return? - end - - it "should understand 'Returns ...' with a visibility modifier in front of" \ - " it" do - text = "Public: Returns the Integer color." - docstring = described_class.new(text) - assert docstring.mentions_return? - assert docstring.describes_return? - end - # # PARAMETER MENTIONS # + it "should work 2" do - text = <<-DOC +text = <<-DOC Just because format_html is mentioned here, does not mean the first parameter is mentioned. - DOC +DOC docstring = described_class.new(text) refute docstring.mentions_parameter?(:format) refute docstring.contains_code_example? end - it "should work 2 if correct" do - text = <<-DOC + + it "should work 2" do +text = <<-DOC Just because format is mentioned here, does not mean the first parameter is meant. - DOC +DOC docstring = described_class.new(text) refute docstring.mentions_parameter?(:format) refute docstring.contains_code_example? end + + # # CODE EXAMPLES # + it "should work 3" do - text = <<-DOC +text = <<-DOC An example of a method using RDoc rather than YARD. == Parameters: param1:: A Symbol declaring some markup language like `:md` or `:html`. == Returns: A string in the specified format. - DOC +DOC docstring = described_class.new(text) refute docstring.contains_code_example? end it "should work with code example" do - text = <<-DOC +text = <<-DOC Another example. method_with_code_example() # => some value Params: +param1+:: param1 line string to be executed by the system +param2+:: +Proc+ object that takes a pipe object as first and only param (may be nil) +param3+:: +Proc+ object that takes a pipe object as first and only param (may be nil) - DOC +DOC docstring = described_class.new(text) assert docstring.contains_code_example? assert docstring.mentions_parameter?(:param1) assert docstring.mentions_parameter?(:param2) assert docstring.mentions_parameter?(:param3) assert docstring.describes_parameter?(:param1) assert docstring.describes_parameter?(:param2) assert docstring.describes_parameter?(:param3) end - it "should recognize several parameter notations" do - text = <<-DOC -Params: -+param1<String>+:: param1 line string to be executed by the system -+param2<String,nil>+:: +Proc+ object that takes a pipe object as first and only param (may be nil) -+param3<String|Class>+:: +Proc+ object that takes a pipe object as first and only param (may be nil) - DOC - docstring = described_class.new(text) - assert docstring.mentions_parameter?(:param1), "should mention param1" - assert docstring.mentions_parameter?(:param2), "should mention param2" - assert docstring.mentions_parameter?(:param3), "should mention param3" - assert docstring.describes_parameter?(:param1), "should describe param1" - assert docstring.describes_parameter?(:param2), "should describe param2" - assert docstring.describes_parameter?(:param3), "should describe param3" - end - it "should work with code example 2" do - text = <<-DOC +text = <<-DOC Just because format_html is mentioned here, does not mean the first parameter is mentioned. method_with_code_example() # => some value method_with_missing_param_doc(param1, param2, param3) - DOC +DOC docstring = described_class.new(text) assert docstring.contains_code_example? assert_equal 1, docstring.code_examples.size end it "should work with code example 3" do - text = <<-DOC +text = <<-DOC An example of a method using RDoc rather than YARD. method_with_code_example() # => some value == Parameters: param1:: A Symbol declaring some markup language like `:md` or `:html`. == Returns: A string in the specified format. - DOC +DOC docstring = described_class.new(text) assert docstring.contains_code_example? assert_equal 1, docstring.code_examples.size assert docstring.mentions_parameter?(:param1) assert docstring.describes_parameter?(:param1) end it "should work with multiple code examples" do - text = <<-DOC +text = <<-DOC An example of a method using RDoc rather than YARD. method_with_code_example() # => some value Another example of a method: @@ -275,10 +197,10 @@ param1:: A Symbol declaring some markup language like `:md` or `:html`. == Returns: A string in the specified format. - DOC +DOC docstring = described_class.new(text) assert docstring.contains_code_example? assert_equal 2, docstring.code_examples.size assert docstring.code_examples.last.index("create_index! 2") end