add regression test for html

This commit is contained in:
Simon Cruanes 2022-03-16 22:27:30 -04:00
parent b387aa731d
commit 5c1a7310ee
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4
4 changed files with 782 additions and 0 deletions

22
tests/html/dune Normal file
View file

@ -0,0 +1,22 @@
(executable
(libraries tiny_httpd)
(name makehtml))
(rule
(targets t1.out.html)
(deps (:bin ./makehtml.exe))
(action (with-stdout-to %{targets} (run %{bin} 1))))
(rule
(alias runtest)
(action (diff t1.expected.html t1.out.html)))
(rule
(targets t2.out.html)
(deps (:bin ./makehtml.exe))
(action (with-stdout-to %{targets} (run %{bin} 2))))
(rule
(alias runtest)
(action (diff t2.expected.html t2.out.html)))

34
tests/html/makehtml.ml Normal file
View file

@ -0,0 +1,34 @@
open Tiny_httpd_html
let spf = Printf.sprintf
let t1() =
html [] [
head [] [];
body [] [
ul [A.style "list-style: circle"] (
List.init 100 (fun i -> li [A.id (spf "l%d" i)] [txt (spf "item %d" i)])
)
]
]
let t2() =
html [] [
head [] [];
body [] [
ul' [A.style "list-style: circle"] (fun buf ->
for i=0 to 99 do
li [A.id (spf "l%d" i)] [txt (spf "item %d" i)] buf
done
)
]
]
let render t =
print_endline @@ to_string_top @@ t
let () =
match Sys.argv.(1) with
| "1" -> render @@ t1()
| "2" -> render @@ t2()
| _ -> failwith "unknown cmd"

413
tests/html/t1.expected.html Normal file
View file

@ -0,0 +1,413 @@
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<ul style="list-style: circle">
<li id="l0">
item 0
</li>
<li id="l1">
item 1
</li>
<li id="l2">
item 2
</li>
<li id="l3">
item 3
</li>
<li id="l4">
item 4
</li>
<li id="l5">
item 5
</li>
<li id="l6">
item 6
</li>
<li id="l7">
item 7
</li>
<li id="l8">
item 8
</li>
<li id="l9">
item 9
</li>
<li id="l10">
item 10
</li>
<li id="l11">
item 11
</li>
<li id="l12">
item 12
</li>
<li id="l13">
item 13
</li>
<li id="l14">
item 14
</li>
<li id="l15">
item 15
</li>
<li id="l16">
item 16
</li>
<li id="l17">
item 17
</li>
<li id="l18">
item 18
</li>
<li id="l19">
item 19
</li>
<li id="l20">
item 20
</li>
<li id="l21">
item 21
</li>
<li id="l22">
item 22
</li>
<li id="l23">
item 23
</li>
<li id="l24">
item 24
</li>
<li id="l25">
item 25
</li>
<li id="l26">
item 26
</li>
<li id="l27">
item 27
</li>
<li id="l28">
item 28
</li>
<li id="l29">
item 29
</li>
<li id="l30">
item 30
</li>
<li id="l31">
item 31
</li>
<li id="l32">
item 32
</li>
<li id="l33">
item 33
</li>
<li id="l34">
item 34
</li>
<li id="l35">
item 35
</li>
<li id="l36">
item 36
</li>
<li id="l37">
item 37
</li>
<li id="l38">
item 38
</li>
<li id="l39">
item 39
</li>
<li id="l40">
item 40
</li>
<li id="l41">
item 41
</li>
<li id="l42">
item 42
</li>
<li id="l43">
item 43
</li>
<li id="l44">
item 44
</li>
<li id="l45">
item 45
</li>
<li id="l46">
item 46
</li>
<li id="l47">
item 47
</li>
<li id="l48">
item 48
</li>
<li id="l49">
item 49
</li>
<li id="l50">
item 50
</li>
<li id="l51">
item 51
</li>
<li id="l52">
item 52
</li>
<li id="l53">
item 53
</li>
<li id="l54">
item 54
</li>
<li id="l55">
item 55
</li>
<li id="l56">
item 56
</li>
<li id="l57">
item 57
</li>
<li id="l58">
item 58
</li>
<li id="l59">
item 59
</li>
<li id="l60">
item 60
</li>
<li id="l61">
item 61
</li>
<li id="l62">
item 62
</li>
<li id="l63">
item 63
</li>
<li id="l64">
item 64
</li>
<li id="l65">
item 65
</li>
<li id="l66">
item 66
</li>
<li id="l67">
item 67
</li>
<li id="l68">
item 68
</li>
<li id="l69">
item 69
</li>
<li id="l70">
item 70
</li>
<li id="l71">
item 71
</li>
<li id="l72">
item 72
</li>
<li id="l73">
item 73
</li>
<li id="l74">
item 74
</li>
<li id="l75">
item 75
</li>
<li id="l76">
item 76
</li>
<li id="l77">
item 77
</li>
<li id="l78">
item 78
</li>
<li id="l79">
item 79
</li>
<li id="l80">
item 80
</li>
<li id="l81">
item 81
</li>
<li id="l82">
item 82
</li>
<li id="l83">
item 83
</li>
<li id="l84">
item 84
</li>
<li id="l85">
item 85
</li>
<li id="l86">
item 86
</li>
<li id="l87">
item 87
</li>
<li id="l88">
item 88
</li>
<li id="l89">
item 89
</li>
<li id="l90">
item 90
</li>
<li id="l91">
item 91
</li>
<li id="l92">
item 92
</li>
<li id="l93">
item 93
</li>
<li id="l94">
item 94
</li>
<li id="l95">
item 95
</li>
<li id="l96">
item 96
</li>
<li id="l97">
item 97
</li>
<li id="l98">
item 98
</li>
<li id="l99">
item 99
</li>
</ul>
</body>
</html>

