From 54bd05c37352ee3adc9d975429bd0908cd0c7c52 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 29 Dec 2017 19:19:23 +0300 Subject: Add tests for staticbrowserbox. --- src/Makefile.am | 1 + src/unittests/gui/widgets/staticbrowserbox.cc | 191 ++++++++++++++++++++++++++ 2 files changed, 192 insertions(+) create mode 100644 src/unittests/gui/widgets/staticbrowserbox.cc diff --git a/src/Makefile.am b/src/Makefile.am index d5a37af0f..1d4212445 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -2135,6 +2135,7 @@ manaplustests_SOURCES += \ unittests/resources/sprite/animatedsprite.cc \ unittests/gui/fonts/textchunklist.cc \ unittests/gui/widgets/browserbox.cc \ + unittests/gui/widgets/staticbrowserbox.cc \ unittests/resources/dye/dye.cc \ unittests/resources/dye/dyepalette.cc \ unittests/integrity.cc \ diff --git a/src/unittests/gui/widgets/staticbrowserbox.cc b/src/unittests/gui/widgets/staticbrowserbox.cc new file mode 100644 index 000000000..dc137070a --- /dev/null +++ b/src/unittests/gui/widgets/staticbrowserbox.cc @@ -0,0 +1,191 @@ +/* + * The ManaPlus Client + * Copyright (C) 2012-2017 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * 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 + * 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 . + */ + +#include "unittests/unittests.h" + +#include "client.h" +#include "configuration.h" +#include "configmanager.h" +#include "dirs.h" +#include "graphicsmanager.h" + +#include "being/actorsprite.h" + +#include "fs/virtfs/fs.h" + +#include "gui/gui.h" + +#include "gui/fonts/font.h" + +#include "gui/widgets/staticbrowserbox.h" + +#include "utils/delete2.h" +#include "utils/env.h" + +#include "render/sdlgraphics.h" + +#include "resources/sdlimagehelper.h" + +#include "debug.h" + +TEST_CASE("StaticBrowserBox tests", "browserbox") +{ + setEnv("SDL_VIDEODRIVER", "dummy"); + + client = new Client; + VirtFs::mountDirSilent("data", Append_false); + VirtFs::mountDirSilent("../data", Append_false); + + mainGraphics = new SDLGraphics; + imageHelper = new SDLImageHelper; + + Dirs::initRootDir(); + Dirs::initHomeDir(); + + ConfigManager::initConfiguration(); + setConfigDefaults2(config); + setBrandingDefaults(branding); + +#ifdef USE_SDL2 + SDLImageHelper::setRenderer(graphicsManager.createRenderer( + graphicsManager.createWindow(640, 480, 0, + SDL_WINDOW_SHOWN | SDL_SWSURFACE), SDL_RENDERER_SOFTWARE)); +#else // USE_SDL2 + + graphicsManager.createWindow(640, 480, 0, SDL_ANYFORMAT | SDL_SWSURFACE); +#endif // USE_SDL2 + + theme = new Theme; + Theme::selectSkin(); + + ActorSprite::load(); + gui = new Gui(); + gui->postInit(mainGraphics); + + Widget::setGlobalFont(new Font( + "/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf", + 18, + TTF_STYLE_NORMAL)); + StaticBrowserBox *const box = new StaticBrowserBox(nullptr, + Opaque_true, + ""); + box->setWidth(100); + std::string row = "test"; + box->addRow(row, false); + REQUIRE(box->hasRows() == true); + box->clearRows(); + row = "@@"; + box->addRow(row, false); + row = "@@|"; + box->addRow(row, false); + row = "|@@"; + box->addRow(row, false); + row = "@@|@@"; + box->addRow(row, false); + row = "|@@@@"; + box->addRow(row, false); + row = "@@11|22@@"; + box->addRow(row, false); + row = "##@@11|22@@"; + box->addRow(row, false); + row = "@@##|22@@"; + box->addRow(row, false); + row = "@@11|##22@@"; + box->addRow(row, false); + row = "@@11|22##@@"; + box->addRow(row, false); + row = "@@11|22@@##"; + box->addRow(row, false); + row = "<##@@11|22@@"; + box->addRow(row, false); + row = "@@<##|22@@"; + box->addRow(row, false); + row = "@@11|<##22@@"; + box->addRow(row, false); + row = "@@11|22<##@@"; + box->addRow(row, false); + row = "@@11|22@@<##"; + box->addRow(row, false); + row = "<##11|22@@"; + box->addRow(row, false); + row = "<##|22@@"; + box->addRow(row, false); + row = "11|<##22@@"; + box->addRow(row, false); + row = "11|22<##@@"; + box->addRow(row, false); + row = "11|22@@<##"; + box->addRow(row, false); + row = "##>@@11|22@@"; + box->addRow(row, false); + row = "@@##>|22@@"; + box->addRow(row, false); + row = "@@11|##>22@@"; + box->addRow(row, false); + row = "@@11|22##>@@"; + box->addRow(row, false); + row = "@@11|22@@##>"; + box->addRow(row, false); + row = "<##11|22##>"; + box->addRow(row, false); + row = "<##|22##>"; + box->addRow(row, false); + row = "11|<##22##>"; + box->addRow(row, false); + row = "11|22<####>"; + box->addRow(row, false); + row = "11|22##><##"; + box->addRow(row, false); + row = "%%@@11|22@@"; + box->addRow(row, false); + row = "%%2@@11|22@@"; + box->addRow(row, false); + row = "<%%11|22@@"; + box->addRow(row, false); + row = "@@%%>|22@@"; + box->addRow(row, false); + row = "<%%|22%%>"; + box->addRow(row, false); + row = "11|22<%%%%>"; + box->addRow(row, false); + row = "%%"; + box->addRow(row, false); + row = "%%1"; + box->addRow(row, false); + row = "%%##"; + box->addRow(row, false); + row = "%%###"; + box->addRow(row, false); + row = "##%%"; + box->addRow(row, false); + row = "##1%%"; + box->addRow(row, false); + row = "##%%2"; + box->addRow(row, false); + row = "##1%%2"; + box->addRow(row, false); + + delete Widget::getGloablFont(); + Widget::setGlobalFont(nullptr); + delete box; + delete2(client); + VirtFs::unmountDirSilent("data"); + VirtFs::unmountDirSilent("../data"); +} -- cgit v1.2.3-60-g2f50