diff options
author | Rüdiger Timm <rt@openoffice.org> | 2004-06-17 10:45:12 +0000 |
---|---|---|
committer | Rüdiger Timm <rt@openoffice.org> | 2004-06-17 10:45:12 +0000 |
commit | be5cbb30dc0746a794bb8a33ce02890bd89a81f1 (patch) | |
tree | 6f3be45f52f0332b4b657e8e088b90e119286b3e /stoc/test/uriproc | |
parent | 93ec9656e2c7680990191fa8f9830adc2f682d3c (diff) |
INTEGRATION: CWS sb17 (1.3.4); FILE MERGED
2004/06/03 13:40:05 sb 1.3.4.3: #115879# Added VndSunStarPkgUrlReferenceFactory service.
2004/06/03 08:44:44 sb 1.3.4.2: #109735# Improved tests.
2004/06/02 10:50:05 sb 1.3.4.1: #109735# Added ExternalUriReferenceTranslator service.
Diffstat (limited to 'stoc/test/uriproc')
-rw-r--r-- | stoc/test/uriproc/test_uriproc.cxx | 105 |
1 files changed, 94 insertions, 11 deletions
diff --git a/stoc/test/uriproc/test_uriproc.cxx b/stoc/test/uriproc/test_uriproc.cxx index 3aa0d4bda3b1..b136a9c0bc4d 100644 --- a/stoc/test/uriproc/test_uriproc.cxx +++ b/stoc/test/uriproc/test_uriproc.cxx @@ -2,9 +2,9 @@ * * $RCSfile: test_uriproc.cxx,v $ * - * $Revision: 1.3 $ + * $Revision: 1.4 $ * - * last change: $Author: obo $ $Date: 2004-03-19 13:22:26 $ + * last change: $Author: rt $ $Date: 2004-06-17 11:45:12 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -64,11 +64,17 @@ #include "com/sun/star/lang/XMultiComponentFactory.hpp" #include "com/sun/star/uno/Reference.hxx" #include "com/sun/star/uno/XComponentContext.hpp" +#include "com/sun/star/uri/ExternalUriReferenceTranslator.hpp" +#include "com/sun/star/uri/UriReferenceFactory.hpp" +#include "com/sun/star/uri/VndSunStarPkgUrlReferenceFactory.hpp" +#include "com/sun/star/uri/XExternalUriReferenceTranslator.hpp" #include "com/sun/star/uri/XUriReference.hpp" #include "com/sun/star/uri/XUriReferenceFactory.hpp" +#include "com/sun/star/uri/XVndSunStarPkgUrlReferenceFactory.hpp" #include "com/sun/star/uri/XVndSunStarScriptUrlReference.hpp" #include "cppuhelper/servicefactory.hxx" #include "cppunit/simpleheader.hxx" +#include "osl/diagnose.h" #include "osl/thread.h" #include "rtl/string.h" #include "rtl/string.hxx" @@ -149,11 +155,17 @@ public: void testVndSunStarScript(); + void testTranslator(); + + void testPkgUrlFactory(); + CPPUNIT_TEST_SUITE(Test); CPPUNIT_TEST(testParse); CPPUNIT_TEST(testMakeAbsolute); CPPUNIT_TEST(testMakeRelative); CPPUNIT_TEST(testVndSunStarScript); + CPPUNIT_TEST(testTranslator); + CPPUNIT_TEST(testPkgUrlFactory); CPPUNIT_TEST_SUITE_END(); private: @@ -163,22 +175,16 @@ private: void Test::setUp() { char const * registry = getForwardString(); - css::uno::Reference< css::lang::XMultiComponentFactory > factory( + css::uno::Reference< css::lang::XMultiServiceFactory > factory( cppu::createRegistryServiceFactory( rtl::OUString( registry, rtl_str_getLength(registry), - osl_getThreadTextEncoding())), - css::uno::UNO_QUERY_THROW); + osl_getThreadTextEncoding()))); //TODO: check for string conversion failure css::uno::Reference< css::beans::XPropertySet >( factory, css::uno::UNO_QUERY_THROW)->getPropertyValue( rtl::OUString::createFromAscii("DefaultContext")) >>= m_context; - m_uriFactory = css::uno::Reference< css::uri::XUriReferenceFactory >( - factory->createInstanceWithContext( - rtl::OUString::createFromAscii( - "com.sun.star.uri.UriReferenceFactory"), - m_context), - css::uno::UNO_QUERY_THROW); + m_uriFactory = css::uri::UriReferenceFactory::create(m_context); } void Test::tearDown() { @@ -829,6 +835,83 @@ void Test::testVndSunStarScript() { } } +void Test::testTranslator() { + struct Data { + char const * externalUriReference; + char const * internalUriReference; + }; + Data data[] = { + { "", "" }, + { "#fragment", "#fragment" }, + { "segment/segment?query#fragment", "segment/segment?query#fragment" }, + { "/segment/segment?query#fragment", + "/segment/segment?query#fragment" }, + { "//authority/segment?query#fragment", + "//authority/segment?query#fragment" }, + { "foo:bar#fragment", "foo:bar#fragment" }, + { "file:///abc/def", "file:///abc/def" }, + { 0, "file:///abc/%FEef" }, + { 0, "file:///abc/%80%80ef" }, + { 0, "file:///abc/%ED%A0%80%ED%B0%80ef" } }; + css::uno::Reference< css::uri::XExternalUriReferenceTranslator > + translator(css::uri::ExternalUriReferenceTranslator::create(m_context)); + for (std::size_t i = 0; i < sizeof data / sizeof data[0]; ++i) { + if (data[i].externalUriReference != 0) { + TEST_ASSERT_EQUAL( + "testTranslator, translateToInternal", i, + data[i].externalUriReference, + (data[i].internalUriReference == 0 + ? rtl::OUString() + : rtl::OUString::createFromAscii( + data[i].internalUriReference)), + translator->translateToInternal( + rtl::OUString::createFromAscii( + data[i].externalUriReference))); + } + if (data[i].internalUriReference != 0) { + TEST_ASSERT_EQUAL( + "testTranslator, translateToExternal", i, + data[i].internalUriReference, + (data[i].externalUriReference == 0 + ? rtl::OUString() + : rtl::OUString::createFromAscii( + data[i].externalUriReference)), + translator->translateToExternal( + rtl::OUString::createFromAscii( + data[i].internalUriReference))); + } + } +} + +void Test::testPkgUrlFactory() { + struct Data { + char const * authority; + char const * result; + }; + Data data[] = { + { "a/b/c", 0 }, + { "file:///#foo", 0 }, + { "file:///a%25b%2fc/d~e&f@g?h", + "vnd.sun.star.pkg://file:%2F%2F%2Fa%2525b%252fc%2Fd~e&f@g%3Fh" } }; + css::uno::Reference< css::uri::XVndSunStarPkgUrlReferenceFactory > factory( + css::uri::VndSunStarPkgUrlReferenceFactory::create(m_context)); + for (std::size_t i = 0; i < sizeof data / sizeof data[0]; ++i) { + css::uno::Reference< css::uri::XUriReference > url( + factory->createVndSunStarPkgUrlReference( + m_uriFactory->parse( + rtl::OUString::createFromAscii(data[i].authority)))); + TEST_ASSERT_EQUAL( + "testVndSunStarPkgFactory", i, data[i].authority, + data[i].result != 0, static_cast< bool >(url.is())); + if (data[i].result != 0) { + TEST_ASSERT_EQUAL( + "testVndSunStarPkgFactory", i, data[i].authority, + rtl::OUString::createFromAscii(data[i].result), + url->getUriReference()); + } + } +} + CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(Test, "alltests"); } |