diff options
author | Peter Elliott <pelliott@ualberta.ca> | 2021-08-29 13:19:12 -0700 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-08-31 16:53:51 +0200 |
commit | 8d2c04821ff751fd6971154fe062392ae5116c33 (patch) | |
tree | 9b34f672a6961b4f1e0f64167ea876a15dcd577a /Tests | |
parent | 57ec19f963868402571f6dfaaf8b2e71a47e0db7 (diff) | |
download | serenity-8d2c04821ff751fd6971154fe062392ae5116c33.zip |
Tests: Test LibMarkdown against commonmark test suite
TestCommonmark runs the CommonMark test suite
(https://spec.commonmark.org/0.30/spec.json) against LibMarkdown.
Currently 44/652 tests pass.
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Tests/LibMarkdown/CMakeLists.txt | 6 | ||||
-rw-r--r-- | Tests/LibMarkdown/TestCommonmark.cpp | 46 |
3 files changed, 53 insertions, 0 deletions
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index e22f1b8e6f..6d6f35eb65 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -9,6 +9,7 @@ add_subdirectory(LibGfx) add_subdirectory(LibIMAP) add_subdirectory(LibJS) add_subdirectory(LibM) +add_subdirectory(LibMarkdown) add_subdirectory(LibPthread) add_subdirectory(LibRegex) add_subdirectory(LibSQL) diff --git a/Tests/LibMarkdown/CMakeLists.txt b/Tests/LibMarkdown/CMakeLists.txt new file mode 100644 index 0000000000..a9c5d179a1 --- /dev/null +++ b/Tests/LibMarkdown/CMakeLists.txt @@ -0,0 +1,6 @@ +include(${SERENITY_PROJECT_ROOT}/Meta/CMake/commonmark_spec.cmake) +file(GLOB TEST_SOURCES CONFIGURE_DEPENDS "*.cpp") + +foreach(source ${TEST_SOURCES}) + serenity_test(${source} LibMarkdown LIBS LibMarkdown) +endforeach() diff --git a/Tests/LibMarkdown/TestCommonmark.cpp b/Tests/LibMarkdown/TestCommonmark.cpp new file mode 100644 index 0000000000..764d206672 --- /dev/null +++ b/Tests/LibMarkdown/TestCommonmark.cpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2021, Peter Elliott <pelliott@ualberta.ca> + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include <AK/JsonArray.h> +#include <AK/JsonObject.h> +#include <AK/JsonParser.h> +#include <AK/String.h> +#include <LibCore/File.h> +#include <LibMarkdown/Document.h> +#include <LibTest/TestCase.h> +#include <LibTest/TestSuite.h> + +TEST_SETUP +{ + auto file = Core::File::construct("/home/anon/commonmark.spec.json"); + if (!file->open(Core::OpenMode::ReadOnly)) { + file = Core::File::construct("./commonmark.spec.json"); + VERIFY(file->open(Core::OpenMode::ReadOnly)); + } + + String test_data(file->read_all(), AK::ShouldChomp::NoChomp); + + auto tests = JsonParser(test_data).parse().value().as_array(); + for (size_t i = 0; i < tests.size(); ++i) { + auto testcase = tests[i].as_object(); + + auto name = String::formatted("{}_ex{}_{}..{}", + testcase.get("section"), + testcase.get("example"), + testcase.get("start_line"), + testcase.get("end_line")); + + String markdown = testcase.get("markdown").as_string(); + String html = testcase.get("html").as_string(); + + Test::TestSuite::the().add_case(adopt_ref(*new Test::TestCase( + name, [markdown, html]() { + auto document = Markdown::Document::parse(markdown); + EXPECT_EQ(document->render_to_inline_html(), html); + }, + false))); + } +} |