annotate UnitTestsSources/Plustache.cpp @ 825:d8f5de5b9517 templating

partials
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 28 May 2014 17:54:59 +0200
parents da4c30a8bcdd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
823
da4c30a8bcdd plustache
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 #include "gtest/gtest.h"
da4c30a8bcdd plustache
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2
da4c30a8bcdd plustache
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
3 #include <include/template.hpp>
da4c30a8bcdd plustache
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4
825
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
5
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
6 class OrthancPlustache : public Plustache::template_t
823
da4c30a8bcdd plustache
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 {
825
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
8 public:
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
9 protected:
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
10 virtual std::string get_template(const std::string& tmpl)
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
11 {
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
12 //printf("OK [%s]\n", tmpl.c_str());
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
13 return Plustache::template_t::get_template(tmpl);
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
14 }
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
15
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
16 virtual std::string get_partial(const std::string& partial) const
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
17 {
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
18 //printf("OK2 [%s]\n", partial.c_str());
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
19 //return Plustache::template_t::get_partial(partial);
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
20 return "<li>{{name}}</li>";
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
21 }
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
22 };
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
23
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
24
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
25 TEST(Plustache, Basic1)
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
26 {
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
27 PlustacheTypes::ObjectType ctx;
823
da4c30a8bcdd plustache
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
28 ctx["title"] = "About";
da4c30a8bcdd plustache
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
29
825
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
30 OrthancPlustache t;
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
31 ASSERT_EQ("<h1>About</h1>", t.render("<h1>{{title}}</h1>", ctx));
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
32 }
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
33
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
34
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
35 TEST(Plustache, Basic2)
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
36 {
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
37 Plustache::Context ctx;
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
38 ctx.add("title", "About");
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
39
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
40 OrthancPlustache t;
823
da4c30a8bcdd plustache
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
41 ASSERT_EQ("<h1>About</h1>", t.render("<h1>{{title}}</h1>", ctx));
da4c30a8bcdd plustache
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
42 }
da4c30a8bcdd plustache
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
43
825
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
44
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
45 TEST(Plustache, Context)
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
46 {
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
47 PlustacheTypes::ObjectType a;
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
48 a["name"] = "Orthanc";
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
49
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
50 PlustacheTypes::ObjectType b;
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
51 b["name"] = "Jodogne";
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
52
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
53 PlustacheTypes::CollectionType c;
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
54 c.push_back(a);
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
55 c.push_back(b);
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
56
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
57 Plustache::Context ctx;
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
58 ctx.add("items", c);
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
59
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
60 OrthancPlustache t;
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
61 ASSERT_EQ("<ul><li>Orthanc</li><li>Jodogne</li></ul>",
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
62 t.render("<ul>{{#items}}<li>{{name}}</li>{{/items}}</ul>", ctx));
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
63 }
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
64
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
65
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
66 TEST(Plustache, Partials)
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
67 {
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
68 PlustacheTypes::ObjectType a;
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
69 a["name"] = "Orthanc";
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
70
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
71 PlustacheTypes::ObjectType b;
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
72 b["name"] = "Jodogne";
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
73
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
74 PlustacheTypes::CollectionType c;
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
75 c.push_back(a);
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
76 c.push_back(b);
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
77
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
78 Plustache::Context ctx;
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
79 ctx.add("items", c);
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
80
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
81 OrthancPlustache t;
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
82 ASSERT_EQ("<ul><li>Orthanc</li><li>Jodogne</li></ul>",
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
83 t.render("<ul>{{#items}}{{>partial}}{{/items}}</ul>", ctx));
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
84 }
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
85
d8f5de5b9517 partials
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 823
diff changeset
86