summaryrefslogtreecommitdiffstats
path: root/tests/auto/qtextbrowser
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@nokia.com>2009-03-23 09:18:55 (GMT)
committerSimon Hausmann <simon.hausmann@nokia.com>2009-03-23 09:18:55 (GMT)
commite5fcad302d86d316390c6b0f62759a067313e8a9 (patch)
treec2afbf6f1066b6ce261f14341cf6d310e5595bc1 /tests/auto/qtextbrowser
downloadQt-e5fcad302d86d316390c6b0f62759a067313e8a9.zip
Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.tar.gz
Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.tar.bz2
Long live Qt 4.5!
Diffstat (limited to 'tests/auto/qtextbrowser')
-rw-r--r--tests/auto/qtextbrowser/.gitignore1
-rw-r--r--tests/auto/qtextbrowser/anchor.html11
-rw-r--r--tests/auto/qtextbrowser/bigpage.html934
-rw-r--r--tests/auto/qtextbrowser/firstpage.html2
-rw-r--r--tests/auto/qtextbrowser/pagewithbg.html1
-rw-r--r--tests/auto/qtextbrowser/pagewithimage.html1
-rw-r--r--tests/auto/qtextbrowser/pagewithoutbg.html1
-rw-r--r--tests/auto/qtextbrowser/qtextbrowser.pro17
-rw-r--r--tests/auto/qtextbrowser/secondpage.html1
-rw-r--r--tests/auto/qtextbrowser/subdir/index.html1
-rw-r--r--tests/auto/qtextbrowser/thirdpage.html1
-rw-r--r--tests/auto/qtextbrowser/tst_qtextbrowser.cpp663
12 files changed, 1634 insertions, 0 deletions
diff --git a/tests/auto/qtextbrowser/.gitignore b/tests/auto/qtextbrowser/.gitignore
new file mode 100644
index 0000000..1ec6f00
--- /dev/null
+++ b/tests/auto/qtextbrowser/.gitignore
@@ -0,0 +1 @@
+tst_qtextbrowser
diff --git a/tests/auto/qtextbrowser/anchor.html b/tests/auto/qtextbrowser/anchor.html
new file mode 100644
index 0000000..e347a2b
--- /dev/null
+++ b/tests/auto/qtextbrowser/anchor.html
@@ -0,0 +1,11 @@
+<html>
+<head>
+<title>Sample Anchor</title>
+</head>
+<body>
+<p><a href="file.html#anchor">Click Me!</a></p>
+<p>
+<a name="jumphere"></a>Here's a destination to jump to.
+</p>
+</body>
+</html>
diff --git a/tests/auto/qtextbrowser/bigpage.html b/tests/auto/qtextbrowser/bigpage.html
new file mode 100644
index 0000000..125c7a0
--- /dev/null
+++ b/tests/auto/qtextbrowser/bigpage.html
@@ -0,0 +1,934 @@
+<html><body>
+<p>
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+Blah blah blah blah blah blah blah blah blah
+</p>
+<p id="id-anchor">Paragraph with id</p>
+<a name="bottom"></a>Here's the bottom of the page.
+</body></html>
diff --git a/tests/auto/qtextbrowser/firstpage.html b/tests/auto/qtextbrowser/firstpage.html
new file mode 100644
index 0000000..fa35fce
--- /dev/null
+++ b/tests/auto/qtextbrowser/firstpage.html
@@ -0,0 +1,2 @@
+<p> Blah blah <a href="secondpage.html">Link to second page</a> blah
+<p> Another link here: <a href="thirdpage.html">Link to third page</a>
diff --git a/tests/auto/qtextbrowser/pagewithbg.html b/tests/auto/qtextbrowser/pagewithbg.html
new file mode 100644
index 0000000..07609a2
--- /dev/null
+++ b/tests/auto/qtextbrowser/pagewithbg.html
@@ -0,0 +1 @@
+<html><title>Page With BG</title><body bgcolor="blue">This page has a blue background</body></html>
diff --git a/tests/auto/qtextbrowser/pagewithimage.html b/tests/auto/qtextbrowser/pagewithimage.html
new file mode 100644
index 0000000..49060d3
--- /dev/null
+++ b/tests/auto/qtextbrowser/pagewithimage.html
@@ -0,0 +1 @@
+<p><img src="foobar.png"/></p>
diff --git a/tests/auto/qtextbrowser/pagewithoutbg.html b/tests/auto/qtextbrowser/pagewithoutbg.html
new file mode 100644
index 0000000..5a7f9f5
--- /dev/null
+++ b/tests/auto/qtextbrowser/pagewithoutbg.html
@@ -0,0 +1 @@
+<html><body>This page has no background color</body></html>
diff --git a/tests/auto/qtextbrowser/qtextbrowser.pro b/tests/auto/qtextbrowser/qtextbrowser.pro
new file mode 100644
index 0000000..6da3bfb
--- /dev/null
+++ b/tests/auto/qtextbrowser/qtextbrowser.pro
@@ -0,0 +1,17 @@
+load(qttest_p4)
+SOURCES += tst_qtextbrowser.cpp
+DEFINES += SRCDIR=\\\"$$PWD\\\"
+
+contains(QT_CONFIG, qt3support): QT += qt3support
+
+
+wince*: {
+ addFiles.sources = *.html
+ addFiles.path = .
+ addDir.sources = subdir/*
+ addDir.path = subdir
+ DEPLOYMENT += addFiles addDir
+}
+
+
+
diff --git a/tests/auto/qtextbrowser/secondpage.html b/tests/auto/qtextbrowser/secondpage.html
new file mode 100644
index 0000000..39018a7
--- /dev/null
+++ b/tests/auto/qtextbrowser/secondpage.html
@@ -0,0 +1 @@
+<p>blub blub <a href="thirdpage.html">Link to third page from second page</a>
diff --git a/tests/auto/qtextbrowser/subdir/index.html b/tests/auto/qtextbrowser/subdir/index.html
new file mode 100644
index 0000000..95593cc
--- /dev/null
+++ b/tests/auto/qtextbrowser/subdir/index.html
@@ -0,0 +1 @@
+This is a dummy, do not remove me!
diff --git a/tests/auto/qtextbrowser/thirdpage.html b/tests/auto/qtextbrowser/thirdpage.html
new file mode 100644
index 0000000..215dc08
--- /dev/null
+++ b/tests/auto/qtextbrowser/thirdpage.html
@@ -0,0 +1 @@
+<p>this is the third page...
diff --git a/tests/auto/qtextbrowser/tst_qtextbrowser.cpp b/tests/auto/qtextbrowser/tst_qtextbrowser.cpp
new file mode 100644
index 0000000..f0b8f2c
--- /dev/null
+++ b/tests/auto/qtextbrowser/tst_qtextbrowser.cpp
@@ -0,0 +1,663 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qtextbrowser.h>
+#include <qdatetime.h>
+#include <qapplication.h>
+#include <qscrollbar.h>
+
+#include <qtextbrowser.h>
+#include <qtextobject.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class TestBrowser : public QTextBrowser
+{
+public:
+ inline TestBrowser() : htmlLoadAttempts(0) {
+ show();
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(this);
+#endif
+ activateWindow();
+ setFocus();
+ QTest::qWait(100);
+ }
+
+ virtual QVariant loadResource(int type, const QUrl &name);
+
+ int htmlLoadAttempts;
+ QUrl lastResource;
+ QUrl sourceInsideLoadResource;
+};
+
+QVariant TestBrowser::loadResource(int type, const QUrl &name)
+{
+ if (type == QTextDocument::HtmlResource)
+ htmlLoadAttempts++;
+ lastResource = name;
+ sourceInsideLoadResource = source();
+ return QTextBrowser::loadResource(type, name);
+}
+
+class tst_QTextBrowser : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QTextBrowser();
+ virtual ~tst_QTextBrowser();
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void noReloadOnAnchorJump();
+ void bgColorOnSourceChange();
+ void forwardButton();
+ void viewportPositionInHistory();
+ void relativeLinks();
+ void anchors();
+ void resourceAutoDetection();
+ void forwardBackwardAvailable();
+ void clearHistory();
+ void sourceInsideLoadResource();
+ void textInteractionFlags_vs_readOnly();
+ void anchorsWithSelfBuiltHtml();
+ void relativeNonLocalUrls();
+ void adjacentAnchors();
+ void loadResourceOnRelativeLocalFiles();
+ void focusIndicator();
+ void focusHistory();
+ void urlEncoding();
+
+private:
+ TestBrowser *browser;
+};
+
+tst_QTextBrowser::tst_QTextBrowser()
+{
+}
+
+tst_QTextBrowser::~tst_QTextBrowser()
+{
+}
+void tst_QTextBrowser::init()
+{
+#if !defined(Q_OS_IRIX) && !defined(Q_OS_WINCE)
+ QDir::setCurrent(SRCDIR);
+#endif
+ browser = new TestBrowser;
+ browser->show();
+}
+
+void tst_QTextBrowser::cleanup()
+{
+ delete browser;
+ browser = 0;
+}
+
+void tst_QTextBrowser::noReloadOnAnchorJump()
+{
+ QUrl url("anchor.html");
+
+ browser->htmlLoadAttempts = 0;
+ browser->setSource(url);
+ QCOMPARE(browser->htmlLoadAttempts, 1);
+ QVERIFY(!browser->toPlainText().isEmpty());
+
+ url.setFragment("jumphere"); // anchor.html#jumphere
+ browser->setSource(url);
+ QCOMPARE(browser->htmlLoadAttempts, 1);
+ QVERIFY(!browser->toPlainText().isEmpty());
+ QVERIFY(browser->source() == url);
+}
+
+void tst_QTextBrowser::bgColorOnSourceChange()
+{
+ browser->setSource(QUrl("pagewithbg.html"));
+ QVERIFY(browser->document()->rootFrame()->frameFormat().hasProperty(QTextFormat::BackgroundBrush));
+ QVERIFY(browser->document()->rootFrame()->frameFormat().background().color() == Qt::blue);
+
+ browser->setSource(QUrl("pagewithoutbg.html"));
+ QVERIFY(!browser->document()->rootFrame()->frameFormat().hasProperty(QTextFormat::BackgroundBrush));
+}
+
+void tst_QTextBrowser::forwardButton()
+{
+ QSignalSpy forwardEmissions(browser, SIGNAL(forwardAvailable(bool)));
+ QSignalSpy backwardEmissions(browser, SIGNAL(backwardAvailable(bool)));
+
+ QVERIFY(browser->historyTitle(-1).isEmpty());
+ QVERIFY(browser->historyTitle(0).isEmpty());
+ QVERIFY(browser->historyTitle(1).isEmpty());
+
+ browser->setSource(QUrl("pagewithbg.html"));
+
+ QVERIFY(!forwardEmissions.isEmpty());
+ QVariant val = forwardEmissions.takeLast()[0];
+ QVERIFY(val.type() == QVariant::Bool);
+ QVERIFY(val.toBool() == false);
+
+ QVERIFY(!backwardEmissions.isEmpty());
+ val = backwardEmissions.takeLast()[0];
+ QVERIFY(val.type() == QVariant::Bool);
+ QVERIFY(val.toBool() == false);
+
+ QVERIFY(browser->historyTitle(-1).isEmpty());
+ QCOMPARE(browser->historyUrl(0), QUrl("pagewithbg.html"));
+ QCOMPARE(browser->documentTitle(), QString("Page With BG"));
+ QCOMPARE(browser->historyTitle(0), QString("Page With BG"));
+ QVERIFY(browser->historyTitle(1).isEmpty());
+
+ browser->setSource(QUrl("anchor.html"));
+
+ QVERIFY(!forwardEmissions.isEmpty());
+ val = forwardEmissions.takeLast()[0];
+ QVERIFY(val.type() == QVariant::Bool);
+ QVERIFY(val.toBool() == false);
+
+ QVERIFY(!backwardEmissions.isEmpty());
+ val = backwardEmissions.takeLast()[0];
+ QVERIFY(val.type() == QVariant::Bool);
+ QVERIFY(val.toBool() == true);
+
+ QCOMPARE(browser->historyTitle(-1), QString("Page With BG"));
+ QCOMPARE(browser->historyTitle(0), QString("Sample Anchor"));
+ QVERIFY(browser->historyTitle(1).isEmpty());
+
+ browser->backward();
+
+ QVERIFY(!forwardEmissions.isEmpty());
+ val = forwardEmissions.takeLast()[0];
+ QVERIFY(val.type() == QVariant::Bool);
+ QVERIFY(val.toBool() == true);
+
+ QVERIFY(!backwardEmissions.isEmpty());
+ val = backwardEmissions.takeLast()[0];
+ QVERIFY(val.type() == QVariant::Bool);
+ QVERIFY(val.toBool() == false);
+
+ QVERIFY(browser->historyTitle(-1).isEmpty());
+ QCOMPARE(browser->historyTitle(0), QString("Page With BG"));
+ QCOMPARE(browser->historyTitle(1), QString("Sample Anchor"));
+
+ browser->setSource(QUrl("pagewithoutbg.html"));
+
+ QVERIFY(!forwardEmissions.isEmpty());
+ val = forwardEmissions.takeLast()[0];
+ QVERIFY(val.type() == QVariant::Bool);
+ QVERIFY(val.toBool() == false);
+
+ QVERIFY(!backwardEmissions.isEmpty());
+ val = backwardEmissions.takeLast()[0];
+ QVERIFY(val.type() == QVariant::Bool);
+ QVERIFY(val.toBool() == true);
+}
+
+void tst_QTextBrowser::viewportPositionInHistory()
+{
+ browser->setSource(QUrl("bigpage.html"));
+ browser->scrollToAnchor("bottom");
+ QVERIFY(browser->verticalScrollBar()->value() > 0);
+
+ browser->setSource(QUrl("pagewithbg.html"));
+ QCOMPARE(browser->verticalScrollBar()->value(), 0);
+
+ browser->backward();
+ QVERIFY(browser->verticalScrollBar()->value() > 0);
+}
+
+void tst_QTextBrowser::relativeLinks()
+{
+ qRegisterMetaType<QUrl>("QUrl");
+ QSignalSpy sourceChangedSpy(browser, SIGNAL(sourceChanged(const QUrl &)));
+ browser->setSource(QUrl("../qtextbrowser.html"));
+ QVERIFY(sourceChangedSpy.count() == 1);
+ QCOMPARE(sourceChangedSpy.takeFirst()[0].toUrl(), QUrl("../qtextbrowser.html"));
+ browser->setSource(QUrl("qtextbrowser/subdir/index.html"));
+ QVERIFY(sourceChangedSpy.count() == 1);
+ QCOMPARE(sourceChangedSpy.takeFirst()[0].toUrl(), QUrl("qtextbrowser/subdir/index.html"));
+ browser->setSource(QUrl("../anchor.html"));
+ QVERIFY(sourceChangedSpy.count() == 1);
+ QCOMPARE(sourceChangedSpy.takeFirst()[0].toUrl(), QUrl("../anchor.html"));
+ browser->setSource(QUrl("subdir/index.html"));
+ QVERIFY(sourceChangedSpy.count() == 1);
+ QCOMPARE(sourceChangedSpy.takeFirst()[0].toUrl(), QUrl("subdir/index.html"));
+
+ // using QUrl::fromLocalFile()
+ browser->setSource(QUrl::fromLocalFile("anchor.html"));
+ QVERIFY(sourceChangedSpy.count() == 1);
+ QCOMPARE(sourceChangedSpy.takeFirst()[0].toUrl(), QUrl("file:anchor.html"));
+ browser->setSource(QUrl("../qtextbrowser.html"));
+ QVERIFY(sourceChangedSpy.count() == 1);
+ QCOMPARE(sourceChangedSpy.takeFirst()[0].toUrl(), QUrl("../qtextbrowser.html"));
+}
+
+void tst_QTextBrowser::anchors()
+{
+ browser->setSource(QUrl("bigpage.html"));
+ browser->setSource(QUrl("#bottom"));
+ QVERIFY(browser->verticalScrollBar()->value() > 0);
+
+ browser->setSource(QUrl("bigpage.html"));
+ browser->setSource(QUrl("#id-anchor"));
+ QVERIFY(browser->verticalScrollBar()->value() > 0);
+}
+
+void tst_QTextBrowser::resourceAutoDetection()
+{
+ browser->setHtml("<img src=\":/some/resource\"/>");
+ QCOMPARE(browser->lastResource.toString(), QString("qrc:/some/resource"));
+}
+
+void tst_QTextBrowser::forwardBackwardAvailable()
+{
+ QSignalSpy backwardSpy(browser, SIGNAL(backwardAvailable(bool)));
+ QSignalSpy forwardSpy(browser, SIGNAL(forwardAvailable(bool)));
+
+ QVERIFY(!browser->isBackwardAvailable());
+ QVERIFY(!browser->isForwardAvailable());
+
+ browser->setSource(QUrl("anchor.html"));
+ QVERIFY(!browser->isBackwardAvailable());
+ QVERIFY(!browser->isForwardAvailable());
+ QCOMPARE(backwardSpy.count(), 1);
+ QVERIFY(!backwardSpy.at(0).at(0).toBool());
+ QCOMPARE(forwardSpy.count(), 1);
+ QVERIFY(!forwardSpy.at(0).at(0).toBool());
+
+ backwardSpy.clear();
+ forwardSpy.clear();
+
+ browser->setSource(QUrl("bigpage.html"));
+ QVERIFY(browser->isBackwardAvailable());
+ QVERIFY(!browser->isForwardAvailable());
+ QCOMPARE(backwardSpy.count(), 1);
+ QVERIFY(backwardSpy.at(0).at(0).toBool());
+ QCOMPARE(forwardSpy.count(), 1);
+ QVERIFY(!forwardSpy.at(0).at(0).toBool());
+
+ backwardSpy.clear();
+ forwardSpy.clear();
+
+ browser->setSource(QUrl("pagewithbg.html"));
+ QVERIFY(browser->isBackwardAvailable());
+ QVERIFY(!browser->isForwardAvailable());
+ QCOMPARE(backwardSpy.count(), 1);
+ QVERIFY(backwardSpy.at(0).at(0).toBool());
+ QCOMPARE(forwardSpy.count(), 1);
+ QVERIFY(!forwardSpy.at(0).at(0).toBool());
+
+ backwardSpy.clear();
+ forwardSpy.clear();
+
+ browser->backward();
+ QVERIFY(browser->isBackwardAvailable());
+ QVERIFY(browser->isForwardAvailable());
+ QCOMPARE(backwardSpy.count(), 1);
+ QVERIFY(backwardSpy.at(0).at(0).toBool());
+ QCOMPARE(forwardSpy.count(), 1);
+ QVERIFY(forwardSpy.at(0).at(0).toBool());
+
+ backwardSpy.clear();
+ forwardSpy.clear();
+
+ browser->backward();
+ QVERIFY(!browser->isBackwardAvailable());
+ QVERIFY(browser->isForwardAvailable());
+ QCOMPARE(backwardSpy.count(), 1);
+ QVERIFY(!backwardSpy.at(0).at(0).toBool());
+ QCOMPARE(forwardSpy.count(), 1);
+ QVERIFY(forwardSpy.at(0).at(0).toBool());
+
+ backwardSpy.clear();
+ forwardSpy.clear();
+
+ browser->forward();
+ QVERIFY(browser->isBackwardAvailable());
+ QVERIFY(browser->isForwardAvailable());
+ QCOMPARE(backwardSpy.count(), 1);
+ QVERIFY(backwardSpy.at(0).at(0).toBool());
+ QCOMPARE(forwardSpy.count(), 1);
+ QVERIFY(forwardSpy.at(0).at(0).toBool());
+
+ backwardSpy.clear();
+ forwardSpy.clear();
+
+ browser->forward();
+ QVERIFY(browser->isBackwardAvailable());
+ QVERIFY(!browser->isForwardAvailable());
+ QCOMPARE(backwardSpy.count(), 1);
+ QVERIFY(backwardSpy.at(0).at(0).toBool());
+ QCOMPARE(forwardSpy.count(), 1);
+ QVERIFY(!forwardSpy.at(0).at(0).toBool());
+
+ backwardSpy.clear();
+ forwardSpy.clear();
+}
+
+void tst_QTextBrowser::clearHistory()
+{
+ QSignalSpy backwardSpy(browser, SIGNAL(backwardAvailable(bool)));
+ QSignalSpy forwardSpy(browser, SIGNAL(forwardAvailable(bool)));
+
+ QVERIFY(!browser->isBackwardAvailable());
+ QVERIFY(!browser->isForwardAvailable());
+
+ browser->clearHistory();
+ QVERIFY(!browser->isBackwardAvailable());
+ QVERIFY(!browser->isForwardAvailable());
+ QCOMPARE(backwardSpy.count(), 1);
+ QVERIFY(!backwardSpy.at(0).at(0).toBool());
+ QCOMPARE(forwardSpy.count(), 1);
+ QVERIFY(!forwardSpy.at(0).at(0).toBool());
+ QVERIFY(browser->historyTitle(-1).isEmpty());
+ QVERIFY(browser->historyTitle(0).isEmpty());
+ QVERIFY(browser->historyTitle(1).isEmpty());
+
+ backwardSpy.clear();
+ forwardSpy.clear();
+
+ browser->setSource(QUrl("anchor.html"));
+ QVERIFY(!browser->isBackwardAvailable());
+ QVERIFY(!browser->isForwardAvailable());
+ QCOMPARE(backwardSpy.count(), 1);
+ QVERIFY(!backwardSpy.at(0).at(0).toBool());
+ QCOMPARE(forwardSpy.count(), 1);
+ QVERIFY(!forwardSpy.at(0).at(0).toBool());
+
+ backwardSpy.clear();
+ forwardSpy.clear();
+
+ browser->setSource(QUrl("bigpage.html"));
+ QVERIFY(browser->isBackwardAvailable());
+ QVERIFY(!browser->isForwardAvailable());
+ QCOMPARE(backwardSpy.count(), 1);
+ QVERIFY(backwardSpy.at(0).at(0).toBool());
+ QCOMPARE(forwardSpy.count(), 1);
+ QVERIFY(!forwardSpy.at(0).at(0).toBool());
+
+ backwardSpy.clear();
+ forwardSpy.clear();
+
+ browser->clearHistory();
+ QVERIFY(!browser->isBackwardAvailable());
+ QVERIFY(!browser->isForwardAvailable());
+ QCOMPARE(backwardSpy.count(), 1);
+ QVERIFY(!backwardSpy.at(0).at(0).toBool());
+ QCOMPARE(forwardSpy.count(), 1);
+ QVERIFY(!forwardSpy.at(0).at(0).toBool());
+ QVERIFY(browser->historyTitle(-1).isEmpty());
+ QVERIFY(browser->historyTitle(1).isEmpty());
+
+ QCOMPARE(browser->source(), QUrl("bigpage.html"));
+ browser->backward();
+ QCOMPARE(browser->source(), QUrl("bigpage.html"));
+ browser->home();
+ QCOMPARE(browser->source(), QUrl("bigpage.html"));
+}
+
+void tst_QTextBrowser::sourceInsideLoadResource()
+{
+ QUrl url("pagewithimage.html");
+ browser->setSource(url);
+ QCOMPARE(browser->lastResource.toString(), QUrl::fromLocalFile(QDir::current().filePath("foobar.png")).toString());
+ QEXPECT_FAIL("", "This is currently not supported", Continue);
+ QCOMPARE(browser->sourceInsideLoadResource.toString(), url.toString());
+}
+
+void tst_QTextBrowser::textInteractionFlags_vs_readOnly()
+{
+ QVERIFY(browser->isReadOnly());
+ QVERIFY(browser->textInteractionFlags() == Qt::TextBrowserInteraction);
+ browser->setReadOnly(true);
+ QVERIFY(browser->textInteractionFlags() == Qt::TextBrowserInteraction);
+ browser->setReadOnly(false);
+ QVERIFY(browser->textInteractionFlags() == Qt::TextEditorInteraction);
+ browser->setReadOnly(true);
+ QVERIFY(browser->textInteractionFlags() == Qt::TextBrowserInteraction);
+}
+
+void tst_QTextBrowser::anchorsWithSelfBuiltHtml()
+{
+ browser->setHtml("<p>Hello <a href=\"#anchor\">Link</a>"
+ "<p><a name=\"anchor\"/>Blah</p>");
+ QVERIFY(browser->document()->blockCount() > 1);
+ browser->setSource(QUrl("#anchor"));
+ QVERIFY(browser->document()->blockCount() > 1);
+}
+
+class HelpBrowser : public QTextBrowser
+{
+public:
+ virtual QVariant loadResource(int /*type*/, const QUrl &name) {
+ QString url = name.toString();
+ if(url == "qhelp://docs/index.html") {
+ return "index";
+ } else if (url == "qhelp://docs/classes.html") {
+ return "classes";
+ } else if (url == "qhelp://docs/someclass.html") {
+ return "someclass";
+ }
+ return QVariant();
+ }
+};
+
+void tst_QTextBrowser::relativeNonLocalUrls()
+{
+ HelpBrowser browser;
+ browser.setSource(QUrl("qhelp://docs/index.html"));
+ QCOMPARE(browser.toPlainText(), QString("index"));
+ browser.setSource(QUrl("classes.html"));
+ QCOMPARE(browser.toPlainText(), QString("classes"));
+ browser.setSource(QUrl("someclass.html"));
+ QCOMPARE(browser.toPlainText(), QString("someclass"));
+}
+
+class HackBrowser : public TestBrowser
+{
+public:
+ inline bool focusTheNextChild() { return QTextBrowser::focusNextChild(); }
+ inline bool focusThePreviousChild() { return QTextBrowser::focusPreviousChild(); }
+};
+
+void tst_QTextBrowser::adjacentAnchors()
+{
+ HackBrowser *browser = new HackBrowser;
+ browser->setHtml("<a href=\"#foo\">foo</a><a href=\"#bar\">bar</a>");
+ QVERIFY(browser->focusTheNextChild());
+ QCOMPARE(browser->textCursor().selectedText(), QString("foo"));
+
+ QVERIFY(browser->focusTheNextChild());
+ QCOMPARE(browser->textCursor().selectedText(), QString("bar"));
+
+ QVERIFY(!browser->focusTheNextChild());
+
+ browser->moveCursor(QTextCursor::End);
+ QVERIFY(browser->focusThePreviousChild());
+ QCOMPARE(browser->textCursor().selectedText(), QString("bar"));
+ QVERIFY(browser->focusThePreviousChild());
+ QCOMPARE(browser->textCursor().selectedText(), QString("foo"));
+
+ delete browser;
+}
+
+void tst_QTextBrowser::loadResourceOnRelativeLocalFiles()
+{
+ browser->setSource(QUrl("subdir/index.html"));
+ QVERIFY(!browser->toPlainText().isEmpty());
+ QVariant v = browser->loadResource(QTextDocument::HtmlResource, QUrl("../anchor.html"));
+ QVERIFY(v.isValid());
+ QVERIFY(v.type() == QVariant::ByteArray);
+ QVERIFY(!v.toByteArray().isEmpty());
+}
+
+void tst_QTextBrowser::focusIndicator()
+{
+ HackBrowser *browser = new HackBrowser;
+ browser->setSource(QUrl("firstpage.html"));
+ QVERIFY(!browser->textCursor().hasSelection());
+
+ browser->focusTheNextChild();
+
+ QVERIFY(browser->textCursor().hasSelection());
+ QCOMPARE(browser->textCursor().selectedText(), QString("Link to second page"));
+
+ QTest::keyClick(browser, Qt::Key_Enter);
+ QVERIFY(!browser->textCursor().hasSelection());
+
+ browser->focusTheNextChild();
+
+ QVERIFY(browser->textCursor().hasSelection());
+ QCOMPARE(browser->textCursor().selectedText(), QString("Link to third page from second page"));
+
+ QTest::keyClick(browser, Qt::Key_Enter);
+ QVERIFY(!browser->textCursor().hasSelection());
+
+ browser->backward();
+
+ QVERIFY(browser->textCursor().hasSelection());
+ QCOMPARE(browser->textCursor().selectedText(), QString("Link to third page from second page"));
+
+ browser->backward();
+
+ QVERIFY(browser->textCursor().hasSelection());
+ QCOMPARE(browser->textCursor().selectedText(), QString("Link to second page"));
+
+ browser->forward();
+
+ QVERIFY(browser->textCursor().hasSelection());
+ QCOMPARE(browser->textCursor().selectedText(), QString("Link to third page from second page"));
+
+ browser->backward();
+ browser->backward();
+
+ QVERIFY(browser->textCursor().hasSelection());
+ QCOMPARE(browser->textCursor().selectedText(), QString("Link to second page"));
+
+ QTest::keyClick(browser, Qt::Key_Enter);
+ QVERIFY(!browser->textCursor().hasSelection());
+
+ delete browser;
+}
+
+void tst_QTextBrowser::focusHistory()
+{
+ HackBrowser *browser = new HackBrowser;
+ browser->setSource(QUrl("firstpage.html"));
+ QVERIFY(!browser->textCursor().hasSelection());
+
+ browser->focusTheNextChild();
+
+ QVERIFY(browser->textCursor().hasSelection());
+ QCOMPARE(browser->textCursor().selectedText(), QString("Link to second page"));
+
+ QTest::keyClick(browser, Qt::Key_Enter);
+ QVERIFY(!browser->textCursor().hasSelection());
+
+ browser->focusTheNextChild();
+
+ QVERIFY(browser->textCursor().hasSelection());
+ QCOMPARE(browser->textCursor().selectedText(), QString("Link to third page from second page"));
+
+ browser->backward();
+
+ QVERIFY(browser->textCursor().hasSelection());
+ QCOMPARE(browser->textCursor().selectedText(), QString("Link to second page"));
+
+ browser->focusTheNextChild();
+
+ QVERIFY(browser->textCursor().hasSelection());
+ QCOMPARE(browser->textCursor().selectedText(), QString("Link to third page"));
+
+ // Despite the third page link being highlighted, going forward should go to second,
+ // and going back after that should still highlight the third link
+ browser->forward();
+
+ QVERIFY(browser->textCursor().hasSelection());
+ QCOMPARE(browser->textCursor().selectedText(), QString("Link to third page from second page"));
+
+ browser->backward();
+
+ QVERIFY(browser->textCursor().hasSelection());
+ QCOMPARE(browser->textCursor().selectedText(), QString("Link to third page"));
+
+ browser->forward();
+
+ QVERIFY(browser->textCursor().hasSelection());
+ QCOMPARE(browser->textCursor().selectedText(), QString("Link to third page from second page"));
+
+ QTest::keyClick(browser, Qt::Key_Enter);
+ QVERIFY(!browser->textCursor().hasSelection());
+
+ browser->backward();
+ browser->backward();
+
+ QVERIFY(browser->textCursor().hasSelection());
+ QCOMPARE(browser->textCursor().selectedText(), QString("Link to third page"));
+
+ delete browser;
+}
+
+void tst_QTextBrowser::urlEncoding()
+{
+ HackBrowser *browser = new HackBrowser;
+ browser->setOpenLinks(false);
+ browser->setHtml("<a href=\"http://www.google.com/q=%22\">link</a>");
+ browser->focusTheNextChild();
+
+ QSignalSpy spy(browser, SIGNAL(anchorClicked(const QUrl &)));
+
+ QTest::keyClick(browser, Qt::Key_Enter);
+ QCOMPARE(spy.count(), 1);
+
+ QUrl url = spy.at(0).at(0).toUrl();
+ QVERIFY(url.toEncoded() == QByteArray("http://www.google.com/q=%22"));
+
+ delete browser;
+}
+
+QTEST_MAIN(tst_QTextBrowser)
+#include "tst_qtextbrowser.moc"