mstch/test/test_main.cpp

107 lines
3.2 KiB
C++
Raw Normal View History

2015-04-10 18:56:31 +08:00
#define CATCH_CONFIG_MAIN
2015-04-12 22:13:21 +08:00
#include "catch.hpp"
2015-05-04 20:29:15 +08:00
#include "json.hpp"
2015-04-12 21:35:13 +08:00
#include "mstch/mstch.hpp"
#include "test_context.hpp"
2015-04-12 21:35:13 +08:00
#include "test_data.hpp"
2015-05-04 20:29:15 +08:00
#include "specs_data.hpp"
2015-05-04 22:14:32 +08:00
#include "specs_lambdas.hpp"
2015-04-10 18:56:31 +08:00
2015-04-12 22:13:21 +08:00
using namespace mstchtest;
2015-04-12 23:11:49 +08:00
#define MSTCH_PARTIAL_TEST(x) TEST_CASE(#x) { \
2015-04-23 18:54:08 +08:00
REQUIRE(x ## _txt == mstch::render(x ## _mustache, x ## _data, {{"partial", x ## _partial}})); \
2015-04-12 23:11:49 +08:00
}
2015-04-12 22:13:21 +08:00
#define MSTCH_TEST(x) TEST_CASE(#x) { \
2015-04-23 18:54:08 +08:00
REQUIRE(x ## _txt == mstch::render(x ## _mustache, x ## _data)); \
2015-04-12 22:13:21 +08:00
}
2015-04-10 18:56:31 +08:00
2015-05-04 20:29:15 +08:00
#define SPECS_TEST(x) TEST_CASE("specs_" #x) { \
using boost::get; \
2015-10-12 19:03:20 +08:00
auto data = json::parse<mstch::node,mstch::map,mstch::array>(x ## _json); \
for(auto& test_item: get<mstch::array>(get<mstch::map>(data)["tests"])) {\
2015-05-04 20:29:15 +08:00
auto test = get<mstch::map>(test_item); \
std::map<std::string,std::string> partials; \
2015-10-12 19:03:20 +08:00
if(test.count("partials")) \
for(auto& partial_item: get<mstch::map>(test["partials"])) \
2015-05-04 20:29:15 +08:00
partials.insert(std::make_pair(partial_item.first, get<std::string>(partial_item.second))); \
2015-10-12 19:03:20 +08:00
for(auto& data_item: get<mstch::map>(test["data"])) \
if(data_item.first == "lambda") \
data_item.second = specs_lambdas[get<std::string>(test["name"])]; \
2015-05-04 20:29:15 +08:00
SECTION(get<std::string>(test["name"])) \
2015-10-12 19:03:20 +08:00
REQUIRE(mstch::render( \
get<std::string>(test["template"]), \
test["data"], partials) == \
2015-05-04 20:29:15 +08:00
get<std::string>(test["expected"])); \
} \
}
2015-04-12 22:13:21 +08:00
MSTCH_TEST(ampersand_escape)
MSTCH_TEST(apostrophe)
MSTCH_TEST(array_of_strings)
MSTCH_TEST(backslashes)
MSTCH_TEST(bug_11_eating_whitespace)
MSTCH_TEST(bug_length_property)
MSTCH_TEST(changing_delimiters)
2015-04-17 08:07:14 +08:00
MSTCH_TEST(comments)
MSTCH_TEST(complex)
2015-04-12 22:13:21 +08:00
MSTCH_TEST(context_lookup)
MSTCH_TEST(delimiters)
2015-04-12 22:13:21 +08:00
MSTCH_TEST(disappearing_whitespace)
2015-04-17 08:07:14 +08:00
MSTCH_TEST(dot_notation)
2015-04-12 22:13:21 +08:00
MSTCH_TEST(double_render)
MSTCH_TEST(empty_list)
MSTCH_TEST(empty_sections)
MSTCH_TEST(empty_string)
MSTCH_TEST(empty_template)
2015-04-27 16:37:11 +08:00
MSTCH_TEST(error_eof_in_section)
MSTCH_TEST(error_eof_in_tag)
2015-04-12 22:13:21 +08:00
MSTCH_TEST(error_not_found)
2015-04-17 08:07:14 +08:00
MSTCH_TEST(escaped)
2015-04-12 22:13:21 +08:00
MSTCH_TEST(falsy)
MSTCH_TEST(falsy_array)
MSTCH_TEST(grandparent_context)
2015-04-23 21:55:18 +08:00
MSTCH_TEST(higher_order_sections)
2015-04-12 22:13:21 +08:00
MSTCH_TEST(implicit_iterator)
MSTCH_TEST(included_tag)
MSTCH_TEST(inverted_section)
MSTCH_TEST(keys_with_questionmarks)
MSTCH_TEST(multiline_comment)
MSTCH_TEST(nested_dot)
2015-04-23 21:55:18 +08:00
MSTCH_TEST(nested_higher_order_sections)
2015-04-12 22:13:21 +08:00
MSTCH_TEST(nested_iterating)
MSTCH_TEST(nesting)
MSTCH_TEST(nesting_same_name)
MSTCH_TEST(null_lookup_array)
MSTCH_TEST(null_lookup_object)
2015-04-21 22:55:12 +08:00
MSTCH_TEST(null_string)
2015-04-12 22:13:21 +08:00
MSTCH_TEST(null_view)
2015-04-12 23:11:49 +08:00
MSTCH_PARTIAL_TEST(partial_array)
MSTCH_PARTIAL_TEST(partial_array_of_partials)
MSTCH_PARTIAL_TEST(partial_array_of_partials_implicit)
MSTCH_PARTIAL_TEST(partial_empty)
2015-04-17 08:07:14 +08:00
MSTCH_PARTIAL_TEST(partial_template)
2015-04-21 22:55:12 +08:00
MSTCH_PARTIAL_TEST(partial_view)
MSTCH_PARTIAL_TEST(partial_whitespace)
2015-04-12 22:13:21 +08:00
MSTCH_TEST(recursion_with_same_names)
MSTCH_TEST(reuse_of_enumerables)
MSTCH_TEST(section_as_context)
2015-04-23 21:55:18 +08:00
MSTCH_PARTIAL_TEST(section_functions_in_partials)
2015-04-21 22:55:12 +08:00
MSTCH_TEST(simple)
2015-04-12 22:13:21 +08:00
MSTCH_TEST(string_as_context)
MSTCH_TEST(two_in_a_row)
MSTCH_TEST(two_sections)
2015-04-17 08:07:14 +08:00
MSTCH_TEST(unescaped)
2015-04-12 22:13:21 +08:00
MSTCH_TEST(whitespace)
MSTCH_TEST(zero_view)
2015-05-04 20:29:15 +08:00
SPECS_TEST(comments)
SPECS_TEST(delimiters)
SPECS_TEST(interpolation)
SPECS_TEST(inverted)
SPECS_TEST(partials)
SPECS_TEST(sections)
2015-05-04 22:14:32 +08:00
SPECS_TEST(lambdas)