1defmodule CodeTest do 2 use ExUnit.Case 3 4 import Support.Helpers 5 6 ########## 7 # Inline # 8 ########## 9 10 test "backticks mean code" do 11 result = convert_pedantic("the `printf` function") 12 assert result == ~s[the <code class="inline">printf</code> function] 13 end 14 15 test "literal backticks can be included within doubled backticks" do 16 result = convert_pedantic("``the ` character``") 17 assert result == ~s[<code class="inline">the ` character</code>] 18 end 19 20 test "a space after the opening and before the closing doubled backticks are ignored" do 21 result = convert_pedantic("`` the ` character``") 22 assert result == ~s[<code class="inline">the ` character</code>] 23 end 24 25 test "single backtick with spaces inside doubled backticks" do 26 result = convert_pedantic("`` ` ``") 27 assert result == ~s[<code class="inline">`</code>] 28 end 29 30 test "ampersands and angle brackets are escaped in code" do 31 result = convert_pedantic("the `<a> &123;` function") 32 expect = 33 ~s[the <code class="inline"><a> &123;</code> function] 34 assert result == expect 35 end 36 test "" do 37 result = convert_pedantic("a 'single' quote") 38 assert result == "a ‘single’ quote" 39 end 40 41 test "apostrophe" do 42 result = convert_pedantic("a single's quote") 43 assert result == "a single’s quote" 44 end 45 46 test "paired single before puncuation" do 47 Enum.each '.]})?!', fn (punct) -> 48 result = convert_pedantic("a 'single'" <> <<punct>>) 49 assert result == "a ‘single’" <> <<punct>> 50 end 51 end 52 53 test "paired double" do 54 result = convert_pedantic("a \"double\" quote") 55 assert result == "a “double” quote" 56 end 57 58 test "paired double before puncuation" do 59 Enum.each '.]})?!', fn (punct) -> 60 result = convert_pedantic("a \"double\"" <> <<punct>>) 61 assert result == "a “double”" <> <<punct>> 62 end 63 end 64 65 test "closing quotes after tag" do 66 result = convert_pedantic ~s(a "**test**") 67 assert result == "a “<strong>test</strong>”" 68 end 69 70 test "closing single quotes after tag" do 71 result = convert_pedantic ~s(a '**test**') 72 assert result == "a ‘<strong>test</strong>’" 73 end 74 75 test "another closing single quotes after tag" do 76 result = convert_pedantic "for `key` in `app`'s environment" 77 assert result == ~s(for <code class="inline">key</code> in <code class="inline">app</code>’s environment) 78 end 79 80 ########## 81 # Blocks # 82 ########## 83 84 test "simple code block" do 85 result = Earmark.as_html! "```\ndefmodule\n```" 86 assert result == ~s(<pre><code class="">defmodule</code></pre>\n) 87 end 88 test "indented code block" do 89 result = Earmark.as_html! " defmodule\n end" 90 assert result == ~s(<pre><code>defmodule\nend</code></pre>\n) 91 end 92 test "indented code block (increasing indent)" do 93 result = Earmark.as_html! " defmodule\n defstruct" 94 assert result == ~s(<pre><code>defmodule\n defstruct</code></pre>\n) 95 end 96 test "indented code block (decreasing indent)" do 97 result = Earmark.as_html! " # Hello\n end" 98 assert result == ~s(<pre><code> # Hello\nend</code></pre>\n) 99 end 100 test "code block (decreasing indent)" do 101 result = Earmark.as_html! "```elixir\n # Hello\nend\n```" 102 assert result == ~s(<pre><code class="elixir"> # Hello\nend</code></pre>\n) 103 end 104end 105 106# SPDX-License-Identifier: Apache-2.0 107