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 org.htmlunit.SimpleWebTestCase;
18  import org.htmlunit.junit.BrowserRunner;
19  import org.junit.Test;
20  import org.junit.runner.RunWith;
21  
22  /**
23   * Tests for {@link HtmlDivision}.
24   *
25   * @author Ahmed Ashour
26   * @author Marc Guillemot
27   * @author Ronald Brill
28   */
29  @RunWith(BrowserRunner.class)
30  public class HtmlDivisionTest extends SimpleWebTestCase {
31  
32      /**
33       * @throws Exception if the test fails
34       */
35      @Test
36      public void asNormalizedText() throws Exception {
37          String expected = "hello\nworld";
38          testAsNormalizedText(expected, "<div>hello</div>world");
39          testAsNormalizedText(expected, "<div>hello<br/></div>world");
40  
41          expected = "hello\n\nworld";
42          testAsNormalizedText(expected, "<div>hello<br/><br/></div>world");
43      }
44  
45      /**
46       * @throws Exception if the test fails
47       */
48      @Test
49      public void asTextContiguousBlocks() throws Exception {
50          final String expected = "hello\nworld";
51          testAsNormalizedText(expected, "<div><table><tr><td>hello</td></tr><tr><td>world<br/></td></tr></table></div>");
52          testAsNormalizedText(expected, "<div>hello</div><div>world</div>");
53          testAsNormalizedText(expected, "<div>hello</div><div><div>world</div></div>");
54          testAsNormalizedText(expected, "<div><table><tr><td>hello</td></tr><tr><td>world<br/></td></tr></table></div>");
55      }
56  
57      private void testAsNormalizedText(final String expected, final String htmlSnippet) throws Exception {
58          final String html = DOCTYPE_HTML
59              + "<html><head></head><body>\n"
60              + htmlSnippet
61              + "</body></html>";
62  
63          final HtmlPage page = loadPage(html);
64          assertEquals(expected, page.asNormalizedText());
65      }
66  
67      /**
68       * @throws Exception if the test fails
69       */
70      @Test
71      public void asTextDiv() throws Exception {
72          final String html = DOCTYPE_HTML
73              + "<html><head></head><body>\n"
74              + "<div id='foo'>\n \n hello </div>\n"
75              + "</body></html>";
76  
77          final HtmlPage page = loadPage(html);
78          assertEquals("hello", page.asNormalizedText());
79          final HtmlDivision div = page.getHtmlElementById("foo");
80          assertEquals("hello", div.asNormalizedText());
81      }
82  
83      /**
84       * @throws Exception if the test fails
85       */
86      @Test
87      public void css() throws Exception {
88          final String html = DOCTYPE_HTML
89              + "<html><head></head><body>\n"
90              + "<div style='display:inline'>1</div><div style='display:inline'>2</div>\n"
91              + "</body></html>";
92  
93          final HtmlPage page = loadPage(html);
94          assertEquals("12", page.getBody().asNormalizedText());
95      }
96  }