From 2651df5a65d5b89f21b08b16628e98bd969fbccd Mon Sep 17 00:00:00 2001 From: Rene Engelhard Date: Sun, 27 Aug 2017 16:15:31 +0200 Subject: sccomp_lpsolver -> sccomp_solver This test also tests the CoinMP solver, no _lpsolver is misleading Change-Id: If56de3aa84ec80b1888aadeb940e08e65083c9e9 Reviewed-on: https://gerrit.libreoffice.org/41607 Reviewed-by: Rene Engelhard Tested-by: Rene Engelhard --- sccomp/CppunitTest_sccomp_lpsolver.mk | 47 -------------- sccomp/CppunitTest_sccomp_solver.mk | 47 ++++++++++++++ sccomp/Module_sccomp.mk | 2 +- sccomp/qa/unit/lpsolver.cxx | 116 ---------------------------------- sccomp/qa/unit/solver.cxx | 116 ++++++++++++++++++++++++++++++++++ 5 files changed, 164 insertions(+), 164 deletions(-) delete mode 100644 sccomp/CppunitTest_sccomp_lpsolver.mk create mode 100644 sccomp/CppunitTest_sccomp_solver.mk delete mode 100644 sccomp/qa/unit/lpsolver.cxx create mode 100644 sccomp/qa/unit/solver.cxx (limited to 'sccomp') diff --git a/sccomp/CppunitTest_sccomp_lpsolver.mk b/sccomp/CppunitTest_sccomp_lpsolver.mk deleted file mode 100644 index 4b664d15bf18..000000000000 --- a/sccomp/CppunitTest_sccomp_lpsolver.mk +++ /dev/null @@ -1,47 +0,0 @@ -# -*- 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,sccomp_lpsolver)) - -$(eval $(call gb_CppunitTest_add_exception_objects,sccomp_lpsolver,\ - sccomp/qa/unit/lpsolver \ -)) - -$(eval $(call gb_CppunitTest_use_externals,sccomp_lpsolver,\ - boost_headers \ -)) - -$(eval $(call gb_CppunitTest_add_defs,sccomp_lpsolver,\ - $(if $(ENABLE_COINMP), -DENABLE_COINMP) \ - $(if $(ENABLE_LPSOLVE), -DENABLE_LPSOLVE) \ -)) - -$(eval $(call gb_CppunitTest_use_libraries,sccomp_lpsolver,\ - cppu \ - sal \ - test \ - unotest \ -)) - -$(eval $(call gb_CppunitTest_set_include,sccomp_lpsolver,\ - -I$(SRCDIR)/sc/inc \ - $$(INCLUDE) \ -)) - - -$(eval $(call gb_CppunitTest_use_sdk_api,sccomp_lpsolver)) - -$(eval $(call gb_CppunitTest_use_ure,sccomp_lpsolver)) -$(eval $(call gb_CppunitTest_use_vcl,sccomp_lpsolver)) - -$(eval $(call gb_CppunitTest_use_rdb,sccomp_lpsolver,services)) - -$(eval $(call gb_CppunitTest_use_configuration,sccomp_lpsolver)) - -# vim: set noet sw=4 ts=4: diff --git a/sccomp/CppunitTest_sccomp_solver.mk b/sccomp/CppunitTest_sccomp_solver.mk new file mode 100644 index 000000000000..d634fb7d93fc --- /dev/null +++ b/sccomp/CppunitTest_sccomp_solver.mk @@ -0,0 +1,47 @@ +# -*- 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,sccomp_solver)) + +$(eval $(call gb_CppunitTest_add_exception_objects,sccomp_solver,\ + sccomp/qa/unit/solver \ +)) + +$(eval $(call gb_CppunitTest_use_externals,sccomp_solver,\ + boost_headers \ +)) + +$(eval $(call gb_CppunitTest_add_defs,sccomp_solver,\ + $(if $(ENABLE_COINMP), -DENABLE_COINMP) \ + $(if $(ENABLE_LPSOLVE), -DENABLE_LPSOLVE) \ +)) + +$(eval $(call gb_CppunitTest_use_libraries,sccomp_solver,\ + cppu \ + sal \ + test \ + unotest \ +)) + +$(eval $(call gb_CppunitTest_set_include,sccomp_solver,\ + -I$(SRCDIR)/sc/inc \ + $$(INCLUDE) \ +)) + + +$(eval $(call gb_CppunitTest_use_sdk_api,sccomp_solver)) + +$(eval $(call gb_CppunitTest_use_ure,sccomp_solver)) +$(eval $(call gb_CppunitTest_use_vcl,sccomp_solver)) + +$(eval $(call gb_CppunitTest_use_rdb,sccomp_solver,services)) + +$(eval $(call gb_CppunitTest_use_configuration,sccomp_solver)) + +# vim: set noet sw=4 ts=4: diff --git a/sccomp/Module_sccomp.mk b/sccomp/Module_sccomp.mk index 9ff09e8d70bd..318e9d69f484 100644 --- a/sccomp/Module_sccomp.mk +++ b/sccomp/Module_sccomp.mk @@ -28,7 +28,7 @@ $(eval $(call gb_Module_add_l10n_targets,sccomp,\ )) $(eval $(call gb_Module_add_check_targets,sccomp,\ - CppunitTest_sccomp_lpsolver \ + CppunitTest_sccomp_solver \ )) # vim: set noet sw=4 ts=4: diff --git a/sccomp/qa/unit/lpsolver.cxx b/sccomp/qa/unit/lpsolver.cxx deleted file mode 100644 index 2ecc3282b17f..000000000000 --- a/sccomp/qa/unit/lpsolver.cxx +++ /dev/null @@ -1,116 +0,0 @@ -/* -*- 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 - -#include -#include -#include -#include -#include -#include - -#include - -using namespace css; - -namespace { - -class LpSolverTest: public test::BootstrapFixture -{ - uno::Reference m_xDocument; - - void testLpSolver(); - void testCoinMPSolver(); - - void testSolver(OUString const & rName); - -public: - virtual void setUp() override; - virtual void tearDown() override; - - CPPUNIT_TEST_SUITE(LpSolverTest); - CPPUNIT_TEST(testLpSolver); - CPPUNIT_TEST(testCoinMPSolver); - CPPUNIT_TEST_SUITE_END(); -}; - -void LpSolverTest::setUp() -{ - test::BootstrapFixture::setUp(); - uno::Reference xComponentLoader = frame::Desktop::create(m_xContext); - uno::Reference xComponent(xComponentLoader->loadComponentFromURL( - "private:factory/scalc", "_blank", 0, - uno::Sequence < css::beans::PropertyValue >())); - m_xDocument.set(xComponent, uno::UNO_QUERY_THROW); -} - -void LpSolverTest::tearDown() -{ - uno::Reference(m_xDocument, uno::UNO_QUERY_THROW)->dispose(); - test::BootstrapFixture::tearDown(); -} - -void LpSolverTest::testLpSolver() -{ -#ifdef ENABLE_LPSOLVE - testSolver("com.sun.star.comp.Calc.LpsolveSolver"); -#endif -} - -void LpSolverTest::testCoinMPSolver() -{ -#ifdef ENABLE_COINMP - testSolver("com.sun.star.comp.Calc.CoinMPSolver"); -#endif -} - -void LpSolverTest::testSolver(OUString const & rName) -{ - uno::Reference xSolver(m_xContext->getServiceManager()-> - createInstanceWithContext(rName, m_xContext), uno::UNO_QUERY_THROW); - - table::CellAddress aObjective(0, 0, 0); - - // "changing cells" - unknown variables - uno::Sequence aVariables(1); - aVariables[0] = table::CellAddress(0, 0, 0); - - // constraints - uno::Sequence aConstraints(1); - aConstraints[0].Left = table::CellAddress(0, 0, 0); - aConstraints[0].Operator = sheet::SolverConstraintOperator_LESS_EQUAL; - aConstraints[0].Right <<= 5.0; - - // initialize solver - xSolver->setDocument( m_xDocument ); - xSolver->setObjective( aObjective ); - xSolver->setVariables( aVariables ); - xSolver->setConstraints( aConstraints ); - xSolver->setMaximize( true ); - - // test results - xSolver->solve(); - CPPUNIT_ASSERT(xSolver->getSuccess()); - uno::Sequence aSolution = xSolver->getSolution(); - CPPUNIT_ASSERT_EQUAL(aSolution.getLength(), aVariables.getLength()); - CPPUNIT_ASSERT_EQUAL(aSolution[0], 5.0); - - uno::Reference xDesc(xSolver, uno::UNO_QUERY_THROW); - const OString sMessage("Empty description for " + OUStringToOString(rName, RTL_TEXTENCODING_UTF8)); - CPPUNIT_ASSERT_MESSAGE(sMessage.getStr(), !xDesc->getComponentDescription().isEmpty()); -} - -CPPUNIT_TEST_SUITE_REGISTRATION(LpSolverTest); - -} - -CPPUNIT_PLUGIN_IMPLEMENT(); - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sccomp/qa/unit/solver.cxx b/sccomp/qa/unit/solver.cxx new file mode 100644 index 000000000000..2ecc3282b17f --- /dev/null +++ b/sccomp/qa/unit/solver.cxx @@ -0,0 +1,116 @@ +/* -*- 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 + +#include +#include +#include +#include +#include +#include + +#include + +using namespace css; + +namespace { + +class LpSolverTest: public test::BootstrapFixture +{ + uno::Reference m_xDocument; + + void testLpSolver(); + void testCoinMPSolver(); + + void testSolver(OUString const & rName); + +public: + virtual void setUp() override; + virtual void tearDown() override; + + CPPUNIT_TEST_SUITE(LpSolverTest); + CPPUNIT_TEST(testLpSolver); + CPPUNIT_TEST(testCoinMPSolver); + CPPUNIT_TEST_SUITE_END(); +}; + +void LpSolverTest::setUp() +{ + test::BootstrapFixture::setUp(); + uno::Reference xComponentLoader = frame::Desktop::create(m_xContext); + uno::Reference xComponent(xComponentLoader->loadComponentFromURL( + "private:factory/scalc", "_blank", 0, + uno::Sequence < css::beans::PropertyValue >())); + m_xDocument.set(xComponent, uno::UNO_QUERY_THROW); +} + +void LpSolverTest::tearDown() +{ + uno::Reference(m_xDocument, uno::UNO_QUERY_THROW)->dispose(); + test::BootstrapFixture::tearDown(); +} + +void LpSolverTest::testLpSolver() +{ +#ifdef ENABLE_LPSOLVE + testSolver("com.sun.star.comp.Calc.LpsolveSolver"); +#endif +} + +void LpSolverTest::testCoinMPSolver() +{ +#ifdef ENABLE_COINMP + testSolver("com.sun.star.comp.Calc.CoinMPSolver"); +#endif +} + +void LpSolverTest::testSolver(OUString const & rName) +{ + uno::Reference xSolver(m_xContext->getServiceManager()-> + createInstanceWithContext(rName, m_xContext), uno::UNO_QUERY_THROW); + + table::CellAddress aObjective(0, 0, 0); + + // "changing cells" - unknown variables + uno::Sequence aVariables(1); + aVariables[0] = table::CellAddress(0, 0, 0); + + // constraints + uno::Sequence aConstraints(1); + aConstraints[0].Left = table::CellAddress(0, 0, 0); + aConstraints[0].Operator = sheet::SolverConstraintOperator_LESS_EQUAL; + aConstraints[0].Right <<= 5.0; + + // initialize solver + xSolver->setDocument( m_xDocument ); + xSolver->setObjective( aObjective ); + xSolver->setVariables( aVariables ); + xSolver->setConstraints( aConstraints ); + xSolver->setMaximize( true ); + + // test results + xSolver->solve(); + CPPUNIT_ASSERT(xSolver->getSuccess()); + uno::Sequence aSolution = xSolver->getSolution(); + CPPUNIT_ASSERT_EQUAL(aSolution.getLength(), aVariables.getLength()); + CPPUNIT_ASSERT_EQUAL(aSolution[0], 5.0); + + uno::Reference xDesc(xSolver, uno::UNO_QUERY_THROW); + const OString sMessage("Empty description for " + OUStringToOString(rName, RTL_TEXTENCODING_UTF8)); + CPPUNIT_ASSERT_MESSAGE(sMessage.getStr(), !xDesc->getComponentDescription().isEmpty()); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(LpSolverTest); + +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit