File: ehtml_SUITE.erl

package info (click to toggle)
yaws 2.1.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 8,012 kB
  • sloc: erlang: 42,153; sh: 2,501; javascript: 1,459; makefile: 968; ansic: 890; lisp: 79; python: 34; xml: 12; php: 1
file content (146 lines) | stat: -rw-r--r-- 4,172 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
-module(ehtml_SUITE).

-include("testsuite.hrl").

-compile(export_all).

all() ->
    [
     void_element,
     non_void_element,
     attributes,
     simple_fun,
     mfa,
     nested_fun,
     nested_mfa,
     simple_attr,
     mfa_attr,
     nested_attr,
     nested_mfa_attr
    ].

groups() ->
[
].

%%====================================================================
init_per_suite(Config) ->
    Config.

end_per_suite(_Config) ->
    ok.

init_per_group(_Group, Config) ->
    Config.

end_per_group(_Group, _Config) ->
    ok.

init_per_testcase(_Test, Config) ->
    Config.

end_per_testcase(_Test, _Config) ->
    ok.

%%====================================================================
void_element(_Config) ->
    %% No end tag (</tag>) for void elements in HTML5.
    {ehtml, E1} = {ehtml, [{img, [{src, "foo.png"}, {alt, "foo"}]}]},
    Img = "<img src=\"foo.png\" alt=\"foo\" />",
    ?assertEqual(Img, lists:flatten(yaws_api:ehtml_expand(E1))),
    {ehtml, E2} = {ehtml, [{br}]},
    Br = "<br />",
    ?assertEqual(Br,lists:flatten(yaws_api:ehtml_expand(E2))),
    ok.

non_void_element(_Config) ->
    %% No self-closing syntax (/>) for non-void elements in HTML5.
    {ehtml, E} = {ehtml, [{p}]},
    P = "<p></p>",
    ?assertEqual(P, lists:flatten(yaws_api:ehtml_expand(E))),
    ok.

attributes(_Config) ->
    {ehtml, E1} = {ehtml, [{img, [{check, src, <<"quote\".png">>},
                                  {check, width, 10},
                                  {height, 20},
                                  {check, alt, "quote\""}]}]},
    Img = <<"<img src='quote\".png' width=\"10\" height=\"20\" alt='quote\"' />">>,
    ?assertEqual(Img, iolist_to_binary(yaws_api:ehtml_expand(E1))),
    {ehtml, E2} = {ehtml, [{a, [{href, <<"test">>}], <<"test link">>}]},
    A = <<"<a href=\"test\">test link</a>">>,
    ?assertEqual(A, iolist_to_binary(yaws_api:ehtml_expand(E2))),
    ok.

get_title() ->
    "Funtest Title".

simple_fun(_Config) ->
    {ehtml, E} = {ehtml, [{title, [], fun get_title/0}]},
    Title = "\n<title>" ++ get_title() ++ "</title>",
    ?assertEqual(Title, lists:flatten(yaws_api:ehtml_expand(E))),
    ok.

mfa_fun(Args) ->
    Args.

mfa(_Config) ->
    Args = ["another ", "string"],
    {ehtml, E} = {ehtml, [{p, [], {?MODULE, mfa_fun, Args}}]},
    P = lists:flatten(["\n<p>", Args, "</p>"]),
    ?assertEqual(P, lists:flatten(yaws_api:ehtml_expand(E))),
    ok.

nested_fun(_Config) ->
    Value = "paragraph",
    {ehtml, E} = {ehtml, [fun() -> [{p, [], Value}] end]},
    P = lists:flatten(["\n<p>", Value, "</p>"]),
    ?assertEqual(P, lists:flatten(yaws_api:ehtml_expand(E))),
    ok.

nested_mfa_fun(Args) ->
    fun() -> [{p, [], fun() -> Args end}] end.

nested_mfa(_Config) ->
    Args = ["another ", "string"],
    {ehtml, E} = {ehtml, [{?MODULE, nested_mfa_fun, Args}]},
    P = lists:flatten(["\n<p>", Args, "</p>"]),
    ?assertEqual(P, lists:flatten(yaws_api:ehtml_expand(E))),
    ok.

get_link() ->
    "http://yaws.hyber.org/".

simple_attr(_Config) ->
    Link = "link",
    {ehtml, E} = {ehtml, [{a, [{href, fun get_link/0}], Link}]},
    A = lists:flatten(["<a href=\"", get_link(), "\">", Link, "</a>"]),
    ?assertEqual(A, lists:flatten(yaws_api:ehtml_expand(E))),
    ok.

mfa_attr(_Config) ->
    Args = [get_link()],
    Link = "link",
    {ehtml, E} = {ehtml, [{a, [{href, {?MODULE, mfa_fun, Args}}], Link}]},
    A = lists:flatten(["<a href=\"", Args, "\">", Link, "</a>"]),
    ?assertEqual(A, lists:flatten(yaws_api:ehtml_expand(E))),
    ok.

nested_attr(_Config) ->
    Link = "link",
    {ehtml, E} = {ehtml, [{a, [{href, fun() -> fun get_link/0 end}], Link}]},
    A = lists:flatten(["<a href=\"", get_link(), "\">", Link, "</a>"]),
    ?assertEqual(A, lists:flatten(yaws_api:ehtml_expand(E))),
    ok.

nested_mfa_attr_fun(Args) ->
    {?MODULE, mfa_fun, Args}.

nested_mfa_attr(_Config) ->
    Args = [get_link()],
    Link = "link",
    {ehtml, E} = {ehtml,
                  [{a, [{href, {?MODULE, nested_mfa_attr_fun, Args}}], Link}]},
    A = lists:flatten(["<a href=\"", Args, "\">", Link, "</a>"]),
    ?assertEqual(A, lists:flatten(yaws_api:ehtml_expand(E))),
    ok.