313
tests/html/t2.expected.html Normal file
View file

@ -0,0 +1,313 @@
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<ul style="list-style: circle">
<li id="l0">
item 0
</li>
<li id="l1">
item 1
</li>
<li id="l2">
item 2
</li>
<li id="l3">
item 3
</li>
<li id="l4">
item 4
</li>
<li id="l5">
item 5
</li>
<li id="l6">
item 6
</li>
<li id="l7">
item 7
</li>
<li id="l8">
item 8
</li>
<li id="l9">
item 9
</li>
<li id="l10">
item 10
</li>
<li id="l11">
item 11
</li>
<li id="l12">
item 12
</li>
<li id="l13">
item 13
</li>
<li id="l14">
item 14
</li>
<li id="l15">
item 15
</li>
<li id="l16">
item 16
</li>
<li id="l17">
item 17
</li>
<li id="l18">
item 18
</li>
<li id="l19">
item 19
</li>
<li id="l20">
item 20
</li>
<li id="l21">
item 21
</li>
<li id="l22">
item 22
</li>
<li id="l23">
item 23
</li>
<li id="l24">
item 24
</li>
<li id="l25">
item 25
</li>
<li id="l26">
item 26
</li>
<li id="l27">
item 27
</li>
<li id="l28">
item 28
</li>
<li id="l29">
item 29
</li>
<li id="l30">
item 30
</li>
<li id="l31">
item 31
</li>
<li id="l32">
item 32
</li>
<li id="l33">
item 33
</li>
<li id="l34">
item 34
</li>
<li id="l35">
item 35
</li>
<li id="l36">
item 36
</li>
<li id="l37">
item 37
</li>
<li id="l38">
item 38
</li>
<li id="l39">
item 39
</li>
<li id="l40">
item 40
</li>
<li id="l41">
item 41
</li>
<li id="l42">
item 42
</li>
<li id="l43">
item 43
</li>
<li id="l44">
item 44
</li>
<li id="l45">
item 45
</li>
<li id="l46">
item 46
</li>
<li id="l47">
item 47
</li>
<li id="l48">
item 48
</li>
<li id="l49">
item 49
</li>
<li id="l50">
item 50
</li>
<li id="l51">
item 51
</li>
<li id="l52">
item 52
</li>
<li id="l53">
item 53
</li>
<li id="l54">
item 54
</li>
<li id="l55">
item 55
</li>
<li id="l56">
item 56
</li>
<li id="l57">
item 57
</li>
<li id="l58">
item 58
</li>
<li id="l59">
item 59
</li>
<li id="l60">
item 60
</li>
<li id="l61">
item 61
</li>
<li id="l62">
item 62
</li>
<li id="l63">
item 63
</li>
<li id="l64">
item 64
</li>
<li id="l65">
item 65
</li>
<li id="l66">
item 66
</li>
<li id="l67">
item 67
</li>
<li id="l68">
item 68
</li>
<li id="l69">
item 69
</li>
<li id="l70">
item 70
</li>
<li id="l71">
item 71
</li>
<li id="l72">
item 72
</li>
<li id="l73">
item 73
</li>
<li id="l74">
item 74
</li>
<li id="l75">
item 75
</li>
<li id="l76">
item 76
</li>
<li id="l77">
item 77
</li>
<li id="l78">
item 78
</li>
<li id="l79">
item 79
</li>
<li id="l80">
item 80
</li>
<li id="l81">
item 81
</li>
<li id="l82">
item 82
</li>
<li id="l83">
item 83
</li>
<li id="l84">
item 84
</li>
<li id="l85">
item 85
</li>
<li id="l86">
item 86
</li>
<li id="l87">
item 87
</li>
<li id="l88">
item 88
</li>
<li id="l89">
item 89
</li>
<li id="l90">
item 90
</li>
<li id="l91">
item 91
</li>
<li id="l92">
item 92
</li>
<li id="l93">
item 93
</li>
<li id="l94">
item 94
</li>
<li id="l95">
item 95
</li>
<li id="l96">
item 96
</li>
<li id="l97">
item 97
</li>
<li id="l98">
item 98
</li>
<li id="l99">
item 99
</li>
</ul>
</body>
</html>