From bcf0e879d3c6e76fddb8d871cd93d3e60ecd1b9d Mon Sep 17 00:00:00 2001 From: MacDue Date: Wed, 3 Aug 2022 00:22:08 +0100 Subject: [PATCH] Tests: Add a test for markdown image sizes --- Tests/LibMarkdown/CMakeLists.txt | 1 + Tests/LibMarkdown/TestImageSizeExtension.cpp | 39 ++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 Tests/LibMarkdown/TestImageSizeExtension.cpp diff --git a/Tests/LibMarkdown/CMakeLists.txt b/Tests/LibMarkdown/CMakeLists.txt index ec58449842a..97bff35e45e 100644 --- a/Tests/LibMarkdown/CMakeLists.txt +++ b/Tests/LibMarkdown/CMakeLists.txt @@ -2,6 +2,7 @@ include(commonmark_spec) set(TEST_SOURCES TestCommonmark.cpp + TestImageSizeExtension.cpp ) foreach(source IN LISTS TEST_SOURCES) diff --git a/Tests/LibMarkdown/TestImageSizeExtension.cpp b/Tests/LibMarkdown/TestImageSizeExtension.cpp new file mode 100644 index 00000000000..428dc46d9c7 --- /dev/null +++ b/Tests/LibMarkdown/TestImageSizeExtension.cpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2022, MacDue + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include +#include + +struct TestCase { + StringView markdown; + StringView expected_html; +}; + +static constexpr Array image_size_tests { + // No image size: + TestCase { .markdown = "![](foo.png)"sv, .expected_html = R"(

)"sv }, + // Only width given: + TestCase { .markdown = "![](foo.png =100x)"sv, .expected_html = R"(

)"sv }, + // Only height given: + TestCase { .markdown = "![](foo.png =x200)"sv, .expected_html = R"(

)"sv }, + // Both width and height given + TestCase { .markdown = "![](foo.png =50x25)"sv, .expected_html = R"(

)"sv }, + // Size contains invalid width + TestCase { .markdown = "![](foo.png =1oox50)"sv, .expected_html = R"(

)"sv }, + // Size contains invalid height + TestCase { .markdown = "![](foo.png =900xfour)"sv, .expected_html = R"(

)"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); + } +}