[Libreoffice-commits] core.git: Branch 'feature/dialog-screenshots' - include/test test/Library_test.mk test/source

Katarina Behrens Katarina.Behrens at cib.de
Thu Jun 30 20:40:15 UTC 2016


 include/test/screenshot_test.hxx |   39 ++++++++++++++
 test/Library_test.mk             |    1 
 test/source/screenshot_test.cxx  |  102 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 142 insertions(+)

New commits:
commit a09da27d7d8541db75b4f0c2a7485b637fda1294
Author: Katarina Behrens <Katarina.Behrens at cib.de>
Date:   Thu Jun 30 22:39:28 2016 +0200

    Move shared code to a separate test class
    
    Change-Id: I1760de221bc53d345c2bbfb4fe878c120073ea45

diff --git a/include/test/screenshot_test.hxx b/include/test/screenshot_test.hxx
new file mode 100644
index 0000000..f07c29a
--- /dev/null
+++ b/include/test/screenshot_test.hxx
@@ -0,0 +1,39 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_TEST_SCREENSHOT_TEST_HXX
+#define INCLUDED_TEST_SCREENSHOT_TEST_HXX
+
+#include <sal/config.h>
+#include <test/bootstrapfixture.hxx>
+#include <unotest/macros_test.hxx>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <osl/file.hxx>
+
+class VclAbstractDialog;
+
+
+class OOO_DLLPUBLIC_TEST ScreenshotTest : public test::BootstrapFixture, public unotest::MacrosTest
+{
+public:
+    ScreenshotTest();
+
+    virtual void setUp() override;
+    virtual void tearDown() override;
+
+    void dumpDialogToPath( VclAbstractDialog& rDialog );
+
+private:
+    void saveScreenshot( VclAbstractDialog& rDialog );
+    OUString m_aScreenshotDirectory;
+};
+
+#endif // INCLUDED_TEST_SCREENSHOT_TEST_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/test/Library_test.mk b/test/Library_test.mk
index df7bfd2..2e34b21 100644
--- a/test/Library_test.mk
+++ b/test/Library_test.mk
@@ -47,6 +47,7 @@ $(eval $(call gb_Library_add_exception_objects,test,\
     test/source/mtfxmldump \
     test/source/xmlwriter \
     test/source/primitive2dxmldump \
+    test/source/screenshot_test \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/test/source/screenshot_test.cxx b/test/source/screenshot_test.cxx
new file mode 100644
index 0000000..d02e738
--- /dev/null
+++ b/test/source/screenshot_test.cxx
@@ -0,0 +1,102 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include "test/screenshot_test.hxx"
+
+#include <com/sun/star/util/XCloseable.hpp>
+#include <com/sun/star/frame/Desktop.hpp>
+#include <comphelper/processfactory.hxx>
+#include <vcl/abstdlg.hxx>
+#include <vcl/pngwrite.hxx>
+
+namespace {
+    void splitHelpId( OString& rHelpId, OUString& rDirname, OUString &rBasename )
+    {
+        sal_Int32 nIndex = rHelpId.lastIndexOf( '/' );
+
+        if( nIndex > 0 )
+            rDirname = OStringToOUString( rHelpId.copy( 0, nIndex ), RTL_TEXTENCODING_UTF8 );
+
+        if( rHelpId.getLength() > nIndex+1 )
+            rBasename= OStringToOUString( rHelpId.copy( nIndex+1 ), RTL_TEXTENCODING_UTF8 );
+    }
+}
+
+using namespace css;
+using namespace css::uno;
+
+ScreenshotTest::ScreenshotTest()
+      : m_aScreenshotDirectory("/workdir/screenshots/")
+{
+}
+
+void ScreenshotTest::setUp()
+{
+    test::BootstrapFixture::setUp();
+
+    mxDesktop = css::frame::Desktop::create( comphelper::getComponentContext(getMultiServiceFactory()) );
+    CPPUNIT_ASSERT_MESSAGE("no desktop!", mxDesktop.is());
+
+    osl::FileBase::RC err = osl::Directory::create( m_directories.getURLFromSrc( m_aScreenshotDirectory ) );
+    CPPUNIT_ASSERT_MESSAGE( "Failed to create screenshot directory", (err == osl::FileBase::E_None || err == osl::FileBase::E_EXIST) );
+}
+
+void ScreenshotTest::tearDown()
+{
+    test::BootstrapFixture::tearDown();
+}
+
+void ScreenshotTest::saveScreenshot( VclAbstractDialog& rDialog )
+{
+     const Bitmap aScreenshot(rDialog.createScreenshot());
+
+     if (!aScreenshot.IsEmpty())
+     {
+         OString aScreenshotId = rDialog.GetScreenshotId();
+         OUString aDirname, aBasename;
+         splitHelpId( aScreenshotId, aDirname, aBasename );
+         aDirname =  m_aScreenshotDirectory + aDirname;
+
+         osl::FileBase::RC err = osl::Directory::createPath( m_directories.getURLFromSrc( aDirname ));
+         CPPUNIT_ASSERT_MESSAGE( OUStringToOString( "Failed to create " + aDirname, RTL_TEXTENCODING_UTF8).getStr(),
+                         (err == osl::FileBase::E_None || err == osl::FileBase::E_EXIST) );
+
+         OUString aFullPath = m_directories.getSrcRootPath() + aDirname + "/" + aBasename + ".png";
+         SvFileStream aNew(aFullPath, StreamMode::WRITE | StreamMode::TRUNC);
+         CPPUNIT_ASSERT_MESSAGE( OUStringToOString( "Failed to open " + OUString::number(aNew.GetErrorCode()), RTL_TEXTENCODING_UTF8).getStr(), aNew.IsOpen() );
+
+         vcl::PNGWriter aPNGWriter(aScreenshot);
+         aPNGWriter.Write(aNew);
+     }
+}
+
+void ScreenshotTest::dumpDialogToPath( VclAbstractDialog& rDialog )
+{
+   const std::vector<OString> aPageDescriptions(rDialog.getAllPageUIXMLDescriptions());
+
+   if (aPageDescriptions.size())
+   {
+      for (sal_uInt32 a(0); a < aPageDescriptions.size(); a++)
+      {
+          if (rDialog.selectPageByUIXMLDescription(aPageDescriptions[a]))
+          {
+              saveScreenshot( rDialog );
+          }
+          else
+          {
+              CPPUNIT_ASSERT(false);
+          }
+      }
+   }
+   else
+   {
+      saveScreenshot( rDialog );
+   }
+}
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list