diff options
Diffstat (limited to 'src/tests')
| -rw-r--r-- | src/tests/CMakeLists.txt | 144 | ||||
| -rw-r--r-- | src/tests/HTTP_tests.html | 601 | ||||
| -rw-r--r-- | src/tests/findbar_test.cpp | 76 | ||||
| -rw-r--r-- | src/tests/link_test.html | 7 | ||||
| -rw-r--r-- | src/tests/mainview_test.cpp | 217 | ||||
| -rw-r--r-- | src/tests/mainwindow_test.cpp | 65 | ||||
| -rw-r--r-- | src/tests/networkaccessmanager_test.cpp | 67 | ||||
| -rw-r--r-- | src/tests/protocolhandler_test.cpp | 130 | ||||
| -rw-r--r-- | src/tests/sessionmanager_test.cpp | 69 | ||||
| -rw-r--r-- | src/tests/tabbar_test.cpp | 135 | ||||
| -rw-r--r-- | src/tests/urlbar_test.cpp | 74 | ||||
| -rw-r--r-- | src/tests/walletbar_test.cpp | 69 | ||||
| -rw-r--r-- | src/tests/webpage_test.cpp | 112 | ||||
| -rw-r--r-- | src/tests/websnap_test.cpp | 69 | ||||
| -rw-r--r-- | src/tests/webtab_test.cpp | 68 | ||||
| -rw-r--r-- | src/tests/webview_test.cpp | 71 | 
16 files changed, 1783 insertions, 191 deletions
| diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 5df23e24..3bc9a27f 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -2,16 +2,34 @@  SET( EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR} ) -INCLUDE_DIRECTORIES (   ${CMAKE_CURRENT_BINARY_DIR}/.. +INCLUDE_DIRECTORIES (   ${CMAKE_CURRENT_BINARY_DIR} +                        ${CMAKE_CURRENT_SOURCE_DIR}/.. +                        ${CMAKE_CURRENT_SOURCE_DIR}/../adblock +                        ${CMAKE_CURRENT_SOURCE_DIR}/../bookmarks +                        ${CMAKE_CURRENT_SOURCE_DIR}/../history +                        ${CMAKE_CURRENT_SOURCE_DIR}/../settings +                        ${CMAKE_CURRENT_SOURCE_DIR}/../urlbar                          ${KDE4_INCLUDES}                          ${QT4_INCLUDES}  ) -##### ------------- tabbar test +##### ------------- findbar test -kde4_add_unit_test( tabbar_test tabbar_test.cpp ) +kde4_add_unit_test( findbar_test findbar_test.cpp ) -target_link_libraries( tabbar_test +target_link_libraries( findbar_test +    kdeinit_rekonq +    ${KDE4_KDECORE_LIBS} +    ${KDE4_KDEUI_LIBS} +    ${QT_QTGUI_LIBRARY} +    ${QT_QTTEST_LIBRARY} +) + +##### ------------- mainwindow test + +kde4_add_unit_test( mainwindow_test mainwindow_test.cpp ) +  +target_link_libraries( mainwindow_test      kdeinit_rekonq      ${KDE4_KDECORE_LIBS}      ${KDE4_KDEUI_LIBS} @@ -29,4 +47,122 @@ target_link_libraries( mainview_test      ${QT_QTTEST_LIBRARY}  ) +##### ------------- networkaccessmanager test + +kde4_add_unit_test( networkaccessmanager_test networkaccessmanager_test.cpp ) +  +target_link_libraries( networkaccessmanager_test +    kdeinit_rekonq +    ${KDE4_KDECORE_LIBS} +    ${KDE4_KDEUI_LIBS} +    ${QT_QTTEST_LIBRARY} +) + +##### ------------- protocolhandler test + +kde4_add_unit_test( protocolhandler_test protocolhandler_test.cpp ) +  +target_link_libraries( protocolhandler_test +    kdeinit_rekonq +    ${KDE4_KDECORE_LIBS} +    ${KDE4_KDEUI_LIBS} +    ${KDE4_KDEWEBKIT_LIBS} +    ${QT_QTNETWORK_LIBRARY} +    ${QT_QTTEST_LIBRARY} +) + +##### ------------- sessionmanager test + +kde4_add_unit_test( sessionmanager_test sessionmanager_test.cpp ) +  +target_link_libraries( sessionmanager_test +    kdeinit_rekonq +    ${KDE4_KDECORE_LIBS} +    ${KDE4_KDEUI_LIBS} +    ${QT_QTTEST_LIBRARY} +) + +##### ------------- tabbar test + +kde4_add_unit_test( tabbar_test tabbar_test.cpp ) + +target_link_libraries( tabbar_test +    kdeinit_rekonq +    ${KDE4_KDECORE_LIBS} +    ${KDE4_KDEUI_LIBS} +    ${QT_QTTEST_LIBRARY} +) + +##### ------------- walletbar test + +kde4_add_unit_test( walletbar_test walletbar_test.cpp ) + +target_link_libraries( walletbar_test +    kdeinit_rekonq +    ${KDE4_KDECORE_LIBS} +    ${KDE4_KDEUI_LIBS} +    ${KDE4_KDEWEBKIT_LIBS} +    ${QT_QTTEST_LIBRARY} +) + +##### ------------- webpage test + +kde4_add_unit_test( webpage_test webpage_test.cpp ) + +target_link_libraries( webpage_test +    kdeinit_rekonq +    ${KDE4_KDECORE_LIBS} +    ${KDE4_KDEUI_LIBS} +    ${KDE4_KDEWEBKIT_LIBS} +    ${QT_QTTEST_LIBRARY} +) + +##### ------------- websnap test + +kde4_add_unit_test( websnap_test websnap_test.cpp ) + +target_link_libraries( websnap_test +    kdeinit_rekonq +    ${KDE4_KDECORE_LIBS} +    ${KDE4_KDEUI_LIBS} +    ${KDE4_KDEWEBKIT_LIBS} +    ${QT_QTTEST_LIBRARY} +) + +##### ------------- webtab test + +kde4_add_unit_test( webtab_test webtab_test.cpp ) + +target_link_libraries( webtab_test +    kdeinit_rekonq +    ${KDE4_KDECORE_LIBS} +    ${KDE4_KDEUI_LIBS} +    ${KDE4_KDEWEBKIT_LIBS} +    ${QT_QTTEST_LIBRARY} +) + +##### ------------- webview test + +kde4_add_unit_test( webview_test webview_test.cpp ) + +target_link_libraries( webview_test +    kdeinit_rekonq +    ${KDE4_KDECORE_LIBS} +    ${KDE4_KDEUI_LIBS} +    ${KDE4_KDEWEBKIT_LIBS} +    ${QT_QTTEST_LIBRARY} +) + +##### ------------- urlbar test + +kde4_add_unit_test( urlbar_test urlbar_test.cpp ) + +target_link_libraries( urlbar_test +    kdeinit_rekonq +    ${KDE4_KDECORE_LIBS} +    ${KDE4_KDEUI_LIBS} +    ${KDE4_KDEWEBKIT_LIBS} +    ${QT_QTTEST_LIBRARY} +) +  ############################################################ diff --git a/src/tests/HTTP_tests.html b/src/tests/HTTP_tests.html new file mode 100644 index 00000000..7a5ac00d --- /dev/null +++ b/src/tests/HTTP_tests.html @@ -0,0 +1,601 @@ +<html> + +<head> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<title>Test Cases for HTTP Content-Disposition header and RFC 2231/2047 Encoding</title> + +<style type="text/css"> +a.plain { +  color: black; +  text-decoration: none; +} +body { +  color: black; +  font-family: verdana, helvetica, arial, sans-serif; +  font-size: 10pt; +  margin-left: 2em; +} +h1 { +  font-size: 18pt; +} +h2 { +  font-size: 14pt; +} +h3 { +  font-size: 12pt; +} +h4 { +  font-size: 10pt; +} +pre { +  border-style: dotted; +  border-width: 1px; +  background-color: #f0f0f0; +} +pre.invalid { +  border-style: dotted; +  border-width: 1px; +  background-color: #ff8080; +} +table { +  font-size: 9pt; +} +table.aside { +  float: right; +  margin: 4px; +  border-style: dotted; +  border-width: 1px; +  background-color: #f0f0f0; +} +q { +  font-style: italic; +} +th { +  text-align: right; +  vertical-align: top; +} +h2, h3, h4 { +  clear: both; +} +.fail { +  background-color: #ffd0d0; +} +.warn { +  background-color: #ffff80; +} +.pass { +  background-color: #d0ffd0; +} +.unsupported { +  background-color: #e0e0e0; +} + +</style> + +</head> + +<body> + +<h1>Test Cases for HTTP Content-Disposition header and RFC 2231/2047 Encoding</h1> + + +<h2>Test Cases</h2><div id="c-d-inline"><h3><a href="#c-d-inline" class="plain">Content-Disposition: Disposition-Type Inline</a></h3> +      <p> +        Various tests relating to the "inline" disposition type, see  +        <a href="http://greenbytes.de/tech/webdav/rfc2183.html#rfc.section.2.1">Section 2.1 of RFC 2183</a>. +      </p> +    <div id="inlonly"><h4><a href="#inlonly" class="plain">inlonly</a> +              [<a href="http://greenbytes.de/tech/tc2231/inlonly.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>inline</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="pass"><td>MSIE8</td><td>pass</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="pass"><td>Saf4</td><td>pass</td></tr><tr class="pass"><td>Konq</td><td>pass</td></tr><tr class="pass"><td>Chrome</td><td>pass</td></tr></tbody></table><p>'inline' only</p><p><em>This should be equivalent to not including the header at all.</em></p></div><div id="inlwithasciifilename"><h4><a href="#inlwithasciifilename" class="plain">inlwithasciifilename</a> +              [<a href="http://greenbytes.de/tech/tc2231/inlwithasciifilename.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>inline; filename="<b>foo.html</b>"</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass +                          (uses the filename in subsequent 'save' operation) +                        </td></tr><tr class="pass"><td>MSIE8</td><td>pass +                          (filename information not used) +                        </td></tr><tr class="pass"><td>Op10</td><td>pass +                          (filename information not used) +                        </td></tr><tr class="pass"><td>Saf4</td><td>pass +                          (filename information not used) +                        </td></tr><tr class="pass"><td>Konq</td><td>pass +                          (filename information not used) +                        </td></tr><tr class="pass"><td>Chrome</td><td>pass +                          (filename information not used) +                        </td></tr></tbody></table><p> +        'inline', specifying a filename of <code>foo.html</code> +      </p><p><em> +        Some UAs use this filename in a subsequent "save" operation. +      </em></p></div><div id="inlwithasciifilenamepdf"><h4><a href="#inlwithasciifilenamepdf" class="plain">inlwithasciifilenamepdf</a> +              [<a href="http://greenbytes.de/tech/tc2231/inlwithasciifilenamepdf.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>inline; filename="<b>foo.pdf</b>"</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass +                          (filename information not used) +                        </td></tr><tr class="pass"><td>MSIE8</td><td>pass +                          (filename information not used) +                        </td></tr><tr class="pass"><td>Op10</td><td>pass +                          (filename information not used) +                        </td></tr><tr class="pass"><td>Saf4</td><td>pass +                          (filename information not used) +                        </td></tr><tr class="pass"><td>Konq</td><td>pass +                          (filename information not used) +                        </td></tr><tr class="pass"><td>Chrome</td><td>pass +                          (filename information not used) +                        </td></tr></tbody></table><p> +        'inline', specifying a filename of <code>foo.pdf</code> +      </p><p><em> +        Some UAs use this filename in a subsequent "save" operation. +        This variation of the test checks whether whatever handles PDF display +        receives the filename information, and acts upon it +        (this was tested with the latest Acrobat Reader plugin). +      </em></p></div></div><div id="c-d-attachment"><h3><a href="#c-d-attachment" class="plain">Content-Disposition: Disposition-Type Attachment</a></h3> +      <p> +        Various tests relating to the "attchment" disposition type, see  +        <a href="http://greenbytes.de/tech/webdav/rfc2183.html#rfc.section.2.2">Section 2.2 of RFC 2183</a>. +      </p> +    <div id="attonly"><h4><a href="#attonly" class="plain">attonly</a> +              [<a href="http://greenbytes.de/tech/tc2231/attonly.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="pass"><td>MSIE8</td><td>pass</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="pass"><td>Saf4</td><td>pass</td></tr><tr class="pass"><td>Konq</td><td>pass</td></tr><tr class="pass"><td>Chrome</td><td>pass</td></tr></tbody></table><p>'attachment' only</p><p><em>UA should offer to download the resource.</em></p></div><div id="attonlyucase"><h4><a href="#attonlyucase" class="plain">attonlyucase</a> +              [<a href="http://greenbytes.de/tech/tc2231/attonlyucase.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>ATTACHMENT</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="pass"><td>MSIE8</td><td>pass</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="pass"><td>Saf4</td><td>pass</td></tr><tr class="fail"><td>Konq</td><td>fail</td></tr><tr class="pass"><td>Chrome</td><td>pass</td></tr></tbody></table><p>'ATTACHMENT' only</p><p><em>UA should offer to download the resource.</em></p></div><div id="attwithasciifilename"><h4><a href="#attwithasciifilename" class="plain">attwithasciifilename</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithasciifilename.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename="<b>foo.html</b>"</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="pass"><td>MSIE8</td><td>pass</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="pass"><td>Saf4</td><td>pass</td></tr><tr class="pass"><td>Konq</td><td>pass</td></tr><tr class="pass"><td>Chrome</td><td>pass</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo.html</code> +      </p><p><em>UA should offer to download the resource as "foo.html".</em></p></div><div id="attwithasciifnescapedchar"><h4><a href="#attwithasciifnescapedchar" class="plain">attwithasciifnescapedchar</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithasciifnescapedchar.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename="<b>f\oo.html</b>"</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="fail"><td>FF3</td><td>fail +                          (apparently does not treat the backslash as escape character, replaces it with '_') +                        </td></tr><tr class="fail"><td>MSIE8</td><td>fail +                          (apparently does not treat the backslash as escape character, replaces it with '_') +                        </td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="fail"><td>Saf4</td><td>fail +                          (apparently does not treat the backslash as escape character, replaces it with '-') +                        </td></tr><tr class="pass"><td>Konq</td><td>pass</td></tr><tr class="fail"><td>Chrome</td><td>fail +                          (saves "oo.html" (what's going on here?)) +                        </td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>f\oo.html</code> (the first 'o' being escaped) +      </p><p><em>UA should offer to download the resource as "foo.html".</em></p></div><div id="attwithfilenameandextparam"><h4><a href="#attwithfilenameandextparam" class="plain">attwithfilenameandextparam</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithfilenameandextparam.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; foo="bar"; filename="<b>foo.html</b>"</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="pass"><td>MSIE8</td><td>pass</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="pass"><td>Saf4</td><td>pass</td></tr><tr class="pass"><td>Konq</td><td>pass</td></tr><tr class="pass"><td>Chrome</td><td>pass</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo.html</code> +        and an extension parameter "foo" which should be ignored +        (see <a href="http://greenbytes.de/tech/webdav/rfc2183.html#rfc.section.2.8">Section 2.8 of RFC 2183</a>.). +      </p><p><em>UA should offer to download the resource as "foo.html".</em></p></div><div id="attwithasciifilenameucase"><h4><a href="#attwithasciifilenameucase" class="plain">attwithasciifilenameucase</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithasciifilenameucase.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; FILENAME="<b>foo.html</b>"</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="pass"><td>MSIE8</td><td>pass</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="pass"><td>Saf4</td><td>pass</td></tr><tr class="fail"><td>Konq</td><td>fail +                          (filename parameter is ignored) +                        </td></tr><tr class="pass"><td>Chrome</td><td>pass</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo.html</code> +      </p><p><em>UA should offer to download the resource as "foo.html".</em></p></div><div id="attwithasciifilenamenq"><h4><a href="#attwithasciifilenamenq" class="plain">attwithasciifilenamenq</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithasciifilenamenq.asis">TEST</a>] +            </h4><pre class="invalid"><b>Content-Disposition: </b>attachment; filename=<b>foo.html</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="warn"><td>FF3</td><td>warn +                          (accepts the unquoted value) +                        </td></tr><tr class="warn"><td>MSIE8</td><td>warn +                          (accepts the unquoted value) +                        </td></tr><tr class="warn"><td>Op10</td><td>warn +                          (accepts the unquoted value) +                        </td></tr><tr class="warn"><td>Saf4</td><td>warn +                          (accepts the unquoted value) +                        </td></tr><tr class="warn"><td>Konq</td><td>warn +                          (accepts the unquoted value) +                        </td></tr><tr class="warn"><td>Chrome</td><td>warn +                          (accepts the unquoted value) +                        </td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo.html</code>, but missing +        the quotes. +      </p><p><em>This is invalid according to <a href="http://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.19.5.1">Section 19.5.1 of RFC2616</a>, so UAs should +      ignore it.</em></p></div><div id="attwithisofnplain"><h4><a href="#attwithisofnplain" class="plain">attwithisofnplain</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithisofnplain.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename="<b>foo-ä.html</b>"</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="pass"><td>MSIE8</td><td>pass</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="pass"><td>Saf4</td><td>pass</td></tr><tr class="pass"><td>Konq</td><td>pass</td></tr><tr class="pass"><td>Chrome</td><td>pass</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-ä.html</code>, using plain ISO-8859-1 +      </p><p><em>UA should offer to download the resource as "foo-ä.html".</em></p></div><div id="attwithutf8fnplain"><h4><a href="#attwithutf8fnplain" class="plain">attwithutf8fnplain</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithutf8fnplain.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename="<b>foo-ä.html</b>"</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="fail"><td>FF3</td><td>fail +                          (decodes as UTF-8) +                        </td></tr><tr class="pass"><td>MSIE8</td><td>pass</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="pass"><td>Saf4</td><td>pass</td></tr><tr class="pass"><td>Konq</td><td>pass</td></tr><tr class="fail"><td>Chrome</td><td>fail +                          (decodes as UTF-8) +                        </td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-ä.html</code>, +        which happens to be <code>foo-ä.html</code> using UTF-8 encoding. +      </p><p><em>UA should offer to download the resource as "foo-ä.html". +      Displaying "foo-ä.html" instead indicates that the UA tried to be smart by detecting +      something that happens to look like UTF-8.</em></p></div><div id="attwithfnrawpctenca"><h4><a href="#attwithfnrawpctenca" class="plain">attwithfnrawpctenca</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithfnrawpctenca.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename="<b>foo-%41.html</b>"</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="fail"><td>MSIE8</td><td>fail +                          (displays "foo-A.html") +                        </td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="pass"><td>Saf4</td><td>pass</td></tr><tr class="pass"><td>Konq</td><td>pass</td></tr><tr class="fail"><td>Chrome</td><td>fail +                          (displays "foo-A.html" (see <a href="http://code.google.com/p/chromium/issues/detail?id=118">Chrome Issue 118</a>)) +                        </td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-%41.html</code> +      </p><p><em>UA should offer to download the resource as "foo-%41.html". +      Displaying "foo-A.html" instead would indicate that the UA has attempted +      to percent-decode the parameter. +      </em></p></div><div id="attwithfnrawpctenclong"><h4><a href="#attwithfnrawpctenclong" class="plain">attwithfnrawpctenclong</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithfnrawpctenclong.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename="<b>foo-%c3%a4-%e2%82%ac.html</b>"</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="fail"><td>MSIE8</td><td>fail +                          (displays "foo-ä-€.html") +                        </td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="pass"><td>Saf4</td><td>pass</td></tr><tr class="pass"><td>Konq</td><td>pass</td></tr><tr class="fail"><td>Chrome</td><td>fail +                          (displays "foo-ä-€.html" (see <a href="http://code.google.com/p/chromium/issues/detail?id=118">Chrome Issue 118</a>)) +                        </td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-%c3%a4-%e2%82%ac.html</code>, using raw percent encoded UTF-8 +        to represent <code>foo-ä-€.html</code> +      </p><p><em>UA should offer to download the resource as "foo-%c3%a4-%e2%82%ac.html". +      Displaying "foo-ä-€.html" instead would indicate that the UA has attempted +      to percent-decode the parameter (using UTF-8). Displaying something else +      would indicate that the UA tried to percent-decode, but used a different encoding. +      </em></p></div><div id="attwithasciifilenamews1"><h4><a href="#attwithasciifilenamews1" class="plain">attwithasciifilenamews1</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithasciifilenamews1.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename ="<b>foo.html</b>"</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="pass"><td>MSIE8</td><td>pass</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="pass"><td>Saf4</td><td>pass</td></tr><tr class="pass"><td>Konq</td><td>pass</td></tr><tr class="pass"><td>Chrome</td><td>pass</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo.html</code>, with one +        blank space <em>before</em> the equals character. +      </p><p><em>UA should offer to download the resource as "foo.html".</em></p></div><div id="attwithasciifilenamews2"><h4><a href="#attwithasciifilenamews2" class="plain">attwithasciifilenamews2</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithasciifilenamews2.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename= "<b>foo.html</b>"</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="pass"><td>MSIE8</td><td>pass</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="pass"><td>Saf4</td><td>pass</td></tr><tr class="pass"><td>Konq</td><td>pass</td></tr><tr class="pass"><td>Chrome</td><td>pass</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo.html</code>, with one +        blank space <em>after</em> the equals character. +      </p><p><em>UA should offer to download the resource as "foo.html".</em></p></div><div id="attfnbrokentoken"><h4><a href="#attfnbrokentoken" class="plain">attfnbrokentoken</a> +              [<a href="http://greenbytes.de/tech/tc2231/attfnbrokentoken.asis">TEST</a>] +            </h4><pre class="invalid"><b>Content-Disposition: </b>attachment; filename=<b>foo[1](2).html</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="warn"><td>FF3</td><td>warn +                          (accepts the unquoted value) +                        </td></tr><tr class="warn"><td>MSIE8</td><td>warn +                          (accepts the unquoted value) +                        </td></tr><tr class="warn"><td>Op10</td><td>warn +                          (accepts the unquoted value) +                        </td></tr><tr class="warn"><td>Saf4</td><td>warn +                          (accepts the unquoted value) +                        </td></tr><tr class="warn"><td>Konq</td><td>warn +                          (accepts the unquoted value) +                        </td></tr><tr class="warn"><td>Chrome</td><td>warn +                          (accepts the unquoted value) +                        </td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo[1](2).html</code>, but missing +        the quotes. Also, "[", "]", "(" and ")" are not allowed in the HTTP <a href="http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p1-messaging-latest.html#rfc.section.1.2.2">token</a> +        production. +      </p><p><em>This is invalid according to <a href="http://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.19.5.1">Section 19.5.1 of RFC2616</a>, +      so UAs should ignore it.</em></p></div></div><div id="c-d-parms"><h3><a href="#c-d-parms" class="plain">Content-Disposition: Additional Parameters</a></h3> +      <p> +        Various tests relating to the additional parameters defined in  +        <a href="http://greenbytes.de/tech/webdav/rfc2183.html#rfc.section.2">Section 2 of RFC 2183</a>. +      </p> +    <div id="attcdate"><h4><a href="#attcdate" class="plain">attcdate</a> +              [<a href="http://greenbytes.de/tech/tc2231/attcdate.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; <b>creation-date="Wed, 12 Feb 1997 16:29:51 -0500"</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="unsupported"><td>FF3</td><td>unsupported +                          (seems to ignore the parameter) +                        </td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported +                          (seems to ignore the parameter) +                        </td></tr><tr class="unsupported"><td>Op10</td><td>unsupported +                          (seems to ignore the parameter) +                        </td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported +                          (seems to ignore the parameter) +                        </td></tr><tr class="unsupported"><td>Konq</td><td>unsupported +                          (seems to ignore the parameter) +                        </td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported +                          (seems to ignore the parameter) +                        </td></tr></tbody></table><p>'attachment', plus creation-date (see <a href="http://greenbytes.de/tech/webdav/rfc2183.html#rfc.section.2.4">Section 2.4 of RFC 2183</a>)</p><p><em>UA should offer to download the resource. When doing so, +      the creation date should be set to 12 Feb 1997.</em></p></div><div id="attmdate"><h4><a href="#attmdate" class="plain">attmdate</a> +              [<a href="http://greenbytes.de/tech/tc2231/attmdate.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; <b>modification-date="Wed, 12 Feb 1997 16:29:51 -0500"</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="unsupported"><td>FF3</td><td>unsupported +                          (seems to ignore the parameter) +                        </td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported +                          (seems to ignore the parameter) +                        </td></tr><tr class="unsupported"><td>Op10</td><td>unsupported +                          (seems to ignore the parameter) +                        </td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported +                          (seems to ignore the parameter) +                        </td></tr><tr class="unsupported"><td>Konq</td><td>unsupported +                          (seems to ignore the parameter) +                        </td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported +                          (seems to ignore the parameter) +                        </td></tr></tbody></table><p>'attachment', plus modification-date (see <a href="http://greenbytes.de/tech/webdav/rfc2183.html#rfc.section.2.5">Section 2.5 of RFC 2183</a>)</p><p><em>UA should offer to download the resource. When doing so, +      the modification date should be set to 12 Feb 1997.</em></p></div></div><div id="c-d-extension"><h3><a href="#c-d-extension" class="plain">Content-Disposition: Disposition-Type Extension</a></h3> +      <p> +        A test checking behavior for disposition type extensions, +        which should be treated as "attachment", see  +        <a href="http://greenbytes.de/tech/webdav/rfc2183.html#rfc.section.2.8">Section 2.8 of RFC 2183</a>. +      </p> +    <div id="dispext"><h4><a href="#dispext" class="plain">dispext</a> +              [<a href="http://greenbytes.de/tech/tc2231/dispext.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>foobar</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="fail (does not treat it as 'attachment')"><td>MSIE8</td><td>fail (does not treat it as 'attachment')</td></tr><tr class="fail (does not treat it as 'attachment')"><td>Op10</td><td>fail (does not treat it as 'attachment')</td></tr><tr class="fail (does not treat it as 'attachment')"><td>Saf4</td><td>fail (does not treat it as 'attachment')</td></tr><tr class="fail (does not treat it as 'attachment')"><td>Konq</td><td>fail (does not treat it as 'attachment')</td></tr><tr class="pass"><td>Chrome</td><td>pass</td></tr></tbody></table><p>'foobar' only</p><p><em>This should be equivalent to using "attachment".</em></p></div></div><div id="encoding-2231-char"><h3><a href="#encoding-2231-char" class="plain">RFC2231 Encoding: Character Sets</a></h3> +      <p> +        Various tests using the parameter value encoding defined +        in <a href="http://greenbytes.de/tech/webdav/rfc2231.html#rfc.section.4">Section 4 of RFC 2231</a>. +      </p> +    <div id="attwithisofn2231iso"><h4><a href="#attwithisofn2231iso" class="plain">attwithisofn2231iso</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithisofn2231iso.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename*=<b>iso-8859-1''foo-%E4.html</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-ä.html</code>, using RFC2231 encoded ISO-8859-1 +      </p><p><em>UA should offer to download the resource as "foo-ä.html". +      </em></p></div><div id="attwithfn2231utf8"><h4><a href="#attwithfn2231utf8" class="plain">attwithfn2231utf8</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithfn2231utf8.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename*=<b>UTF-8''foo-%c3%a4-%e2%82%ac.html</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-ä-€.html</code>, using RFC2231 encoded UTF-8 +      </p><p><em>UA should offer to download the resource as "foo-ä-€.html". +      </em></p></div><div id="attwithfn2231noc"><h4><a href="#attwithfn2231noc" class="plain">attwithfn2231noc</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithfn2231noc.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename*=<b>''foo-%c3%a4-%e2%82%ac.html</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="warn"><td>FF3</td><td>warn +                          (decodes as UTF-8) +                        </td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="warn"><td>Op10</td><td>warn +                          (decodes as 8bit encoding (ISO-8859-1?)) +                        </td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        Behavior is undefined in RFC 2231, the charset part is missing, although UTF-8 was used. +      </p></div><div id="attwithfn2231utf8comp"><h4><a href="#attwithfn2231utf8comp" class="plain">attwithfn2231utf8comp</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithfn2231utf8comp.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename*=<b>UTF-8''foo-a%cc%88.html</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="warn"><td>Op10</td><td>warn +                          (displays "foo-ä.html") +                        </td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-ä.html</code>, using RFC2231 encoded UTF-8, but +        choosing the decomposed form (lowercase a plus COMBINING DIAERESIS) -- +        on a Windows target system, this should be translated to the preferred +        Unicode normal form (composed). +      </p><p><em>UA should offer to download the resource as "foo-ä.html". +      </em></p></div><div id="attwithfn2231utf8-bad"><h4><a href="#attwithfn2231utf8-bad" class="plain">attwithfn2231utf8-bad</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithfn2231utf8-bad.asis">TEST</a>] +            </h4><pre class="invalid"><b>Content-Disposition: </b>attachment; filename*=<b>iso-8859-1''foo-%c3%a4-%e2%82%ac.html</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="fail"><td>FF3</td><td>fail +                          (falls back to UTF-8) +                        </td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="warn"><td>Op10</td><td>warn +                          (displays the raw octet sequence as if it was ISO-8859-1 (which is internally  +      treated as windows-1252, which <em>does</em> allow %82)) +                        </td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-ä-€.html</code>, using RFC2231 encoded UTF-8, but declaring ISO-8859-1 +      </p><p><em> +        The octet %82 does not represent a valid ISO-8859-1 code point, so +        the UA should really ignore the parameter. +      </em></p></div><div id="attwithfn2231ws1"><h4><a href="#attwithfn2231ws1" class="plain">attwithfn2231ws1</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithfn2231ws1.asis">TEST</a>] +            </h4><pre class="invalid"><b>Content-Disposition: </b>attachment; filename<b> *=</b>UTF-8''foo-%c3%a4.html</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="fail"><td>FF3</td><td>fail +                          (displays garbage) +                        </td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-ä.html</code>, using RFC2231 encoded UTF-8, with whitespace before "*=" +      </p><p><em> +        The parameter is invalid, thus should be ignored. +      </em></p></div><div id="attwithfn2231ws2"><h4><a href="#attwithfn2231ws2" class="plain">attwithfn2231ws2</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithfn2231ws2.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename<b>*= </b>UTF-8''foo-%c3%a4.html</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-ä.html</code>, using RFC2231 encoded UTF-8, with whitespace after "*=" +      </p><p><em> +        UA should offer to download the resource as "foo-ä.html". +      </em></p></div><div id="attwithfn2231ws3"><h4><a href="#attwithfn2231ws3" class="plain">attwithfn2231ws3</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithfn2231ws3.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename<b>* =</b>UTF-8''foo-%c3%a4.html</pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-ä.html</code>, using RFC2231 encoded UTF-8, with whitespace inside "* =" +      </p><p><em> +        UA should offer to download the resource as "foo-ä.html". +      </em></p></div><div id="attwithfn2231quot"><h4><a href="#attwithfn2231quot" class="plain">attwithfn2231quot</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithfn2231quot.asis">TEST</a>] +            </h4><pre class="invalid"><b>Content-Disposition: </b>attachment; filename*=<b>"</b>UTF-8''foo-%c3%a4.html<b>"</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="fail"><td>FF3</td><td>fail +                          (tries to be helpful by removing the quotes) +                        </td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-ä.html</code>, using RFC2231 encoded UTF-8, with double quotes +        around the parameter value. +      </p><p><em> +        The parameter is invalid, thus should be ignored. +      </em></p></div><div id="attwithfn2231encmissing"><h4><a href="#attwithfn2231encmissing" class="plain">attwithfn2231encmissing</a> +              [<a href="http://greenbytes.de/tech/tc2231/attwithfn2231encmissing.asis">TEST</a>] +            </h4><pre class="invalid"><b>Content-Disposition: </b>attachment; filename*=<b>''foo-%c3%a4.html</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="fail"><td>FF3</td><td>fail +                          (sniffs the encoding as UTF-8) +                        </td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="fail"><td>Op10</td><td>fail +                          (assumes a default of ISO-8859-1) +                        </td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-ä.html</code>, using RFC2231 encoded UTF-8, but +        leaving out the charset field. +      </p><p><em> +        The parameter is invalid, thus should be ignored. +      </em></p></div></div><div id="encoding-2231-cont"><h3><a href="#encoding-2231-cont" class="plain">RFC2231 Encoding: Continuations</a></h3> +      <p> +        Various tests using the parameter value continuation efined +        in <a href="http://greenbytes.de/tech/webdav/rfc2231.html#rfc.section.3">Section 3 of RFC 2231</a>. +      </p> +    <div id="attfncont"><h4><a href="#attfncont" class="plain">attfncont</a> +              [<a href="http://greenbytes.de/tech/tc2231/attfncont.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename*0=<b>"foo."</b>; filename*1=<b>"html"</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo.html</code>, using RFC2231-style parameter continuations. +      </p><p><em> +        UA should offer to download the resource as "foo.html". +      </em></p></div><div id="attfncontenc"><h4><a href="#attfncontenc" class="plain">attfncontenc</a> +              [<a href="http://greenbytes.de/tech/tc2231/attfncontenc.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename*0*=<b>UTF-8''foo-%c3%a4</b>; filename*1=<b>".html"</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-ä.html</code>, using both RFC2231-style parameter continuations +        and UTF-8 encoding. +      </p><p><em> +        UA should offer to download the resource as "foo-ä.html". +      </em></p></div><div id="attfncontlz"><h4><a href="#attfncontlz" class="plain">attfncontlz</a> +              [<a href="http://greenbytes.de/tech/tc2231/attfncontlz.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename*0=<b>"foo"</b>; filename*01=<b>"bar"</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="warn"><td>FF3</td><td>warn +                          (accepts leading zeros) +                        </td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="warn"><td>Op10</td><td>warn +                          (accepts leading zeros) +                        </td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo</code> (the parameter filename*01 should be ignored because of the leading zero) +      </p><p><em> +        UA should offer to download the resource as "foo". +      </em></p></div><div id="attfncontnc"><h4><a href="#attfncontnc" class="plain">attfncontnc</a> +              [<a href="http://greenbytes.de/tech/tc2231/attfncontnc.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename*0=<b>"foo"</b>; filename*2=<b>"bar"</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="warn"><td>FF3</td><td>warn +                          (accepts gaps) +                        </td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo</code> (the parameter filename*2 because there's no filename*1 parameter) +      </p><p><em> +        UA should offer to download the resource as "foo". +      </em></p></div><div id="attfnconts1"><h4><a href="#attfnconts1" class="plain">attfnconts1</a> +              [<a href="http://greenbytes.de/tech/tc2231/attfnconts1.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename*1=<b>"foo."</b>; filename*2=<b>"html"</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass</td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        'attachment' (the filename* parameters should be ignored because filename*0 is missing) +      </p><p><em> +        UA should offer to download, not getting the filename from the header. +      </em></p></div><div id="attfncontord"><h4><a href="#attfncontord" class="plain">attfncontord</a> +              [<a href="http://greenbytes.de/tech/tc2231/attfncontord.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename*1=<b>"bar"</b>; filename*0=<b>"foo"</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="fail"><td>FF3</td><td>fail +                          (parameters are expected to be ordered) +                        </td></tr><tr class="unsupported"><td>MSIE8</td><td>unsupported</td></tr><tr class="pass"><td>Op10</td><td>pass</td></tr><tr class="unsupported"><td>Saf4</td><td>unsupported</td></tr><tr class="unsupported"><td>Konq</td><td>unsupported</td></tr><tr class="unsupported"><td>Chrome</td><td>unsupported</td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foobar</code> +      </p><p><em> +        UA should offer to download the resource as "foobar". +      </em></p></div></div><div id="encoding-2231-fb"><h3><a href="#encoding-2231-fb" class="plain">RFC2231 Encoding: Fallback Behaviour</a></h3> +      <p> +        This tests how the UA behaves when the same parameter name appear +        both in traditional and RFC 2231 extended format. +      </p> +    <div id="attfnboth"><h4><a href="#attfnboth" class="plain">attfnboth</a> +              [<a href="http://greenbytes.de/tech/tc2231/attfnboth.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename="<b>foo-ae.html</b>"; filename*=<b>UTF-8''foo-%c3%a4.html</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass +                          (picks the traditionally encoded value -- the first of both) +                        </td></tr><tr class="pass"><td>MSIE8</td><td>pass +                          (picks the traditionally encoded value -- the first of both) +                        </td></tr><tr class="pass"><td>Op10</td><td>pass +                          (picks the traditionally encoded value -- the first of both) +                        </td></tr><tr class="pass"><td>Saf4</td><td>pass +                          (picks the traditionally encoded value -- the first of both) +                        </td></tr><tr class="pass"><td>Konq</td><td>pass +                          (picks the traditionally encoded value -- the first of both) +                        </td></tr><tr class="pass"><td>Chrome</td><td>pass +                          (picks the traditionally encoded value -- the first of both) +                        </td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-ae.html</code> in +        the traditional format, and <code>foo-ä.html</code> in RFC2231 format. +      </p><p><em> +        The behaviour of this undefined. Thus UAs should one of the two values. +      </em></p></div><div id="attfnboth2"><h4><a href="#attfnboth2" class="plain">attfnboth2</a> +              [<a href="http://greenbytes.de/tech/tc2231/attfnboth2.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename*=<b>UTF-8''foo-%c3%a4.html</b>; filename=<b>"foo-ae.html"</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="pass"><td>FF3</td><td>pass +                          (picks the RFC2231 encoded value -- the first of both) +                        </td></tr><tr class="fail"><td>MSIE8</td><td>fail +                          (ignores the parameter (this indicates a parsing bug)) +                        </td></tr><tr class="pass"><td>Op10</td><td>pass +                          (picks the RFC2231 encoded value -- the first of both) +                        </td></tr><tr class="pass"><td>Saf4</td><td>pass +                          (picks the traditionally encoded value -- the one it understands) +                        </td></tr><tr class="pass"><td>Konq</td><td>pass +                          (picks the traditionally encoded value -- the one it understands) +                        </td></tr><tr class="fail"><td>Chrome</td><td>fail +                          (ignores the parameter (this indicates a parsing bug)) +                        </td></tr></tbody></table><p> +        'attachment', specifying a filename of <code>foo-ae.html</code> in +        the traditional format, and <code>foo-ä.html</code> in RFC2231 format. +      </p><p><em> +        The behaviour of this undefined. Thus UAs should one of the two values. +      </em></p></div></div><div id="encoding-2047"><h3><a href="#encoding-2047" class="plain">RFC2047 Encoding</a></h3> +      <p> +        These tests RFC 2047 style encoding.  +      </p> +      <p> +        Note that according to <a href="http://greenbytes.de/tech/webdav/rfc2047.html#rfc.section.5">Section 5 of RFC 2047</a>, +        this encoding does not apply here: <q cite="http://greenbytes.de/tech/webdav/rfc2047.html#rfc.section.5">An 'encoded-word' MUST NOT appear within a 'quoted-string'.</q>, and +        <q cite="http://greenbytes.de/tech/webdav/rfc2047.html#rfc.section.5">An 'encoded-word' MUST NOT be used in parameter of a MIME +        Content-Type or Content-Disposition field, or in any structured +        field body except within a 'comment' or 'phrase'.</q> +      </p> +      <p> +        Therefore, these tests are only be present in order to check +        whether the UA by mistake tries to implement RFC2047. +      </p> +    <div id="attrfc2047token"><h4><a href="#attrfc2047token" class="plain">attrfc2047token</a> +              [<a href="http://greenbytes.de/tech/tc2231/attrfc2047token.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename=<b>=?ISO-8859-1?Q?foo-=E4.html?=</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="fail"><td>FF3</td><td>fail +                          (decodes it anyway to "foo-ä.html") +                        </td></tr><tr class="pass"><td>MSIE8</td><td>pass +                          (takes the whole value as filename, but does not decode it (replacing question marks by underscores)) +                        </td></tr><tr class="fail"><td>Op10</td><td>fail +                          (displays garbage ("=.htm")) +                        </td></tr><tr class="pass"><td>Saf4</td><td>pass +                          (takes the whole value as filename, but does not decode it (replacing question marks by underscores)) +                        </td></tr><tr class="fail"><td>Konq</td><td>fail +                          (decodes it anyway to "foo-ä.html") +                        </td></tr><tr class="fail"><td>Chrome</td><td>fail +                          (decodes it anyway to "foo-ä.html") +                        </td></tr></tbody></table><p> +        Uses RFC 2047 style encoded word. "=" is invalid inside the <code>token</code> +        production, so this is invalid. +      </p></div><div id="attrfc2047quoted"><h4><a href="#attrfc2047quoted" class="plain">attrfc2047quoted</a> +              [<a href="http://greenbytes.de/tech/tc2231/attrfc2047quoted.asis">TEST</a>] +            </h4><pre><b>Content-Disposition: </b>attachment; filename=<b>"=?ISO-8859-1?Q?foo-=E4.html?="</b></pre><table class="aside"><thead><tr><th colspan="2"> +                      Test Results +                    </th></tr></thead><tbody><tr class="fail"><td>FF3</td><td>fail +                          (decodes it anyway to "foo-ä.html") +                        </td></tr><tr class="pass"><td>MSIE8</td><td>pass +                          (takes the whole value as filename, but does not decode it) +                        </td></tr><tr class="fail"><td>Op10</td><td>fail +                          (displays garbage ("=.htm")) +                        </td></tr><tr class="pass"><td>Saf4</td><td>pass +                          (takes the whole value as filename, but does not decode it) +                        </td></tr><tr class="fail"><td>Konq</td><td>fail +                          (decodes it anyway to "foo-ä.html") +                        </td></tr><tr class="fail"><td>Chrome</td><td>fail +                          (decodes it anyway to "foo-ä.html") +                        </td></tr></tbody></table><p> +        Uses RFC 2047 style encoded word, using the <code>quoted-string</code> production. +      </p></div></div> +</body></html>
\ No newline at end of file diff --git a/src/tests/findbar_test.cpp b/src/tests/findbar_test.cpp new file mode 100644 index 00000000..a79f44a2 --- /dev/null +++ b/src/tests/findbar_test.cpp @@ -0,0 +1,76 @@ +/* + * Copyright 2010 Andrea Diamantini <adjam7@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA  02110-1301  USA + */ + + + +#include <qtest_kde.h> + +#include <QtGui> +#include <QtTest/QtTest> + +#include "findbar.h" +#include "mainwindow.h" + + +class FindBarTest : public QObject +{ +    Q_OBJECT +    +public slots: +    void initTestCase(); +    void cleanupTestCase(); +     +private slots: +    void matchCase(); +    void notifyMatch(); + +private: +    FindBar *bar; +    MainWindow *w; +}; + + +// ------------------------------------------- + + +void FindBarTest::initTestCase() +{ +    w = new MainWindow; +    bar = new FindBar(w); +} + + +void FindBarTest::cleanupTestCase() +{ +    delete bar; +} +     +void FindBarTest::matchCase() +{ +     +} + +void FindBarTest::notifyMatch() +{ +} + +// ------------------------------------------- + +QTEST_KDEMAIN(FindBarTest, GUI) +#include "findbar_test.moc" diff --git a/src/tests/link_test.html b/src/tests/link_test.html index 7dd1470d..5ca3cd41 100644 --- a/src/tests/link_test.html +++ b/src/tests/link_test.html @@ -135,6 +135,13 @@  <td><a href="http://ads.cnn.com/" target="_blank">link</a></td>  </tr> + +<tr> +<td>http://ja.wikipedia.org/wiki/特別:最近の更新</td> +<td>KGet import links with particular encoding</td> +<td><a href="http://ja.wikipedia.org/wiki/特別:最近の更新">link</a></td> +</tr> +  <tr>  <td></td>  <td></td> diff --git a/src/tests/mainview_test.cpp b/src/tests/mainview_test.cpp index f56d73ab..596ac4e1 100644 --- a/src/tests/mainview_test.cpp +++ b/src/tests/mainview_test.cpp @@ -27,12 +27,13 @@  #include <qtest_kde.h> -#include <QtTest>  #include <QtCore>  #include <QtGui> +#include <QtTest> -#include "../mainview.h" -#include "../webview.h" +#include "mainwindow.h" +#include "mainview.h" +#include "webview.h"  class MainViewTest : public QObject @@ -42,8 +43,6 @@ class MainViewTest : public QObject  public slots:      void initTestCase();      void cleanupTestCase(); -    void init(); -    void cleanup();  private slots:      void tabwidget_data(); @@ -75,38 +74,29 @@ private slots:      void currentChanged_data();      void currentChanged(); + +private: +    MainWindow *window; +    MainView *view;  }; -// Subclass that exposes the protected functions. -class SubMainView : public MainView -{ -public: -    void call_resizeEvent(QResizeEvent *event) -        { return SubMainView::resizeEvent(event); } -}; +// -------------------------------------------------------------------------------  // This will be called before the first test function is executed.  // It is only called once.  void MainViewTest::initTestCase()  { +    window = new MainWindow; +    view = window->mainView();  }  // This will be called after the last test function is executed.  // It is only called once.  void MainViewTest::cleanupTestCase()  { -} - -// This will be called before each test function is executed. -void MainViewTest::init() -{ -} - -// This will be called after every test function. -void MainViewTest::cleanup() -{ +//     delete window;   // FIXME: this let the test fail. Why??  }  // ------------------------------------------- @@ -117,14 +107,16 @@ void MainViewTest::tabwidget_data()  void MainViewTest::tabwidget()  { -    SubMainView widget; -//     widget.currentWebView(); -//     QCOMPARE(widget.currentIndex(), 0); -//     widget.newTab(); -//     widget.nextTab(); -//     QCOMPARE(widget.currentIndex(), 1); -//     widget.previousTab(); -//     QCOMPARE(widget.currentIndex(), 0); +    QCOMPARE(view->currentIndex(), -1); +     +//     view->newTab();     +//     QCOMPARE(view->currentIndex(), 1);  +//     view->newTab(); +//     view->nextTab(); +//     QCOMPARE(view->currentIndex(), 0); +//  +//     view->previousTab(); +//     QCOMPARE(view->currentIndex(), 0);  }  // ------------------------------------------- @@ -135,33 +127,30 @@ void MainViewTest::closeTab_data()      QTest::newRow("null") << 0;  } -// public void closeTab(int index = -1) +  void MainViewTest::closeTab()  { -    QFETCH(int, index); - -    SubMainView widget; -/* -    QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &))); -    QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &))); -QSignalSpy spy5(&widget, SIGNAL(tabsChanged())); -    QSignalSpy spy6(&widget, SIGNAL(lastTabClosed())); - -    widget.newTab(); -    widget.slotCloseTab(index); -    widget.newTab(); -    widget.slotCloseTab(index); -    widget.newTab(); - -    QCOMPARE(spy0.count(), 0); -    QCOMPARE(spy3.count(), 2); -    QCOMPARE(spy5.count(), 0); -    QCOMPARE(spy6.count(), 0);*/ +//     QFETCH(int, index); +//  +//     QSignalSpy spy1(view, SIGNAL(linkHovered(const QString &))); +//     QSignalSpy spy2(view, SIGNAL(setCurrentTitle(const QString &))); +//     QSignalSpy spy3(view, SIGNAL(tabsChanged())); +//     QSignalSpy spy4(view, SIGNAL(lastTabClosed())); +//  +//     view->newTab(); +//     view->closeTab(index); +//     view->newTab(); +//     view->closeTab(index); +//     view->newTab(); +//  +//     QCOMPARE(spy1.count(), 0); +//     QCOMPARE(spy2.count(), 2); +//     QCOMPARE(spy3.count(), 0); +//     QCOMPARE(spy4.count(), 0);  }  // ------------------------------------------- -Q_DECLARE_METATYPE(WebView*)  void MainViewTest::currentWebView_data()  {      /* @@ -170,7 +159,6 @@ void MainViewTest::currentWebView_data()      */  } -// public WebView *currentWebView() const  void MainViewTest::currentWebView()  {      /* @@ -178,12 +166,12 @@ void MainViewTest::currentWebView()      SubMainView widget; -    QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &))); -    QSignalSpy spy2(&widget, SIGNAL(loadProgress(int))); -    QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &))); -    QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &))); -    QSignalSpy spy5(&widget, SIGNAL(tabsChanged())); -    QSignalSpy spy6(&widget, SIGNAL(lastTabClosed())); +    QSignalSpy spy0(view, SIGNAL(linkHovered(const QString &))); +    QSignalSpy spy2(view, SIGNAL(loadProgress(int))); +    QSignalSpy spy3(view, SIGNAL(setCurrentTitle(const QString &))); +    QSignalSpy spy4(view, SIGNAL(showStatusBarMessage(const QString &))); +    QSignalSpy spy5(view, SIGNAL(tabsChanged())); +    QSignalSpy spy6(view, SIGNAL(lastTabClosed()));      QCOMPARE(widget.currentWebView(), currentWebView); @@ -205,31 +193,24 @@ void MainViewTest::newTab_data()      QTest::newRow("null") << 0;  } -// public void newTab() +  void MainViewTest::newTab()  { -    /* -    QFETCH(int, foo); - -    SubMainView widget; - -    QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &))); -    QSignalSpy spy2(&widget, SIGNAL(loadProgress(int))); -    QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &))); -    QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &))); -    QSignalSpy spy5(&widget, SIGNAL(tabsChanged())); -    QSignalSpy spy6(&widget, SIGNAL(lastTabClosed())); - -    widget.newTab(); - -    QCOMPARE(spy0.count(), 0); -    QCOMPARE(spy2.count(), 0); -    QCOMPARE(spy3.count(), 0); -    QCOMPARE(spy4.count(), 0); -    QCOMPARE(spy5.count(), 0); -    QCOMPARE(spy6.count(), 0); -    */ -    QSKIP("Test is not implemented.", SkipAll); +//     QFETCH(int, foo); +//  +//     QSignalSpy spy0(view, SIGNAL(linkHovered(const QString &))); +//     QSignalSpy spy1(view, SIGNAL(setCurrentTitle(const QString &))); +//     QSignalSpy spy2(view, SIGNAL(showStatusBarMessage(const QString &))); +//     QSignalSpy spy3(view, SIGNAL(tabsChanged())); +//     QSignalSpy spy4(view, SIGNAL(lastTabClosed())); +//  +//     view->newTab(); +//  +//     QCOMPARE(spy0.count(), 0); +//     QCOMPARE(spy1.count(), 0); +//     QCOMPARE(spy2.count(), 0); +//     QCOMPARE(spy3.count(), 0); +//     QCOMPARE(spy4.count(), 0);  }  // ------------------------------------------- @@ -248,12 +229,12 @@ void MainViewTest::nextTab()      SubMainView widget; -    QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &))); -    QSignalSpy spy2(&widget, SIGNAL(loadProgress(int))); -    QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &))); -    QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &))); -    QSignalSpy spy5(&widget, SIGNAL(tabsChanged())); -    QSignalSpy spy6(&widget, SIGNAL(lastTabClosed())); +    QSignalSpy spy0(view, SIGNAL(linkHovered(const QString &))); +    QSignalSpy spy2(view, SIGNAL(loadProgress(int))); +    QSignalSpy spy3(view, SIGNAL(setCurrentTitle(const QString &))); +    QSignalSpy spy4(view, SIGNAL(showStatusBarMessage(const QString &))); +    QSignalSpy spy5(view, SIGNAL(tabsChanged())); +    QSignalSpy spy6(view, SIGNAL(lastTabClosed()));      widget.nextTab(); @@ -284,12 +265,12 @@ void MainViewTest::previousTab()      SubMainView widget; -    QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &))); -    QSignalSpy spy2(&widget, SIGNAL(loadProgress(int))); -    QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &))); -    QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &))); -    QSignalSpy spy5(&widget, SIGNAL(tabsChanged())); -    QSignalSpy spy6(&widget, SIGNAL(lastTabClosed())); +    QSignalSpy spy0(view, SIGNAL(linkHovered(const QString &))); +    QSignalSpy spy2(view, SIGNAL(loadProgress(int))); +    QSignalSpy spy3(view, SIGNAL(setCurrentTitle(const QString &))); +    QSignalSpy spy4(view, SIGNAL(showStatusBarMessage(const QString &))); +    QSignalSpy spy5(view, SIGNAL(tabsChanged())); +    QSignalSpy spy6(view, SIGNAL(lastTabClosed()));      widget.previousTab(); @@ -314,12 +295,12 @@ void MainViewTest::recentlyClosedTabs()      /*      SubMainView widget; -    QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &))); -    QSignalSpy spy2(&widget, SIGNAL(loadProgress(int))); -    QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &))); -    QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &))); -    QSignalSpy spy5(&widget, SIGNAL(tabsChanged())); -    QSignalSpy spy6(&widget, SIGNAL(lastTabClosed())); +    QSignalSpy spy0(view, SIGNAL(linkHovered(const QString &))); +    QSignalSpy spy2(view, SIGNAL(loadProgress(int))); +    QSignalSpy spy3(view, SIGNAL(setCurrentTitle(const QString &))); +    QSignalSpy spy4(view, SIGNAL(showStatusBarMessage(const QString &))); +    QSignalSpy spy5(view, SIGNAL(tabsChanged())); +    QSignalSpy spy6(view, SIGNAL(lastTabClosed()));      QCOMPARE(spy0.count(), 0);      QCOMPARE(spy2.count(), 0); @@ -347,12 +328,12 @@ void MainViewTest::setCurrentTitle(const QString &)      SubMainView widget; -    QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &))); -    QSignalSpy spy2(&widget, SIGNAL(loadProgress(int))); -    QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &))); -    QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &))); -    QSignalSpy spy5(&widget, SIGNAL(tabsChanged())); -    QSignalSpy spy6(&widget, SIGNAL(lastTabClosed())); +    QSignalSpy spy0(view, SIGNAL(linkHovered(const QString &))); +    QSignalSpy spy2(view, SIGNAL(loadProgress(int))); +    QSignalSpy spy3(view, SIGNAL(setCurrentTitle(const QString &))); +    QSignalSpy spy4(view, SIGNAL(showStatusBarMessage(const QString &))); +    QSignalSpy spy5(view, SIGNAL(tabsChanged())); +    QSignalSpy spy6(view, SIGNAL(lastTabClosed()));      widget.call_setCurrentTitle(url); @@ -382,12 +363,12 @@ void MainViewTest::showStatusBarMessage(const QString &)      SubMainView widget; -    QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &))); -    QSignalSpy spy2(&widget, SIGNAL(loadProgress(int))); -    QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &))); -    QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &))); -    QSignalSpy spy5(&widget, SIGNAL(tabsChanged())); -    QSignalSpy spy6(&widget, SIGNAL(lastTabClosed())); +    QSignalSpy spy0(view, SIGNAL(linkHovered(const QString &))); +    QSignalSpy spy2(view, SIGNAL(loadProgress(int))); +    QSignalSpy spy3(view, SIGNAL(setCurrentTitle(const QString &))); +    QSignalSpy spy4(view, SIGNAL(showStatusBarMessage(const QString &))); +    QSignalSpy spy5(view, SIGNAL(tabsChanged())); +    QSignalSpy spy6(view, SIGNAL(lastTabClosed()));      widget.call_showStatusBarMessage(message); @@ -403,14 +384,12 @@ void MainViewTest::showStatusBarMessage(const QString &)  // ------------------------------------------- -// void slotCurrentChanged(int index);  void MainViewTest::currentChanged_data()  {      QTest::addColumn<int>("foo");      QTest::newRow("null") << 0;  } -// private slotCurrentChanged  void MainViewTest::currentChanged()  {      /* @@ -418,12 +397,12 @@ void MainViewTest::currentChanged()      SubMainView widget; -    QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &))); -    QSignalSpy spy2(&widget, SIGNAL(loadProgress(int))); -    QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &))); -    QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &))); -    QSignalSpy spy5(&widget, SIGNAL(tabsChanged())); -    QSignalSpy spy6(&widget, SIGNAL(lastTabClosed())); +    QSignalSpy spy0(view, SIGNAL(linkHovered(const QString &))); +    QSignalSpy spy2(view, SIGNAL(loadProgress(int))); +    QSignalSpy spy3(view, SIGNAL(setCurrentTitle(const QString &))); +    QSignalSpy spy4(view, SIGNAL(showStatusBarMessage(const QString &))); +    QSignalSpy spy5(view, SIGNAL(tabsChanged())); +    QSignalSpy spy6(view, SIGNAL(lastTabClosed()));      widget.call_tabsChanged(); diff --git a/src/tests/mainwindow_test.cpp b/src/tests/mainwindow_test.cpp new file mode 100644 index 00000000..d3ab6bef --- /dev/null +++ b/src/tests/mainwindow_test.cpp @@ -0,0 +1,65 @@ +/* + * Copyright 2010 Andrea Diamantini <adjam7@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA  02110-1301  USA + */ + + + +#include <qtest_kde.h> + +#include <QtCore> +#include <QtGui> +#include <QtTest> + +#include "mainwindow.h" +#include "application.h" + + +class MainWindowTest : public QObject +{ +    Q_OBJECT +     +public slots: +    void initTestCase(); +    void cleanupTestCase(); +     +private slots: + + +private: +    MainWindow *window; +}; + + +// ------------------------------------------- + + +void MainWindowTest::initTestCase() +{ +    window = new MainWindow; +} + + +void MainWindowTest::cleanupTestCase() +{ +//     delete window; +} + +// ------------------------------------------- + +QTEST_KDEMAIN(MainWindowTest,GUI) +#include "mainwindow_test.moc" diff --git a/src/tests/networkaccessmanager_test.cpp b/src/tests/networkaccessmanager_test.cpp new file mode 100644 index 00000000..ac6cf89e --- /dev/null +++ b/src/tests/networkaccessmanager_test.cpp @@ -0,0 +1,67 @@ +/* + * Copyright 2010 Andrea Diamantini <adjam7@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA  02110-1301  USA + */ + + + +#include <qtest_kde.h> + +#include <QtCore> +#include <QtGui> +#include <QtTest> + +#include "networkaccessmanager.h" + + +class NetworkAccessManagerTest : public QObject +{ +    Q_OBJECT +     +public slots: +    void initTestCase(); +    void cleanupTestCase(); +     +private slots: + +private: +    NetworkAccessManager *manager; +}; + + +// ------------------------------------------- + +void NetworkAccessManagerTest::initTestCase() +{ +    manager = new NetworkAccessManager(this); +} + + +void NetworkAccessManagerTest::cleanupTestCase() +{ +    delete manager; +} +     +     +// ------------------------------------------- + + + +// ------------------------------------------- + +QTEST_KDEMAIN(NetworkAccessManagerTest,GUI) +#include "networkaccessmanager_test.moc" diff --git a/src/tests/protocolhandler_test.cpp b/src/tests/protocolhandler_test.cpp new file mode 100644 index 00000000..a3c78c2f --- /dev/null +++ b/src/tests/protocolhandler_test.cpp @@ -0,0 +1,130 @@ +/* + * Copyright 2010 Andrea Diamantini <adjam7@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA  02110-1301  USA + */ + + + +#include <qtest_kde.h> + +#include <QtCore> +#include <QtGui> +#include <QtTest> +#include <QtNetwork> +#include <QtWebKit> + +#include "protocolhandler.h" + + +class ProtocolhandlerTest : public QObject +{ +    Q_OBJECT +     +public slots: +    void initTestCase(); +    void cleanupTestCase(); +     +private slots: +    void preHandling_data(); +    void preHandling(); + +    void postHandling_data(); +    void postHandling(); +     +private: +    ProtocolHandler *handler; +}; + + +// ------------------------------------------- + +void ProtocolhandlerTest::initTestCase() +{ +    handler = new ProtocolHandler; +} + + +void ProtocolhandlerTest::cleanupTestCase() +{ +    delete handler; +} +     +     +// ------------------------------------------- + + +void ProtocolhandlerTest::preHandling_data() +{ +    QTest::addColumn<QString>("urlString"); +    QTest::addColumn<bool>("result"); +     +    QTest::newRow("mailto")     << "mailto:me@here.com"             << true  ; +    QTest::newRow("relative")   << "google.it"                      << false ; +    QTest::newRow("javascript") << "javascript:alertbox('hello')"   << true  ; +    QTest::newRow("aboutblank") << "about:blank"                    << false ; +    QTest::newRow("abouthome")  << "about:home"                     << true  ; +    QTest::newRow("ftp")        << "ftp://ftp.kde.org"              << false ; +    QTest::newRow("file")       << "file:///home"                   << false ; +} + + +void ProtocolhandlerTest::preHandling() +{ +    QFETCH( QString, urlString ); +    QFETCH( bool   , result    ); +     +    QWebView *view = new QWebView; +    QWebFrame *frame = view->page()->mainFrame(); +     +    QNetworkRequest request = QNetworkRequest( QUrl(urlString) ); + +    QCOMPARE( handler->preHandling( request, frame ) , result ); +} + + +void ProtocolhandlerTest::postHandling_data() +{ +    QTest::addColumn<QString>("urlString"); +    QTest::addColumn<bool>("result"); +     +    QTest::newRow("mailto")     << "mailto:me@here.com"             << true  ; +    QTest::newRow("relative")   << "google.it"                      << false ; +    QTest::newRow("javascript") << "javascript:alertbox('hello')"   << false ; +    QTest::newRow("aboutblank") << "about:blank"                    << false ; +    QTest::newRow("abouthome")  << "about:home"                     << false ; +    QTest::newRow("ftp")        << "ftp://ftp.kde.org"              << true  ; +    QTest::newRow("file")       << "file:///home"                   << true  ; +} + + +void ProtocolhandlerTest::postHandling() +{ +    QFETCH( QString, urlString ); +    QFETCH( bool   , result    ); +     +    QWebView *view = new QWebView; +    QWebFrame *frame = view->page()->mainFrame(); +     +    QNetworkRequest request = QNetworkRequest( QUrl(urlString) ); + +    QCOMPARE( handler->postHandling( request, frame ) , result ); +} +     +// ------------------------------------------- + +QTEST_KDEMAIN(ProtocolhandlerTest,GUI) +#include "protocolhandler_test.moc" diff --git a/src/tests/sessionmanager_test.cpp b/src/tests/sessionmanager_test.cpp new file mode 100644 index 00000000..e3e1b329 --- /dev/null +++ b/src/tests/sessionmanager_test.cpp @@ -0,0 +1,69 @@ +/* + * Copyright 2010 Andrea Diamantini <adjam7@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA  02110-1301  USA + */ + + + +#include <qtest_kde.h> + +#include <QtCore> +#include <QtGui> +#include <QtTest> + + +#include "sessionmanager.h" + + +class SessionManagerTest : public QObject +{ +    Q_OBJECT +     +public slots: +    void initTestCase(); +    void cleanupTestCase(); +     +private slots: + +private: +    SessionManager *sessman; +}; + + +// ------------------------------------------- + + +void SessionManagerTest::initTestCase() +{ +    sessman = new SessionManager; +} + + +void SessionManagerTest::cleanupTestCase() +{ +    delete sessman; +} +     +     +// ------------------------------------------- + + + +// ------------------------------------------- + +QTEST_KDEMAIN(SessionManagerTest,GUI) +#include "sessionmanager_test.moc" diff --git a/src/tests/tabbar_test.cpp b/src/tests/tabbar_test.cpp index 08f295d1..560f2c9b 100644 --- a/src/tests/tabbar_test.cpp +++ b/src/tests/tabbar_test.cpp @@ -24,116 +24,115 @@  #include <QtCore>  #include <QtGui> -#include "../tabbar.h" +#include "mainwindow.h" +#include "mainview.h" +#include "tabbar.h" -class TabBarTest : public QObject -{ -    Q_OBJECT - -public slots: -    void initTestCase(); -    void cleanupTestCase(); -    void init(); -    void cleanup(); - -private slots: -    void tabbar_data(); -    void tabbar(); - -    void tabSizeHint_data(); -    void tabSizeHint(); -}; - - -// Subclass that exposes the protected functions. +/** + * Subclass that exposes the protected functions. + */  class SubTabBar : public TabBar  {  public: -    void call_cloneTab(int index) -        { return SubTabBar::cloneTab(index); } - -    void call_closeOtherTabs(int index) -        { return SubTabBar::closeOtherTabs(index); } - -    void call_closeTab(int index) -        { return SubTabBar::closeTab(index); } +     +    SubTabBar(QWidget *parent) : TabBar(parent) {}; +    QSize call_tabSizeHint(int index) const +        { return SubTabBar::tabSizeHint(index); } +              void call_mouseMoveEvent(QMouseEvent* event)          { return SubTabBar::mouseMoveEvent(event); } - +         +    void call_leaveEvent(QEvent* event) +        { return SubTabBar::leaveEvent(event); } +              void call_mousePressEvent(QMouseEvent* event)          { return SubTabBar::mousePressEvent(event); } +         +    void call_mouseReleaseEvent(QMouseEvent* event) +        { return SubTabBar::mouseReleaseEvent(event); }         +}; -    void call_reloadAllTabs() -        { return SubTabBar::reloadAllTabs(); } -    void call_reloadTab(int index) -        { return SubTabBar::reloadTab(index); } +// ------------------------------------------------------------------ -    QSize call_tabSizeHint(int index) const -        { return SubTabBar::tabSizeHint(index); } -    void call_showTabPreview(int tab) -        { return SubTabBar::showTabPreview(tab); } +class TabBarTest : public QObject +{ +    Q_OBJECT + +public slots: +    void initTestCase(); +    void cleanupTestCase(); +     +private slots: +    void tabSizeHint_data(); +    void tabSizeHint(); +     +    void mousePress_data(); +    void mousePress(); +     +private: +    SubTabBar *_bar;  }; -// This will be called before the first test function is executed. -// It is only called once. +// ------------------------------------------- +  void TabBarTest::initTestCase()  { +    MainWindow *w = new MainWindow; +    MainView *mv = new MainView(w); +    _bar = new SubTabBar(mv);  } - -// This will be called after the last test function is executed. -// It is only called once.  void TabBarTest::cleanupTestCase()  { +    delete _bar;  } +// ------------------------------------------- -// This will be called before each test function is executed. -void TabBarTest::init() +void TabBarTest::tabSizeHint_data()  { +    QTest::addColumn<int>("index"); + +    QTest::newRow("1th") << 0; +    QTest::newRow("2nd") << 1; +    QTest::newRow("3rd") << 2; +    QTest::newRow("4th") << 3; +    QTest::newRow("5th") << 4; +    QTest::newRow("6th") << 5; +    QTest::newRow("7th") << 6; +    QTest::newRow("8th") << 7; +    QTest::newRow("9th") << 8; +    QTest::newRow("10th") << 9;  } -// This will be called after every test function. -void TabBarTest::cleanup() +void TabBarTest::tabSizeHint()  { -} +    QFETCH(int, index); -// ------------------------------------------- - -void TabBarTest::tabbar_data() -{ +    QVERIFY(_bar->call_tabSizeHint(index).width() > 0);  } -void TabBarTest::tabbar() +void TabBarTest::mousePress_data()  { -    SubTabBar widget;  } -// ------------------------------------------- -void TabBarTest::tabSizeHint_data() +void TabBarTest::mousePress()  { -//     QTest::addColumn<int>("index"); -//     QTest::newRow("0") << 0; +//     QTest::mousePress(_bar, Qt::MidButton); +// //     QCOMPARE();  ? +//  +//     QTest::mousePress(_bar, Qt::LeftButton); +// //     QCOMPARE();  ?  } - -// protected QSize tabSizeHint(int index) const -void TabBarTest::tabSizeHint() -{ -    // Need fixes as our function uses MainView methods to determine size -//     QFETCH(int, index); -//     SubTabBar bar; -//     QVERIFY(bar.call_tabSizeHint(index).width() <= 250); -} -      // -------------------------------------------  QTEST_KDEMAIN(TabBarTest, GUI) diff --git a/src/tests/urlbar_test.cpp b/src/tests/urlbar_test.cpp new file mode 100644 index 00000000..7a1fb40b --- /dev/null +++ b/src/tests/urlbar_test.cpp @@ -0,0 +1,74 @@ +/* + * Copyright 2010 Andrea Diamantini <adjam7@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA  02110-1301  USA + */ + + + +#include <qtest_kde.h> + +#include <QtCore> +#include <QtGui> +#include <QtTest> + +#include "webpage.h" +#include "webview.h" +#include "webtab.h" + +#include "urlbar.h" + + +class UrlBarTest : public QObject +{ +    Q_OBJECT +     +public slots: +    void initTestCase(); +    void cleanupTestCase(); +     +private slots: + +private: +    UrlBar *bar; +    WebTab *tab; +}; + + +// ------------------------------------------- + +void UrlBarTest::initTestCase() +{ +    tab = new WebTab; +    bar = new UrlBar(tab); +} + + +void UrlBarTest::cleanupTestCase() +{ +    delete bar; +    delete tab; +} +     +     +// ------------------------------------------- + + + +// ------------------------------------------- + +QTEST_KDEMAIN(UrlBarTest,GUI) +#include "urlbar_test.moc" diff --git a/src/tests/walletbar_test.cpp b/src/tests/walletbar_test.cpp new file mode 100644 index 00000000..ec9c3559 --- /dev/null +++ b/src/tests/walletbar_test.cpp @@ -0,0 +1,69 @@ +/* + * Copyright 2010 Andrea Diamantini <adjam7@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA  02110-1301  USA + */ + + + +#include <qtest_kde.h> + +#include <QtCore> +#include <QtGui> +#include <QtTest> + +#include "walletbar.h" + + +class WalletBarTest : public QObject +{ +    Q_OBJECT +     +public slots: +    void initTestCase(); +    void cleanupTestCase(); +     +private slots: + +private: +    WalletBar *bar; +}; + + +// ------------------------------------------- + + +void WalletBarTest::initTestCase() +{ +    QWidget *w = new QWidget; +    bar = new WalletBar(w); +} + + +void WalletBarTest::cleanupTestCase() +{ +    delete bar; +} +     +     +// ------------------------------------------- + + + +// ------------------------------------------- + +QTEST_KDEMAIN(WalletBarTest,GUI) +#include "walletbar_test.moc" diff --git a/src/tests/webpage_test.cpp b/src/tests/webpage_test.cpp new file mode 100644 index 00000000..3051b8bf --- /dev/null +++ b/src/tests/webpage_test.cpp @@ -0,0 +1,112 @@ +/* + * Copyright 2010 Andrea Diamantini <adjam7@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA  02110-1301  USA + */ + + + +#include <qtest_kde.h> + +#include <QtCore> +#include <QtGui> +#include <QtTest> +#include <QtWebKit> + +#include "webpage.h" +#include "webview.h" +#include "webtab.h" + + +class WebPageTest : public QObject +{ +    Q_OBJECT +     +public slots: +    void initTestCase(); +    void cleanupTestCase(); +     +private slots: +    void manageNetworkErrors(); +    void downloadRequest(); +    void downloadAllContentsWithKGet(); + +    void createWindow(); +    void acceptNavigationRequest(); +     +    void handleUnsupportedContent(); +     +    void loadFinished(); + +private: +    WebTab *tab; +    WebPage *page; +    WebView *view; +}; + + +// ------------------------------------------- + + +void WebPageTest::initTestCase() +{ +    tab = new WebTab; +    view = tab->view(); +    page = tab->page(); +} + + +void WebPageTest::cleanupTestCase() +{ +    delete tab; +} +     +     +// ------------------------------------------- + + +void WebPageTest::manageNetworkErrors() +{ +} + +void WebPageTest::downloadRequest() +{ +} + +void WebPageTest::downloadAllContentsWithKGet() +{ +} + +void WebPageTest::createWindow() +{ +} + +void WebPageTest::acceptNavigationRequest() +{ +} + +void WebPageTest::handleUnsupportedContent() +{ +} + +void WebPageTest::loadFinished() +{ +} + +// ------------------------------------------- + +QTEST_KDEMAIN(WebPageTest,GUI) +#include "webpage_test.moc" diff --git a/src/tests/websnap_test.cpp b/src/tests/websnap_test.cpp new file mode 100644 index 00000000..53fc1d4f --- /dev/null +++ b/src/tests/websnap_test.cpp @@ -0,0 +1,69 @@ +/* + * Copyright 2010 Andrea Diamantini <adjam7@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA  02110-1301  USA + */ + + + +#include <qtest_kde.h> + +#include <QtCore> +#include <QtGui> +#include <QtTest> +#include <QtWebKit> + +#include "websnap.h" + + +class WebSnapTest : public QObject +{ +    Q_OBJECT + +     +public slots: +    void initTestCase(); +    void cleanupTestCase(); +     +private slots: + +private: +    WebSnap *snap; +}; + + +// ------------------------------------------- + + +void WebSnapTest::initTestCase() +{ +} + + +void WebSnapTest::cleanupTestCase() +{ +    delete snap; +} +     +     +// ------------------------------------------- + + + +// ------------------------------------------- + +QTEST_KDEMAIN(WebSnapTest,GUI) +#include "websnap_test.moc" diff --git a/src/tests/webtab_test.cpp b/src/tests/webtab_test.cpp new file mode 100644 index 00000000..2c6edf35 --- /dev/null +++ b/src/tests/webtab_test.cpp @@ -0,0 +1,68 @@ +/* + * Copyright 2010 Andrea Diamantini <adjam7@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA  02110-1301  USA + */ + + + +#include <qtest_kde.h> + +#include <QtCore> +#include <QtGui> +#include <QtTest> +#include <QtWebKit> + +#include "webpage.h" +#include "webview.h" +#include "webtab.h" + + +class WebTabTest : public QObject +{ +    Q_OBJECT +     +public slots: +    void initTestCase(); +    void cleanupTestCase(); + +private: +    WebTab *tab; +}; + + +// ------------------------------------------- + + +void WebTabTest::initTestCase() +{ +    tab = new WebTab; +} + + +void WebTabTest::cleanupTestCase() +{ +    delete tab; +} +     +     +// ------------------------------------------- + + +// ------------------------------------------- + +QTEST_KDEMAIN(WebTabTest,GUI) +#include "webtab_test.moc" diff --git a/src/tests/webview_test.cpp b/src/tests/webview_test.cpp new file mode 100644 index 00000000..11d1a46c --- /dev/null +++ b/src/tests/webview_test.cpp @@ -0,0 +1,71 @@ +/* + * Copyright 2010 Andrea Diamantini <adjam7@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA  02110-1301  USA + */ + + + +#include <qtest_kde.h> + +#include <QtCore> +#include <QtGui> +#include <QtTest> +#include <QtWebKit> + +#include "webview.h" +#include "webtab.h" + + +class WebViewTest : public QObject +{ +    Q_OBJECT +     +public slots: +    void initTestCase(); +    void cleanupTestCase(); +     +private slots: + +private: +    WebView *view; +    WebTab *tab; +}; + + +// ------------------------------------------- + + +void WebViewTest::initTestCase() +{ +    tab = new WebTab; +    view = tab->view(); +} + + +void WebViewTest::cleanupTestCase() +{ +    delete tab; +} +     +     +// ------------------------------------------- + + +// ------------------------------------------- + +QTEST_KDEMAIN(WebViewTest,GUI) +#include "webview_test.moc" | 
