1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.html;
16
17 import java.util.Iterator;
18
19 import org.htmlunit.SimpleWebTestCase;
20 import org.junit.jupiter.api.Test;
21 import org.xml.sax.helpers.AttributesImpl;
22
23
24
25
26
27
28
29
30
31
32 public class DefaultElementFactoryTest extends SimpleWebTestCase {
33
34
35
36
37
38 @Test
39 public void attributeOrder() throws Exception {
40
41 final String html = DOCTYPE_HTML
42 + "<html><head><title>test page</title></head>\n"
43 + "<body><div>test message</div></body></html>";
44
45
46 final HtmlPage htmlPage = loadPage(html);
47
48
49 final AttributesImpl atts = new AttributesImpl();
50 atts.addAttribute(null, "href", "href", null, "http://www.google.com");
51 atts.addAttribute(null, "tabindex", "tabindex", null, "2");
52 atts.addAttribute(null, "accesskey", "accesskey", null, "F");
53
54
55 final DefaultElementFactory defaultElementFactory = new DefaultElementFactory();
56
57
58 final HtmlAnchor anchor = (HtmlAnchor) defaultElementFactory.createElement(htmlPage, "a", atts);
59
60 verifyAttributes(anchor);
61 }
62
63
64
65
66 private static void verifyAttributes(final HtmlAnchor anchor) {
67
68 final Iterator<DomAttr> attributeEntriesIterator = anchor.getAttributesMap().values().iterator();
69
70
71 DomAttr htmlAttr = attributeEntriesIterator.next();
72 assertEquals("href", htmlAttr.getNodeName());
73 assertEquals("http://www.google.com", htmlAttr.getValue());
74
75 htmlAttr = attributeEntriesIterator.next();
76 assertEquals("tabindex", htmlAttr.getNodeName());
77 assertEquals("2", htmlAttr.getValue());
78
79 htmlAttr = attributeEntriesIterator.next();
80 assertEquals("accesskey", htmlAttr.getNodeName());
81 assertEquals("F", htmlAttr.getValue());
82 }
83
84
85
86
87
88 @Test
89 public void attributeOrderLive() throws Exception {
90 final String html = DOCTYPE_HTML
91 + "<html><body>\n"
92 + "<a href='http://www.google.com' tabindex='2' accesskey='F'>foo</a>\n"
93 + "</body></html>";
94 final HtmlPage page = loadPage(html);
95 final HtmlAnchor anchor = page.getAnchorByText("foo");
96
97 verifyAttributes(anchor);
98 }
99 }