summaryrefslogtreecommitdiff
path: root/writerperfect/qa/unit/DirectoryStreamTest.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'writerperfect/qa/unit/DirectoryStreamTest.cxx')
-rw-r--r--writerperfect/qa/unit/DirectoryStreamTest.cxx42
1 files changed, 38 insertions, 4 deletions
diff --git a/writerperfect/qa/unit/DirectoryStreamTest.cxx b/writerperfect/qa/unit/DirectoryStreamTest.cxx
index effedf8c5e4e..a3c399b7678c 100644
--- a/writerperfect/qa/unit/DirectoryStreamTest.cxx
+++ b/writerperfect/qa/unit/DirectoryStreamTest.cxx
@@ -18,6 +18,8 @@
#include <test/bootstrapfixture.hxx>
#include <DirectoryStream.hxx>
+#include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/ucb/XContent.hpp>
namespace ucb = com::sun::star::ucb;
namespace uno = com::sun::star::uno;
@@ -60,6 +62,38 @@ static const char g_aDirPath[] = "/writerperfect/qa/unit/data/stream/test.dir";
static const char g_aNondirPath[] = "/writerperfect/qa/unit/data/stream/test.dir/mimetype";
static const char g_aNonexistentPath[] = "/writerperfect/qa/unit/data/stream/foo/bar";
+static DirectoryStream* createForParent(const css::uno::Reference<css::ucb::XContent> &xContent)
+{
+ try
+ {
+ if (!xContent.is())
+ return nullptr;
+
+ DirectoryStream *pDir(nullptr);
+
+ const uno::Reference<css::container::XChild> xChild(xContent, uno::UNO_QUERY);
+ if (xChild.is())
+ {
+ const uno::Reference<ucb::XContent> xDirContent(xChild->getParent(), uno::UNO_QUERY);
+ if (xDirContent.is())
+ {
+ pDir = new writerperfect::DirectoryStream(xDirContent);
+ if (!pDir->isStructured())
+ {
+ delete pDir;
+ pDir = nullptr;
+ }
+ }
+ }
+
+ return pDir;
+ }
+ catch (...)
+ {
+ return nullptr;
+ }
+}
+
DirectoryStreamTest::DirectoryStreamTest()
{
const uno::Reference<ucb::XCommandEnvironment> xCmdEnv;
@@ -74,17 +108,17 @@ DirectoryStreamTest::DirectoryStreamTest()
void DirectoryStreamTest::testConstruction()
{
- const unique_ptr<DirectoryStream> pDir(DirectoryStream::createForParent(m_xFile));
+ const unique_ptr<DirectoryStream> pDir(createForParent(m_xFile));
CPPUNIT_ASSERT(bool(pDir));
CPPUNIT_ASSERT(pDir->isStructured());
// this should work for dirs too
- const unique_ptr<DirectoryStream> pDir2(DirectoryStream::createForParent(m_xDir));
+ const unique_ptr<DirectoryStream> pDir2(createForParent(m_xDir));
CPPUNIT_ASSERT(bool(pDir2));
CPPUNIT_ASSERT(pDir2->isStructured());
// for nonexistent dirs nothing is created
- const unique_ptr<DirectoryStream> pNondir(DirectoryStream::createForParent(m_xNonexistent));
+ const unique_ptr<DirectoryStream> pNondir(createForParent(m_xNonexistent));
CPPUNIT_ASSERT(!pNondir);
// even if we try harder, just an empty shell is created
@@ -136,7 +170,7 @@ void DirectoryStreamTest::testStructuredOperations()
DirectoryStream aDir(m_xDir);
lcl_testStructuredOperations(aDir);
- unique_ptr<DirectoryStream> pDir(DirectoryStream::createForParent(m_xFile));
+ unique_ptr<DirectoryStream> pDir(createForParent(m_xFile));
CPPUNIT_ASSERT(bool(pDir));
lcl_testStructuredOperations(*pDir.get());
}