Kaydet (Commit) 89a03285 authored tarafından Armin Le Grand's avatar Armin Le Grand Kaydeden (comit) Thorsten Behrens

screenshots: add dialog test cases for svtools

All *.ui files create a screenshot, but not all look useful

Change-Id: I7a7a6c3ab38e8890404082dd359ff5f4f1ebf9fd
üst d8c45ed2
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#*************************************************************************
#
# 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/.
#
#*************************************************************************
$(eval $(call gb_CppunitTest_CppunitTest,svtools_dialogs_test))
$(eval $(call gb_CppunitTest_add_exception_objects,svtools_dialogs_test, \
svtools/qa/unit/svtools-dialogs-test \
))
$(eval $(call gb_CppunitTest_use_sdk_api,svtools_dialogs_test))
$(eval $(call gb_CppunitTest_set_include,desktop_dialogs_test,\
-I$(SRCDIR)/svtools/source/inc \
-I$(SRCDIR)/svtools/inc \
$$(INCLUDE) \
))
$(eval $(call gb_CppunitTest_use_libraries,svtools_dialogs_test, \
basegfx \
comphelper \
cppu \
cppuhelper \
drawinglayer \
editeng \
i18nlangtag \
i18nutil \
msfilter \
oox \
sal \
salhelper \
sax \
sfx \
sot \
svl \
svt \
test \
tl \
tk \
ucbhelper \
unotest \
utl \
vcl \
xo \
$(gb_UWINAPI) \
))
$(eval $(call gb_CppunitTest_use_external,svtools_dialogs_test,boost_headers))
$(eval $(call gb_CppunitTest_use_sdk_api,svtools_dialogs_test))
$(eval $(call gb_CppunitTest_use_ure,svtools_dialogs_test))
$(eval $(call gb_CppunitTest_use_vcl_non_headless_with_windows,svtools_dialogs_test))
$(eval $(call gb_CppunitTest_use_rdb,svtools_dialogs_test,services))
# $(eval $(call gb_CppunitTest_use_configuration,svtools_dialogs_test))
$(eval $(call gb_CppunitTest_use_instdir_configuration,svtools_dialogs_test))
# vim: set noet sw=4 ts=4:
......@@ -49,6 +49,10 @@ $(eval $(call gb_Module_add_subsequentcheck_targets,svtools,\
))
endif
$(eval $(call gb_Module_add_slowcheck_targets,svtools,\
CppunitTest_svtools_dialogs_test \
))
#todo: javapatchres
#todo: jpeg on mac in svtools/util/makefile.mk
#todo: deliver errtxt.src as ehdl.srs
......
# -*- 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/.
#
# This file contains all dialogs that the unit tests in the module
# will work on if it is in script mode. It will read one-by-one,
# try to open it and create a screenshot that will be saved in
# workdir/screenshots using the pattern of the ui-file name.
#
# Syntax:
# - emty lines are allowed
# - lines starting with '#' are treated as comment
# - all other lines should contain a *.ui filename in the same
# notation as in the dialog constructors (see code)
#
# The 'known' dialogs which have a hard-coded representation
# in registerKnownDialogsByID/createDialogByID
#
# No known dialogs in svtools for now
#
# Dialogs without a hard-coded representation. These will
# be visualized using a fallback based on VclBuilder
#
# currently deactivated, leads to problems and the test to not work
# This is typically a hint that these should be hard-coded in the
# test case since they need some document and model data to work
svt/ui/addresstemplatedialog.ui
svt/ui/placeedit.ui
svt/ui/printersetupdialog.ui
svt/ui/restartdialog.ui
svt/ui/graphicexport.ui
svt/ui/GraphicExportOptionsDialog.ui
svt/ui/wizarddialog.ui
svt/ui/querydeletedialog.ui
svt/ui/javadisableddialog.ui
/* -*- 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 <sal/config.h>
#include <test/screenshot_test.hxx>
#include <rtl/strbuf.hxx>
#include <osl/file.hxx>
#include <sfx2/app.hxx>
#include <vcl/abstdlg.hxx>
using namespace ::com::sun::star;
/// Test opening a dialog in svtools
class SvtoolsDialogsTest : public ScreenshotTest
{
private:
/// helper method to populate KnownDialogs, called in setUp(). Needs to be
/// written and has to add entries to KnownDialogs
virtual void registerKnownDialogsByID(mapType& rKnownDialogs) override;
/// dialog creation for known dialogs by ID. Has to be implemented for
/// each registered known dialog
virtual VclAbstractDialog* createDialogByID(sal_uInt32 nID) override;
public:
SvtoolsDialogsTest();
virtual ~SvtoolsDialogsTest();
virtual void setUp() override;
// try to open a dialog
void openAnyDialog();
CPPUNIT_TEST_SUITE(SvtoolsDialogsTest);
CPPUNIT_TEST(openAnyDialog);
CPPUNIT_TEST_SUITE_END();
};
SvtoolsDialogsTest::SvtoolsDialogsTest()
{
}
SvtoolsDialogsTest::~SvtoolsDialogsTest()
{
}
void SvtoolsDialogsTest::setUp()
{
ScreenshotTest::setUp();
}
void SvtoolsDialogsTest::registerKnownDialogsByID(mapType& /*rKnownDialogs*/)
{
// fill map of known dilogs
}
VclAbstractDialog* SvtoolsDialogsTest::createDialogByID(sal_uInt32 /*nID*/)
{
return nullptr;
}
void SvtoolsDialogsTest::openAnyDialog()
{
/// example how to process an input file containing the UXMLDescriptions of the dialogs
/// to dump
if (true)
{
test::Directories aDirectories;
OUString aURL = aDirectories.getURLFromSrc("svtools/qa/unit/data/svtools-dialogs-test.txt");
SvFileStream aStream(aURL, StreamMode::READ);
OString aNextUIFile;
const OString aComment("#");
while (aStream.ReadLine(aNextUIFile))
{
if (!aNextUIFile.isEmpty() && !aNextUIFile.startsWith(aComment))
{
// first check if it's a known dialog
std::unique_ptr<VclAbstractDialog> pDlg(createDialogByName(aNextUIFile));
if (pDlg)
{
// known dialog, dump screenshot to path
dumpDialogToPath(*pDlg);
}
else
{
// unknown dialog, try fallback to generic created
// VclBuilder-generated instance. Keep in mind that Dialogs
// using this mechanism will probably not be layouted well
// since the setup/initialization part is missing. Thus,
// only use for fallback when only the UI file is available.
dumpDialogToPath(aNextUIFile);
}
}
}
}
/// example how to dump all known dialogs
if (false)
{
// example for SfxTabDialog: 5 -> "modules/sdraw/ui/drawpagedialog.ui"
// example for TabDialog: 22 -> "modules/simpress/ui/headerfooterdialog.ui"
// example for self-adapted wizard: 0 -> "modules/simpress/ui/publishingdialog.ui"
for (mapType::const_iterator i = getKnownDialogs().begin(); i != getKnownDialogs().end(); i++)
{
std::unique_ptr<VclAbstractDialog> pDlg(createDialogByID((*i).second));
if (pDlg)
{
// known dialog, dump screenshot to path
dumpDialogToPath(*pDlg);
}
else
{
// unknown dialog, should not happen in this basic loop.
// You have probably forgotten to add a case and
// implementastion to createDialogByID, please do this
}
}
}
/// example how to dump a dialog using fallback functionality
if (false)
{
// unknown dialog, try fallback to generic created
// VclBuilder-generated instance. Keep in mind that Dialogs
// using this mechanism will probably not be layouted well
// since the setup/initialization part is missing. Thus,
// only use for fallback when only the UI file is available.
//
// Take any example here, it's only for demonstration - using
// even a known one to demonstrate the fallback possibility
const OString aUIXMLDescription("svt/ui/addresstemplatedialog.ui");
dumpDialogToPath(aUIXMLDescription);
}
}
CPPUNIT_TEST_SUITE_REGISTRATION(SvtoolsDialogsTest);
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment