diff options
author | Rüdiger Timm <rt@openoffice.org> | 2008-06-09 11:44:05 +0000 |
---|---|---|
committer | Rüdiger Timm <rt@openoffice.org> | 2008-06-09 11:44:05 +0000 |
commit | 7a9921c71b6ab9f9f3b621ab553b3529652908e8 (patch) | |
tree | be04cc87b29ff87172705489f0851d077136887a | |
parent | e4989f06cb5c2c86d3dd88c61eecfce6947d777a (diff) |
INTEGRATION: CWS sb87 (1.9.24); FILE MERGED
2008/04/24 13:17:35 sb 1.9.24.2: RESYNC: (1.9-1.10); FILE MERGED
2008/04/23 12:50:57 fs 1.9.24.1: #i88633# +setName/setParameter
-rw-r--r-- | stoc/test/uriproc/test_uriproc.cxx | 106 |
1 files changed, 97 insertions, 9 deletions
diff --git a/stoc/test/uriproc/test_uriproc.cxx b/stoc/test/uriproc/test_uriproc.cxx index 39e20b4a0265..f1032276eb89 100644 --- a/stoc/test/uriproc/test_uriproc.cxx +++ b/stoc/test/uriproc/test_uriproc.cxx @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: test_uriproc.cxx,v $ - * $Revision: 1.10 $ + * $Revision: 1.11 $ * * This file is part of OpenOffice.org. * @@ -789,17 +789,18 @@ void Test::testVndSunStarScript() { struct Data { char const * uriReference; char const * name; + const bool normalized; Parameter parameters[parameterCount]; }; Data data[] = { - { "vnd.sun.star.script:", 0, {} }, - { "vnd.sun.star.script:/", 0, {} }, - { "vnd.sun.star.script:/abc/def?ghi=jkl&mno=pqr", 0, {} }, - { "vnd.sun.star.script:abc%3fdef/ghi", "abc?def/ghi", {} }, - { "vnd.sun.star.script:name?a", 0, {} }, - { "vnd.sun.star.script:name?a=", "name", { { "a", "" }, { "A", 0 } } }, - { "vnd.sun.star.script:name?a=&", 0, {} }, - { "vnd.sun.star.script:name?key1=&%26=%3D&key1=hello", "name", + { "vnd.sun.star.script:", 0, false, {} }, + { "vnd.sun.star.script:/", 0, false, {} }, + { "vnd.sun.star.script:/abc/def?ghi=jkl&mno=pqr", 0, false, {} }, + { "vnd.sun.star.script:abc%3fdef/ghi", "abc?def/ghi", false, {} }, + { "vnd.sun.star.script:name?a", 0, false, {} }, + { "vnd.sun.star.script:name?a=", "name", true, { { "a", "" }, { "A", 0 } } }, + { "vnd.sun.star.script:name?a=&", 0, true, {} }, + { "vnd.sun.star.script:name?key1=&%26=%3D&key1=hello", "name", true, { { "key1", "" }, { "key2", 0 }, { "&", "=" } } } }; for (std::size_t i = 0; i < sizeof data / sizeof data[0]; ++i) { css::uno::Reference< css::uri::XUriReference > uriRef( @@ -819,6 +820,7 @@ void Test::testVndSunStarScript() { "testVndSunStarScript", i, data[i].uriReference, rtl::OUString::createFromAscii(data[i].name), scriptUrl->getName()); + rtl::OUString originalReference(uriRef->getUriReference()); for (std::size_t j = 0; j < parameterCount; ++j) { if (data[i].parameters[j].key != 0) { TEST_ASSERT_EQUAL( @@ -840,10 +842,96 @@ void Test::testVndSunStarScript() { scriptUrl->getParameter( rtl::OUString::createFromAscii( data[i].parameters[j].key))); + + // setting the parameter to its original value should not change + // the overall uri reference (provided it was normalized before) + if ( data[i].normalized ) { + if ( scriptUrl->hasParameter(rtl::OUString::createFromAscii( + data[i].parameters[j].key)) ) { + scriptUrl->setParameter( + rtl::OUString::createFromAscii( + data[i].parameters[j].key), + scriptUrl->getParameter( + rtl::OUString::createFromAscii( + data[i].parameters[j].key))); + TEST_ASSERT_EQUAL( + "testVndSunStarScript", + static_cast< double >(i) + + static_cast< double >(j) / 10.0, + ::rtl::OUString::createFromAscii("setParameter"), + originalReference, + uriRef->getUriReference()); + } + } } } + if ( data[i].normalized ) { + scriptUrl->setName(scriptUrl->getName()); + TEST_ASSERT_EQUAL( + "testVndSunStarScript", + i, + ::rtl::OUString::createFromAscii("setName"), + originalReference, + uriRef->getUriReference()); + } } } + + css::uno::Reference< css::uri::XUriReference > uriRef( + m_uriFactory->parse( + rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( + "vnd.sun.star.script:Hello?location=Library.Module"))), + css::uno::UNO_SET_THROW); + css::uno::Reference< css::uri::XVndSunStarScriptUrlReference > + scriptUrl(uriRef, css::uno::UNO_QUERY_THROW); + + scriptUrl->setParameter( + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "location")), + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "foo"))); + TEST_ASSERT_EQUAL( + "testVndSunStarScript", (sal_Int32)10, (sal_Int32)1, + uriRef->getUriReference(), + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "vnd.sun.star.script:Hello?location=foo"))); + + scriptUrl->setParameter( + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "language")), + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "StarBasic"))); + TEST_ASSERT_EQUAL( + "testVndSunStarScript", (sal_Int32)10, (sal_Int32)2, + uriRef->getUriReference(), + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "vnd.sun.star.script:Hello?location=foo&language=StarBasic"))); + + + bool caughtExpected = false; + try { + scriptUrl->setName(::rtl::OUString()); + } + catch( const css::lang::IllegalArgumentException& ) { + caughtExpected = true; + } + TEST_ASSERT_EQUAL( + "testVndSunStarScript", + ::rtl::OUString::createFromAscii("illegal arguments"), + ::rtl::OUString::createFromAscii("name"), + caughtExpected, + true); + + caughtExpected = false; + try { + scriptUrl->setParameter( + ::rtl::OUString(), + ::rtl::OUString::createFromAscii("non-empty")); + } + catch( const css::lang::IllegalArgumentException& ) { + caughtExpected = true; + } + TEST_ASSERT_EQUAL( + "testVndSunStarScript", + ::rtl::OUString::createFromAscii("illegal arguments"), + ::rtl::OUString::createFromAscii("parameter"), + caughtExpected, + true); } void Test::testTranslator() { |