148 lines
3.3 KiB
Ruby
148 lines
3.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'minitest/autorun'
|
|
require_relative '../lib/rbmark'
|
|
|
|
# Test Setext Heading parsing compliance with CommonMark v0.31.2
|
|
class TestSetextHeadings < Minitest::Test
|
|
def test_simple_heading1
|
|
doc = ::RBMark::DOM::Document.parse(<<~DOC)
|
|
Foo *bar*
|
|
=========
|
|
|
|
Foo *bar*
|
|
---------
|
|
DOC
|
|
assert_instance_of(::RBMark::DOM::Heading1, doc.children[0])
|
|
assert_instance_of(::RBMark::DOM::Heading2, doc.children[1])
|
|
end
|
|
|
|
def test_multiline_span
|
|
doc = ::RBMark::DOM::Document.parse(<<~DOC)
|
|
Foo *bar
|
|
baz*
|
|
====
|
|
DOC
|
|
assert_instance_of(::RBMark::DOM::Heading1, doc.children[0])
|
|
assert_equal(1, doc.children.length)
|
|
end
|
|
|
|
def test_span_inlining
|
|
doc = ::RBMark::DOM::Document.parse(<<~DOC)
|
|
start
|
|
|
|
Foo *bar
|
|
baz
|
|
====
|
|
DOC
|
|
assert_instance_of(::RBMark::DOM::Heading1, doc.children[1])
|
|
skip
|
|
end
|
|
|
|
def test_line_length
|
|
doc = ::RBMark::DOM::Document.parse(<<~DOC)
|
|
Foo
|
|
------------------------------
|
|
|
|
Foo
|
|
=
|
|
DOC
|
|
assert_instance_of(::RBMark::DOM::Heading2, doc.children[0])
|
|
assert_instance_of(::RBMark::DOM::Heading1, doc.children[1])
|
|
end
|
|
|
|
def test_content_indent
|
|
skip # TODO: implement this
|
|
end
|
|
|
|
def test_marker_indent
|
|
doc = ::RBMark::DOM::Document.parse(<<~DOC)
|
|
Foo
|
|
------------------------------
|
|
|
|
Foo
|
|
=
|
|
|
|
Foo
|
|
=
|
|
|
|
Foo
|
|
=
|
|
DOC
|
|
refute_instance_of(::RBMark::DOM::Heading2, doc.children[0])
|
|
assert_instance_of(::RBMark::DOM::Heading1, doc.children[1])
|
|
assert_instance_of(::RBMark::DOM::Heading1, doc.children[2])
|
|
assert_instance_of(::RBMark::DOM::Heading1, doc.children[3])
|
|
end
|
|
|
|
def test_no_internal_spaces
|
|
doc = ::RBMark::DOM::Document.parse(<<~DOC)
|
|
Foo
|
|
-- - -
|
|
|
|
Foo
|
|
== =
|
|
DOC
|
|
refute_instance_of(::RBMark::DOM::Heading2, doc.children[0])
|
|
refute_instance_of(::RBMark::DOM::Heading1, doc.children[0])
|
|
end
|
|
|
|
def test_block_level_priority
|
|
doc = ::RBMark::DOM::Document.parse(<<~DOC)
|
|
` Foo
|
|
------
|
|
`
|
|
DOC
|
|
assert_instance_of(::RBMark::DOM::Heading2, doc.children[0])
|
|
assert_instance_of(::RBMark::DOM::Paragraph, doc.children[1])
|
|
end
|
|
|
|
def test_paragraph_breaking_only
|
|
doc = ::RBMark::DOM::Document.parse(<<~DOC)
|
|
> text
|
|
------
|
|
DOC
|
|
skip # TODO: implement this
|
|
end
|
|
|
|
def test_paragraph_breaking_only_lazy_continuation
|
|
doc = ::RBMark::DOM::Document.parse(<<~DOC)
|
|
> text
|
|
continuation line
|
|
------
|
|
DOC
|
|
skip # TODO: implement this
|
|
end
|
|
|
|
def test_headings_back_to_back
|
|
doc = ::RBMark::DOM::Document.parse(<<~DOC)
|
|
heading1
|
|
------
|
|
heading2
|
|
------
|
|
heading3
|
|
======
|
|
DOC
|
|
assert_instance_of(::RBMark::DOM::Heading2, doc.children[0])
|
|
assert_instance_of(::RBMark::DOM::Heading2, doc.children[1])
|
|
assert_instance_of(::RBMark::DOM::Heading1, doc.children[2])
|
|
end
|
|
|
|
def test_no_empty_headings
|
|
doc = ::RBMark::DOM::Document.parse(<<~DOC)
|
|
|
|
======
|
|
DOC
|
|
refute_instance_of(::RBMark::DOM::Heading1, doc.children[0])
|
|
end
|
|
|
|
def test_thematic_breaks
|
|
doc = ::RBMark::DOM::Document.parse(<<~DOC)
|
|
----
|
|
----
|
|
DOC
|
|
refute_instance_of(::RBMark::DOM::Heading2, doc.children[0])
|
|
refute_instance_of(::RBMark::DOM::Heading2, doc.children[1])
|
|
end
|
|
end
|