Serenity Operating System
1/*
2 * Copyright (c) 2022, MacDue <macdue@dueutil.tech>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#include <AK/Array.h>
8#include <LibMarkdown/Document.h>
9#include <LibTest/TestCase.h>
10
11struct TestCase {
12 StringView markdown;
13 StringView expected_html;
14};
15
16static constexpr Array image_size_tests {
17 // No image size:
18 TestCase { .markdown = ""sv, .expected_html = R"(<p><img src="foo.png" alt="" ></p>)"sv },
19 // Only width given:
20 TestCase { .markdown = ""sv, .expected_html = R"(<p><img src="foo.png" style="width: 100px;" alt="" ></p>)"sv },
21 // Only height given:
22 TestCase { .markdown = ""sv, .expected_html = R"(<p><img src="foo.png" style="height: 200px;" alt="" ></p>)"sv },
23 // Both width and height given
24 TestCase { .markdown = ""sv, .expected_html = R"(<p><img src="foo.png" style="width: 50px;height: 25px;" alt="" ></p>)"sv },
25 // Size contains invalid width
26 TestCase { .markdown = ""sv, .expected_html = R"(<p><img src="foo.png =1oox50" alt="" ></p>)"sv },
27 // Size contains invalid height
28 TestCase { .markdown = ""sv, .expected_html = R"(<p><img src="foo.png =900xfour" alt="" ></p>)"sv },
29};
30
31TEST_CASE(test_image_size_markdown_extension)
32{
33 for (auto const& test_case : image_size_tests) {
34 auto document = Markdown::Document::parse(test_case.markdown);
35 auto raw_rendered_html = document->render_to_inline_html();
36 auto rendered_html = StringView(raw_rendered_html).trim_whitespace();
37 EXPECT_EQ(rendered_html, test_case.expected_html);
38 }
39}