Serenity Operating System
at master 39 lines 1.7 kB view raw
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 = "![](foo.png)"sv, .expected_html = R"(<p><img src="foo.png" alt="" ></p>)"sv }, 19 // Only width given: 20 TestCase { .markdown = "![](foo.png =100x)"sv, .expected_html = R"(<p><img src="foo.png" style="width: 100px;" alt="" ></p>)"sv }, 21 // Only height given: 22 TestCase { .markdown = "![](foo.png =x200)"sv, .expected_html = R"(<p><img src="foo.png" style="height: 200px;" alt="" ></p>)"sv }, 23 // Both width and height given 24 TestCase { .markdown = "![](foo.png =50x25)"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 = "![](foo.png =1oox50)"sv, .expected_html = R"(<p><img src="foo.png =1oox50" alt="" ></p>)"sv }, 27 // Size contains invalid height 28 TestCase { .markdown = "![](foo.png =900xfour)"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}