summaryrefslogtreecommitdiff
path: root/stoc/test/uriproc
diff options
context:
space:
mode:
authorRüdiger Timm <rt@openoffice.org>2004-06-17 10:45:12 +0000
committerRüdiger Timm <rt@openoffice.org>2004-06-17 10:45:12 +0000
commitbe5cbb30dc0746a794bb8a33ce02890bd89a81f1 (patch)
tree6f3be45f52f0332b4b657e8e088b90e119286b3e /stoc/test/uriproc
parent93ec9656e2c7680990191fa8f9830adc2f682d3c (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.cxx105
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");
}