Members of the KDE Community are recommended to subscribe to the kde-community mailing list at https://mail.kde.org/mailman/listinfo/kde-community to allow them to participate in important discussions and receive other important announcements

Commit 17ec0c51 authored by Shlomi Fish's avatar Shlomi Fish

Add a test for solverFormat().

Summary: Make it part of the base class to facilitate testing.

Test Plan: run "make test" and test base functionality.

Reviewers: #kde_games, aacid

Reviewed By: aacid

Subscribers: aacid, yurchor, kde-games-devel

Differential Revision: https://phabricator.kde.org/D18875
parent fa9f7736
include(ECMAddTests)
include_directories(AFTER "${CMAKE_CURRENT_SOURCE_DIR}/..")
include_directories(AFTER "${CMAKE_CURRENT_BINARY_DIR}/..")
ecm_add_test(
shuffle_test.cpp
TEST_NAME ShuffleTest
LINK_LIBRARIES Qt5::Test
NAME_PREFIX "kpat-"
)
ecm_add_test(
"../dealer.cpp"
"../dealerinfo.cpp"
"../golf.cpp"
"../patsolve/golfsolver.cpp"
"../patsolve/memory.cpp"
"../patsolve/patsolve.cpp"
"../messagebox.cpp"
"../kpat_debug.cpp"
"../patpile.cpp"
"../pileutils.cpp"
"../renderer.cpp"
solver_format.cpp
TEST_NAME SolverFormatTest
LINK_LIBRARIES Qt5::Test kcardgame
KF5KDEGames
${BLACK_HOLE_SOLVER_LDFLAGS}
NAME_PREFIX "kpat-"
)
/*
* Copyright (C) 1995 Paul Olav Tvete <paul@troll.no>
* Copyright (C) 2000-2009 Stephan Kulow <coolo@kde.org>
*
* License of original code:
* -------------------------------------------------------------------------
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted,
* provided that the above copyright notice appear in all copies and that
* both that copyright notice and this permission notice appear in
* supporting documentation.
*
* This file is provided AS IS with no warranties of any kind. The author
* shall have no liability with respect to the infringement of copyrights,
* trade secrets or any patents by this file or any part thereof. In no
* event will the author be liable for any lost revenue or profits or
* other special, indirect and consequential damages.
* -------------------------------------------------------------------------
*
* License of modifications/additions made after 2009-01-01:
* -------------------------------------------------------------------------
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* -------------------------------------------------------------------------
*/
// Based on main.cpp
#include <QTest>
#include "dealer.h"
#include "dealerinfo.h"
#include "golf.h"
#include "../kpat_debug.h"
class TestSolverFormat: public QObject
{
Q_OBJECT
private slots:
void solverFormat_deal1();
};
static DealerScene *getDealer( int wanted_game )
{
fprintf(stderr, "diuuuuu=\n");
foreach ( DealerInfo * di, DealerInfoList::self()->games() )
{
fprintf(stderr, "di=%p\n", di);
if ( di->providesId( wanted_game ) )
{
DealerScene * d = di->createGame();
Q_ASSERT( d );
d->setDeck( new KCardDeck( KCardTheme(), d ) );
d->initialize();
if ( !d->solver() )
{
qCCritical(KPAT_LOG) << "There is no solver for" << di->nameForId( wanted_game );;
return nullptr;
}
return d;
}
}
return nullptr;
}
void TestSolverFormat::solverFormat_deal1()
{
DealerScene *f = getDealer( DealerInfo::GolfId );
assert(f);
f->deck()->stopAnimations();
f->startNew( 1 );
QString have = static_cast<Golf *>(f)->solverFormat();
QString want(
"Foundations: TH\n"
"Talon: 8H 2C JH 7D 6D 8S 8D QS 6C 3D 8C TC 6S 9C 2H 6H\n"
"JD 5H KH AS 4H\n"
"2D KD 3H AH AC\n"
"9H KC 2S 3C 4D\n"
"JC 9S KS 4C 7S\n"
"5D 5S 9D 5C 3S\n"
"7H AD QD TS TD\n"
"7C QC JS QH 4S\n"
);
QCOMPARE(have, want);
}
QTEST_MAIN(TestSolverFormat)
#include "solver_format.moc"
......@@ -170,7 +170,6 @@ void Golf::setGameState( const QString & state )
emit newCardsPossible( !talon->isEmpty() );
}
#ifdef WITH_BH_SOLVER
QString Golf::solverFormat() const
{
QString output;
......@@ -192,13 +191,20 @@ QString Golf::solverFormat() const
for (int i = 0; i < 7 ; i++)
{
QList<KCard*> cards = stack[i]->cards();
bool first = true;
for (QList<KCard*>::ConstIterator it = cards.begin(); it != cards.end(); ++it)
output += rankToString((*it)->rank()) + suitToString((*it)->suit()) + ' ';
{
if (!first)
{
output += ' ';
}
first = false;
output += rankToString((*it)->rank()) + suitToString((*it)->suit());
}
output += '\n';
}
return output;
}
#endif
static class GolfDealerInfo : public DealerInfo
{
......
......@@ -46,9 +46,7 @@ class Golf : public DealerScene
public:
explicit Golf( const DealerInfo * di );
void initialize() Q_DECL_OVERRIDE;
#ifdef WITH_BH_SOLVER
QString solverFormat() const;
#endif
protected:
void setGameState( const QString & state ) Q_DECL_OVERRIDE;
......
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