summaryrefslogtreecommitdiff
path: root/Tests/LibMarkdown/TestImageSizeExtension.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/LibMarkdown/TestImageSizeExtension.cpp')
-rw-r--r--Tests/LibMarkdown/TestImageSizeExtension.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/Tests/LibMarkdown/TestImageSizeExtension.cpp b/Tests/LibMarkdown/TestImageSizeExtension.cpp
new file mode 100644
index 0000000000..428dc46d9c
--- /dev/null
+++ b/Tests/LibMarkdown/TestImageSizeExtension.cpp
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2022, MacDue <macdue@dueutil.tech>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <AK/Array.h>
+#include <LibMarkdown/Document.h>
+#include <LibTest/TestCase.h>
+
+struct TestCase {
+ StringView markdown;
+ StringView expected_html;
+};
+
+static constexpr Array image_size_tests {
+ // No image size:
+ TestCase { .markdown = "![](foo.png)"sv, .expected_html = R"(<p><img src="foo.png" alt="" ></p>)"sv },
+ // Only width given:
+ TestCase { .markdown = "![](foo.png =100x)"sv, .expected_html = R"(<p><img src="foo.png" style="width: 100px;" alt="" ></p>)"sv },
+ // Only height given:
+ TestCase { .markdown = "![](foo.png =x200)"sv, .expected_html = R"(<p><img src="foo.png" style="height: 200px;" alt="" ></p>)"sv },
+ // Both width and height given
+ TestCase { .markdown = "![](foo.png =50x25)"sv, .expected_html = R"(<p><img src="foo.png" style="width: 50px;height: 25px;" alt="" ></p>)"sv },
+ // Size contains invalid width
+ TestCase { .markdown = "![](foo.png =1oox50)"sv, .expected_html = R"(<p><img src="foo.png =1oox50" alt="" ></p>)"sv },
+ // Size contains invalid height
+ TestCase { .markdown = "![](foo.png =900xfour)"sv, .expected_html = R"(<p><img src="foo.png =900xfour" alt="" ></p>)"sv },
+};
+
+TEST_CASE(test_image_size_markdown_extension)
+{
+ for (auto const& test_case : image_size_tests) {
+ auto document = Markdown::Document::parse(test_case.markdown);
+ auto raw_rendered_html = document->render_to_inline_html();
+ auto rendered_html = StringView(raw_rendered_html).trim_whitespace();
+ EXPECT_EQ(rendered_html, test_case.expected_html);
+ }
+}