2020-07-18 19:40:47 +00:00
|
|
|
defmodule GeminiTest do
|
|
|
|
use ExUnit.Case
|
|
|
|
doctest Gemini
|
|
|
|
|
2020-07-19 14:50:15 +00:00
|
|
|
test "parse text lines" do
|
|
|
|
assert Gemini.parse("test") == [{:text, "test"}]
|
|
|
|
end
|
|
|
|
|
|
|
|
test "parse link lines" do
|
|
|
|
assert Gemini.parse("=>gemini://example.com") == [
|
|
|
|
{:link, URI.parse("gemini://example.com"), nil}
|
|
|
|
]
|
|
|
|
|
|
|
|
assert Gemini.parse("=> \t gemini://example.com") == [
|
|
|
|
{:link, URI.parse("gemini://example.com"), nil}
|
|
|
|
]
|
|
|
|
|
|
|
|
assert Gemini.parse("=>gemini://example.com some text") == [
|
|
|
|
{:link, URI.parse("gemini://example.com"), "some text"}
|
|
|
|
]
|
|
|
|
|
|
|
|
assert Gemini.parse("=> \t gemini://example.com \t\t\tother text") == [
|
|
|
|
{:link, URI.parse("gemini://example.com"), "other text"}
|
|
|
|
]
|
|
|
|
end
|
|
|
|
|
|
|
|
test "parse preformatted block" do
|
|
|
|
assert Gemini.parse("```foo\nbar\n```") == [
|
|
|
|
{:preformatting_start, "foo"},
|
|
|
|
{:preformatted, "bar"},
|
|
|
|
:preformatting_end
|
|
|
|
]
|
|
|
|
|
|
|
|
assert Gemini.parse("```foo\nbar\n```baz") == [
|
|
|
|
{:preformatting_start, "foo"},
|
|
|
|
{:preformatted, "bar"},
|
|
|
|
:preformatting_end
|
|
|
|
]
|
|
|
|
end
|
|
|
|
|
|
|
|
test "parse headings" do
|
|
|
|
assert Gemini.parse("#one") == [{:heading, "one", 1}]
|
|
|
|
assert Gemini.parse("# one") == [{:heading, "one", 1}]
|
|
|
|
assert Gemini.parse("## two") == [{:heading, "two", 2}]
|
|
|
|
assert Gemini.parse("### three") == [{:heading, "three", 3}]
|
|
|
|
end
|
|
|
|
|
|
|
|
test "parse list items" do
|
|
|
|
assert Gemini.parse("* one") == [{:list_item, "one"}]
|
|
|
|
assert Gemini.parse("*one") == [{:text, "*one"}]
|
|
|
|
end
|
|
|
|
|
|
|
|
test "parse block quotes" do
|
|
|
|
assert Gemini.parse(">quoted") == [{:quoted, "quoted"}]
|
|
|
|
assert Gemini.parse("> \t quoted") == [{:quoted, "quoted"}]
|
2020-07-18 19:40:47 +00:00
|
|
|
end
|
|
|
|
end
|