/* * This project is licensed under the MIT license. For more information see the * LICENSE file. */ #include #include "gmock/gmock.h" #include "maddy/orderedlistparser.h" // ----------------------------------------------------------------------------- class MADDY_ORDEREDLISTPARSER : public ::testing::Test { protected: std::shared_ptr olParser; void SetUp() override { std::function(const std::string& line)> getBlockParserForLineCallback = [](const std::string& line) { if (maddy::OrderedListParser::IsStartingLine(line)) { return std::static_pointer_cast( std::make_shared(nullptr, nullptr) ); } std::shared_ptr empty; return empty; }; this->olParser = std::make_shared( nullptr, getBlockParserForLineCallback ); } }; // ----------------------------------------------------------------------------- TEST_F(MADDY_ORDEREDLISTPARSER, IsStartingLineReturnsTrueWhenFacedWithBeginningOfList) { ASSERT_TRUE(maddy::OrderedListParser::IsStartingLine("1. a")); } TEST_F(MADDY_ORDEREDLISTPARSER, IsFinishedAlwaysReturnsFalseInTheBeginning) { ASSERT_FALSE(olParser->IsFinished()); } TEST_F(MADDY_ORDEREDLISTPARSER, ItReplacesMarkdownWithAnHtmlOrderedList) { std::vector markdown = { "1. a" , "* b" , "" }; std::string expected = "
  1. a
  2. b
"; for (std::string md : markdown) { olParser->AddLine(md); } ASSERT_TRUE(olParser->IsFinished()); std::stringstream& output(olParser->GetResult()); const std::string& outputString = output.str(); ASSERT_EQ(expected, outputString); } TEST_F(MADDY_ORDEREDLISTPARSER, ItReplacesMarkdownWithAnHierachicalHtmlList) { std::vector markdown = { "1. a" , " 1. d" , " * e" , "* b" , " 1. c" , "" }; std::string expected = "
  1. a
    1. d
    2. e
  2. b
    1. c
"; for (std::string md : markdown) { olParser->AddLine(md); } ASSERT_TRUE(olParser->IsFinished()); std::stringstream& output(olParser->GetResult()); const std::string& outputString = output.str(); ASSERT_EQ(expected, outputString); } TEST_F(MADDY_ORDEREDLISTPARSER, ItReplacesNumberedMarkdownListWithAnHtmlOrderedList) { std::vector markdown = { "1. a" , "94. b" , "103. c" , "" }; std::string expected = "
  1. a
  2. b
  3. c
"; for (std::string md : markdown) { olParser->AddLine(md); } ASSERT_TRUE(olParser->IsFinished()); std::stringstream& output(olParser->GetResult()); const std::string& outputString = output.str(); ASSERT_EQ(expected, outputString); }