Add a new test checking wxGraphicsContext implementation correctness.
This test verifies that the output of wxGraphicsContext on the current system matches the pregenerated reference output. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76164 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
104
tests/drawing/plugindriver.cpp
Normal file
104
tests/drawing/plugindriver.cpp
Normal file
@@ -0,0 +1,104 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: tests/drawing/plugindriver.cpp
|
||||
// Purpose: Plugin management for the drawing tests
|
||||
// Author: Armel Asselin
|
||||
// Created: 2014-02-28
|
||||
// Copyright: (c) 2014 Ellié Computing <opensource@elliecomputing.com>
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// headers
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#include "testprec.h"
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/app.h"
|
||||
#include "wx/font.h"
|
||||
#include "wx/window.h"
|
||||
#endif // WX_PRECOMP
|
||||
|
||||
#define _WX_CURSOR_H_BASE_
|
||||
|
||||
|
||||
#include "drawing.h"
|
||||
|
||||
#if wxUSE_TEST_GC_DRAWING
|
||||
#include <wx/dynlib.h>
|
||||
|
||||
void GraphicsContextDrawingTestCase::RunPluginsDrawingCase (
|
||||
const DrawingTestCase & testCase)
|
||||
{
|
||||
if (!m_drawingPluginsLoaded)
|
||||
{
|
||||
m_drawingPluginsLoaded = true;
|
||||
|
||||
wxString pluginsListStr;
|
||||
if (!wxGetEnv ("WX_TEST_SUITE_GC_DRAWING_PLUGINS", &pluginsListStr))
|
||||
return; // no plugins
|
||||
|
||||
wxArrayString pluginsNameArray = wxSplit (pluginsListStr, ',', '\0');
|
||||
m_drawingPlugins.resize (pluginsNameArray.size());
|
||||
|
||||
for (size_t idx=0; idx<pluginsNameArray.size(); ++idx)
|
||||
{
|
||||
PluginInfo &pluginBeingLoaded = m_drawingPlugins[idx];
|
||||
pluginBeingLoaded.library = new wxDynamicLibrary;
|
||||
if (!pluginBeingLoaded.library->Load (pluginsNameArray[idx]))
|
||||
{
|
||||
wxLogFatalError("could not load drawing plugin %s",
|
||||
pluginsNameArray[idx]);
|
||||
return;
|
||||
}
|
||||
|
||||
wxDYNLIB_FUNCTION(CreateDrawingTestLifeCycleFunction,
|
||||
CreateDrawingTestLifeCycle, *pluginBeingLoaded.library);
|
||||
wxDYNLIB_FUNCTION(DestroyDrawingTestLifeCycleFunction,
|
||||
DestroyDrawingTestLifeCycle, *pluginBeingLoaded.library);
|
||||
|
||||
if (!pfnCreateDrawingTestLifeCycle ||
|
||||
!pfnDestroyDrawingTestLifeCycle)
|
||||
{
|
||||
wxLogFatalError("could not find function"
|
||||
" CreateDrawingTestLifeCycle or "
|
||||
"DestroyDrawingTestLifeCycle in %s", pluginsNameArray[idx]);
|
||||
return;
|
||||
}
|
||||
|
||||
pluginBeingLoaded.destroy = pfnDestroyDrawingTestLifeCycle;
|
||||
pluginBeingLoaded.gcFactory = (*pfnCreateDrawingTestLifeCycle)();
|
||||
if (!pluginBeingLoaded.gcFactory)
|
||||
{
|
||||
wxLogFatalError("failed to create life-cycle object in %s",
|
||||
pluginsNameArray[idx]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// now execute the test case for each plugin
|
||||
for (size_t idxp=0; idxp<m_drawingPlugins.size(); ++idxp)
|
||||
{
|
||||
RunIndividualDrawingCase (*m_drawingPlugins[idxp].gcFactory, testCase);
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// GraphicsContextDrawingTestCase::PluginInfo /////////////////////////////////
|
||||
|
||||
GraphicsContextDrawingTestCase::PluginInfo::PluginInfo()
|
||||
: library(NULL), gcFactory(NULL), destroy(NULL) {
|
||||
}
|
||||
|
||||
GraphicsContextDrawingTestCase::PluginInfo::~PluginInfo()
|
||||
{
|
||||
if (destroy && gcFactory)
|
||||
(*destroy)(gcFactory);
|
||||
|
||||
delete library;
|
||||
}
|
||||
|
||||
#endif // wxUSE_TEST_GC_DRAWING
|
Reference in New Issue
Block a user