View Javadoc
1   /*
2    * Copyright (c) 2002-2025 Gargoyle Software Inc.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * https://www.apache.org/licenses/LICENSE-2.0
8    *
9    * Unless required by applicable law or agreed to in writing, software
10   * distributed under the License is distributed on an "AS IS" BASIS,
11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   * See the License for the specific language governing permissions and
13   * limitations under the License.
14   */
15  package org.htmlunit.html;
16  
17  import java.util.concurrent.atomic.AtomicInteger;
18  
19  import org.htmlunit.SimpleWebTestCase;
20  import org.htmlunit.junit.BrowserRunner;
21  import org.htmlunit.util.MimeType;
22  import org.htmlunit.xml.XmlPage;
23  import org.junit.Test;
24  import org.junit.runner.RunWith;
25  
26  /**
27   * Tests for {@link DomElement}.
28   *
29   * @author Ronald Brill
30   */
31  @RunWith(BrowserRunner.class)
32  public final class DomElement2Test extends SimpleWebTestCase {
33  
34      /**
35       * @throws Exception if the test fails
36       */
37      @Test
38      public void isMouseOver() throws Exception {
39          final String html = DOCTYPE_HTML
40                  + "<html>\n"
41                  + "<head></head>\n"
42                  + "<body>\n"
43                  + "  <div id='d1'>\n"
44                  + "    <div id='d2'>\n"
45                  + "      <div id='d3'>\n"
46                  + "      </div>\n"
47                  + "    </div>\n"
48                  + "    <div id='d4'>\n"
49                  + "    </div>\n"
50                  + "  </div>\n"
51                  + "</body></html>";
52  
53          HtmlPage page = loadPage(html);
54          assertFalse(page.getElementById("d1").isMouseOver());
55          assertFalse(page.getElementById("d2").isMouseOver());
56          assertFalse(page.getElementById("d3").isMouseOver());
57          assertFalse(page.getElementById("d4").isMouseOver());
58  
59          page = loadPage(html);
60          page.getElementById("d1").mouseOver();
61          assertTrue(page.getElementById("d1").isMouseOver());
62          assertFalse(page.getElementById("d2").isMouseOver());
63          assertFalse(page.getElementById("d3").isMouseOver());
64          assertFalse(page.getElementById("d4").isMouseOver());
65  
66          page = loadPage(html);
67          page.getElementById("d2").mouseOver();
68          assertTrue(page.getElementById("d1").isMouseOver());
69          assertTrue(page.getElementById("d2").isMouseOver());
70          assertFalse(page.getElementById("d3").isMouseOver());
71          assertFalse(page.getElementById("d4").isMouseOver());
72  
73          page = loadPage(html);
74          page.getElementById("d3").mouseOver();
75          assertTrue(page.getElementById("d1").isMouseOver());
76          assertTrue(page.getElementById("d2").isMouseOver());
77          assertTrue(page.getElementById("d3").isMouseOver());
78          assertFalse(page.getElementById("d4").isMouseOver());
79  
80          page = loadPage(html);
81          page.getElementById("d4").mouseOver();
82          assertTrue(page.getElementById("d1").isMouseOver());
83          assertFalse(page.getElementById("d2").isMouseOver());
84          assertFalse(page.getElementById("d3").isMouseOver());
85          assertTrue(page.getElementById("d4").isMouseOver());
86      }
87  
88      /**
89       * Test case for Bug #1905.
90       *
91       * @throws Exception if the test fails
92       */
93      @Test
94      public void getChildElements() throws Exception {
95          final String xml = "<events>\n"
96                  + "  <something/>\n"
97                  + "</events>";
98          getMockWebConnection().setDefaultResponse(xml, MimeType.TEXT_XML);
99          getWebClient().setWebConnection(getMockWebConnection());
100         final XmlPage page = getWebClient().getPage(URL_FIRST);
101         final DomElement root = page.getDocumentElement();
102         final AtomicInteger count = new AtomicInteger(0);
103         root.getChildElements().forEach(e -> count.incrementAndGet());
104         assertEquals(1, count.get());
105 
106         count.set(0);
107         root.getChildren().forEach(e -> count.incrementAndGet());
108         assertEquals(3, count.get());
109     }
110 }