View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.juneau.bean.html5;
18  
19  import static org.apache.juneau.bean.html5.HtmlBuilder.*;
20  import static org.apache.juneau.junit.bct.BctAssertions.*;
21  
22  import org.apache.juneau.*;
23  import org.apache.juneau.html.*;
24  import org.junit.jupiter.api.*;
25  
26  class Audio_Test extends TestBase {
27  
28  	@Test void a01_basicSetters() {
29  		Audio x = audio()
30  			.autoplay("a")
31  			.controls("b")
32  			.crossorigin("c")
33  			.loop("d")
34  			.mediagroup("e")
35  			.muted("f")
36  			.preload("g")
37  			.src("h")
38  			._class("i")
39  			.accesskey("j")
40  			.contenteditable("k")
41  			.dir("l")
42  			.hidden("m")
43  			.id("n")
44  			.lang("o")
45  			.onabort("p")
46  			.onblur("q")
47  			.oncancel("r")
48  			.oncanplay("s")
49  			.oncanplaythrough("t")
50  			.onchange("u")
51  			.onclick("v")
52  			.oncuechange("w")
53  			.ondblclick("x")
54  			.ondurationchange("y")
55  			.onemptied("z")
56  			.onended("aa")
57  			.onerror("ab")
58  			.onfocus("ac")
59  			.oninput("ad")
60  			.oninvalid("ae")
61  			.onkeydown("af")
62  			.onkeypress("ag")
63  			.onkeyup("ah")
64  			.onload("ai")
65  			.onloadeddata("aj")
66  			.onloadedmetadata("ak")
67  			.onloadstart("al")
68  			.onmousedown("am")
69  			.onmouseenter("an")
70  			.onmouseleave("ao")
71  			.onmousemove("ap")
72  			.onmouseout("aq")
73  			.onmouseover("ar")
74  			.onmouseup("as")
75  			.onmousewheel("at")
76  			.onpause("au")
77  			.onplay("av")
78  			.onplaying("aw")
79  			.onprogress("ax")
80  			.onratechange("ay")
81  			.onreset("az")
82  			.onresize("ba")
83  			.onscroll("bb")
84  			.onseeked("bc")
85  			.onseeking("bd")
86  			.onselect("be")
87  			.onshow("bf")
88  			.onstalled("bg")
89  			.onsubmit("bh")
90  			.onsuspend("bi")
91  			.ontimeupdate("bj")
92  			.ontoggle("bk")
93  			.onvolumechange("bl")
94  			.onwaiting("bm")
95  			.spellcheck("bn")
96  			.style("bo")
97  			.tabindex("bp")
98  			.title("bq")
99  			.translate("br")
100 			.child("child1")
101 			.children("bs", strong("bt"));
102 
103 		assertString(
104 			"<audio autoplay='a' controls='b' crossorigin='c' loop='d' mediagroup='e' muted='f' preload='g' src='h' class='i' accesskey='j' contenteditable='k' dir='l' hidden='m' id='n' lang='o' onabort='p' onblur='q' oncancel='r' oncanplay='s' oncanplaythrough='t' onchange='u' onclick='v' oncuechange='w' ondblclick='x' ondurationchange='y' onemptied='z' onended='aa' onerror='ab' onfocus='ac' oninput='ad' oninvalid='ae' onkeydown='af' onkeypress='ag' onkeyup='ah' onload='ai' onloadeddata='aj' onloadedmetadata='ak' onloadstart='al' onmousedown='am' onmouseenter='an' onmouseleave='ao' onmousemove='ap' onmouseout='aq' onmouseover='ar' onmouseup='as' onmousewheel='at' onpause='au' onplay='av' onplaying='aw' onprogress='ax' onratechange='ay' onreset='az' onresize='ba' onscroll='bb' onseeked='bc' onseeking='bd' onselect='be' onshow='bf' onstalled='bg' onsubmit='bh' onsuspend='bi' ontimeupdate='bj' ontoggle='bk' onvolumechange='bl' onwaiting='bm' spellcheck='bn' style='bo' tabindex='bp' title='bq' translate='br'>child1bs<strong>bt</strong></audio>",
105 			x
106 		);
107 	}
108 
109 	@Test void a02_emptyBean() {
110 		assertString("<audio></audio>", audio());
111 	}
112 
113 	@Test void a03_otherConstructors() {
114 		Audio x1 = new Audio("a");
115 		assertString("<audio src='a'></audio>", x1);
116 
117 	}
118 
119 	@Test void a04_textNodeDelimiter() {
120 		// Test default behavior (no delimiter)
121 		Audio x1 = audio().children("a", "b", strong("c"));
122 		assertString("<audio>ab<strong>c</strong></audio>", x1);
123 
124 		// Test with space delimiter
125 		HtmlSerializer serializer = HtmlSerializer.create()
126 			.textNodeDelimiter(" ")
127 			.disableJsonTags()
128 			.build();
129 		Audio x2 = audio().children("a", "b", strong("c"));
130 		assertString("<audio>a b<strong>c</strong></audio>", serializer.toString(x2));
131 
132 		// Test with custom delimiter
133 		HtmlSerializer serializer2 = HtmlSerializer.create()
134 			.textNodeDelimiter(" | ")
135 			.disableJsonTags()
136 			.build();
137 		Audio x3 = audio().children("a", "b", strong("c"));
138 		assertString("<audio>a | b<strong>c</strong></audio>", serializer2.toString(x3));
139 
140 		// Test that delimiter is not added between text and element
141 		Audio x4 = audio().children("text", strong("bold"));
142 		assertString("<audio>text<strong>bold</strong></audio>", serializer.toString(x4));
143 
144 		// Test with element between text nodes
145 		Audio x5 = audio().children("before", strong("middle"), "after");
146 		assertString("<audio>before<strong>middle</strong>after</audio>", serializer.toString(x5));
147 	}
148 }