diff --git a/Tests/Data/UnitTests/template_basic.rml b/Tests/Data/UnitTests/template_basic.rml new file mode 100644 index 000000000..507da21d8 --- /dev/null +++ b/Tests/Data/UnitTests/template_basic.rml @@ -0,0 +1,7 @@ + diff --git a/Tests/Source/UnitTests/Template.cpp b/Tests/Source/UnitTests/Template.cpp index 3067d649f..5842b58a1 100644 --- a/Tests/Source/UnitTests/Template.cpp +++ b/Tests/Source/UnitTests/Template.cpp @@ -51,13 +51,42 @@ static const String document_body_template_rml = R"( -

A paragraph

+

A paragraph

)"; static const String p_address_body_template = "p#p < div#content < div#window < body#body.window < #root#main"; +static const String document_body_and_inline_template_rml = R"( + + + + + + + + +

A paragraph

+
+ +
+ +
+)"; + +static const String span_address_body_template = "span#span < p#text < div#basic_wrapper < div#content < div#window < body#body.window < #root#main"; + static const String document_inline_template_rml = R"( @@ -86,6 +115,40 @@ static const String document_inline_template_rml = R"( static const String p_address_inline_template = "p#p < div#content < div#window < div#template_parent < body#body.inline < #root#main"; +static const String document_double_inline_template_rml = R"( + + + + + + + + +

Paragraph outside the window.

+
+ +
+ +
+
+ +
+)"; + +static const String span_address_inline_template = "span#span < p#text < div#basic_wrapper < div#template_parent < body#body.inline < #root#main"; + TEST_CASE("template") { Context* context = TestsShell::GetContext(); @@ -95,22 +158,31 @@ TEST_CASE("template") { INFO("Expected warning: Body 'class' attribute overridden by template."); TestsShell::SetNumExpectedWarnings(1); - ElementDocument* document = context->LoadDocumentFromMemory(document_body_template_rml); - REQUIRE(document); TestsShell::SetNumExpectedWarnings(0); document->Show(); + TestsShell::RenderLoop(); - context->Update(); - context->Render(); + Element* el_p = document->GetElementById("p"); + REQUIRE(el_p); + CHECK(el_p->GetAddress() == p_address_body_template); + document->Close(); + } + + SUBCASE("body+inline") + { + ElementDocument* document = context->LoadDocumentFromMemory(document_body_and_inline_template_rml); + document->Show(); TestsShell::RenderLoop(); Element* el_p = document->GetElementById("p"); + Element* el_span = document->GetElementById("span"); REQUIRE(el_p); - + REQUIRE(el_span); CHECK(el_p->GetAddress() == p_address_body_template); + CHECK(el_span->GetAddress() == span_address_body_template); document->Close(); } @@ -118,18 +190,28 @@ TEST_CASE("template") SUBCASE("inline") { ElementDocument* document = context->LoadDocumentFromMemory(document_inline_template_rml); - REQUIRE(document); document->Show(); + TestsShell::RenderLoop(); + + Element* el_p = document->GetElementById("p"); + REQUIRE(el_p); + CHECK(el_p->GetAddress() == p_address_inline_template); - context->Update(); - context->Render(); + document->Close(); + } + SUBCASE("inline+inline") + { + ElementDocument* document = context->LoadDocumentFromMemory(document_double_inline_template_rml); + document->Show(); TestsShell::RenderLoop(); Element* el_p = document->GetElementById("p"); + Element* el_span = document->GetElementById("span"); REQUIRE(el_p); - + REQUIRE(el_span); CHECK(el_p->GetAddress() == p_address_inline_template); + CHECK(el_span->GetAddress() == span_address_inline_template); document->Close(); }