Mercurial > fife-parpg
changeset 44:5a2db5e7ab54
renamed unittest++ based tests as they were with boost
author | jasoka@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Sun, 13 Jul 2008 07:52:58 +0000 |
parents | 6daa907234e1 |
children | 8c073dd2d3a3 |
files | tests/core_tests/SConscript tests/core_tests/test_dat1++.cpp tests/core_tests/test_dat1.cpp tests/core_tests/test_dat2++.cpp tests/core_tests/test_dat2.cpp tests/core_tests/test_gui++.cpp tests/core_tests/test_gui.cpp tests/core_tests/test_imagepool++.cpp tests/core_tests/test_imagepool.cpp tests/core_tests/test_images++.cpp tests/core_tests/test_images.cpp tests/core_tests/test_rect++.cpp tests/core_tests/test_rect.cpp tests/core_tests/test_vfs++.cpp tests/core_tests/test_vfs.cpp tests/core_tests/test_zip++.cpp tests/core_tests/test_zip.cpp |
diffstat | 17 files changed, 962 insertions(+), 962 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/core_tests/SConscript Sun Jul 13 07:46:49 2008 +0000 +++ b/tests/core_tests/SConscript Sun Jul 13 07:52:58 2008 +0000 @@ -19,16 +19,16 @@ # The test_fife.py script relies on this specific layout. # Check it, if you change something here -env.Program('testprog_rect', ['test_rect++.cpp']) -env.Program('testprog_dat1', ['test_dat1++.cpp']) -env.Program('testprog_dat2', ['test_dat2++.cpp']) -env.Program('testprog_gui', ['test_gui++.cpp']) -env.Program('testprog_images', ['test_images++.cpp']) -env.Program('testprog_imagepool', ['test_imagepool++.cpp']) -env.Program('testprog_vfs', ['test_vfs++.cpp']) +env.Program('testprog_rect', ['test_rect.cpp']) +env.Program('testprog_dat1', ['test_dat1.cpp']) +env.Program('testprog_dat2', ['test_dat2.cpp']) +env.Program('testprog_gui', ['test_gui.cpp']) +env.Program('testprog_images', ['test_images.cpp']) +env.Program('testprog_imagepool', ['test_imagepool.cpp']) +env.Program('testprog_vfs', ['test_vfs.cpp']) if env['zip']: - env.Program('testprog_zip', ['test_zip++.cpp']) + env.Program('testprog_zip', ['test_zip.cpp']) # vim: set filetype=python :
--- a/tests/core_tests/test_dat1++.cpp Sun Jul 13 07:46:49 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,96 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005-2008 by the FIFE team * - * http://www.fifengine.de * - * This file is part of FIFE. * - * * - * FIFE 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, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ - -// Standard C++ library includes -#include <iostream> -#include <iomanip> - -// Platform specific includes -#include "fife_unittest++.h" - -// 3rd party library includes - -// FIFE includes -// These includes are split up in two parts, separated by one empty line -// First block: files included from the FIFE root src directory -// Second block: files included from the same folder -#include "vfs/vfs.h" -#include "vfs/vfsdirectory.h" -#include "vfs/dat/dat1.h" -#include "vfs/dat/dat2.h" -#include "vfs/raw/rawdata.h" -#include "util/base/exception.h" - -using namespace FIFE; - -static const std::string COMPRESSED_FILE = "../../tests/data/dat1vfstest.dat"; -static const std::string RAW_FILE = "../../tests/data/test.map"; - -TEST(DAT1_test){ - - boost::shared_ptr<FIFE::VFS> vfs(new FIFE::VFS()); - vfs->addSource(new FIFE::VFSDirectory(vfs.get())); - CHECK(vfs->exists(COMPRESSED_FILE)); - - - vfs->addSource(new FIFE::DAT1(vfs.get(), COMPRESSED_FILE)); - - CHECK(vfs->exists(RAW_FILE)); - CHECK(vfs->exists("dat1vfstest.map")); - - FIFE::RawData* fraw = vfs->open(RAW_FILE); - FIFE::RawData* fcomp = vfs->open("dat1vfstest.map"); - - CHECK_EQUAL(fraw->getDataLength(), fcomp->getDataLength()); - //std::cout << "data length match, length = " << fcomp->getDataLength() << std::endl; - - unsigned int smaller_len = fraw->getDataLength(); - if (fcomp->getDataLength() < smaller_len) { - smaller_len = fcomp->getDataLength(); - } - - uint8_t* d_raw = new uint8_t[fraw->getDataLength()]; - uint8_t* d_comp = new uint8_t[fcomp->getDataLength()]; - fraw->readInto(d_raw,fraw->getDataLength()); - fcomp->readInto(d_comp,fcomp->getDataLength()); - //std::cout << "scanning data..." << std::endl; - for (unsigned int i = 0; i < smaller_len; i++) { - uint8_t rawc = d_raw[i]; - uint8_t compc = d_comp[i]; - CHECK_EQUAL(compc, rawc); - //std::cout - // << "raw: " << std::setbase(16) << rawc - // << " comp: " << std::setbase(16) << compc << std::endl; - break; - - - } - //std::cout << "scanning finished" << std::endl; - - delete[] d_raw; - delete[] d_comp; - delete fraw; - delete fcomp; -} - -int main() { - return UnitTest::RunAllTests(); -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/core_tests/test_dat1.cpp Sun Jul 13 07:52:58 2008 +0000 @@ -0,0 +1,96 @@ +/*************************************************************************** + * Copyright (C) 2005-2008 by the FIFE team * + * http://www.fifengine.de * + * This file is part of FIFE. * + * * + * FIFE 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, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * + ***************************************************************************/ + +// Standard C++ library includes +#include <iostream> +#include <iomanip> + +// Platform specific includes +#include "fife_unittest++.h" + +// 3rd party library includes + +// FIFE includes +// These includes are split up in two parts, separated by one empty line +// First block: files included from the FIFE root src directory +// Second block: files included from the same folder +#include "vfs/vfs.h" +#include "vfs/vfsdirectory.h" +#include "vfs/dat/dat1.h" +#include "vfs/dat/dat2.h" +#include "vfs/raw/rawdata.h" +#include "util/base/exception.h" + +using namespace FIFE; + +static const std::string COMPRESSED_FILE = "../../tests/data/dat1vfstest.dat"; +static const std::string RAW_FILE = "../../tests/data/test.map"; + +TEST(DAT1_test){ + + boost::shared_ptr<FIFE::VFS> vfs(new FIFE::VFS()); + vfs->addSource(new FIFE::VFSDirectory(vfs.get())); + CHECK(vfs->exists(COMPRESSED_FILE)); + + + vfs->addSource(new FIFE::DAT1(vfs.get(), COMPRESSED_FILE)); + + CHECK(vfs->exists(RAW_FILE)); + CHECK(vfs->exists("dat1vfstest.map")); + + FIFE::RawData* fraw = vfs->open(RAW_FILE); + FIFE::RawData* fcomp = vfs->open("dat1vfstest.map"); + + CHECK_EQUAL(fraw->getDataLength(), fcomp->getDataLength()); + //std::cout << "data length match, length = " << fcomp->getDataLength() << std::endl; + + unsigned int smaller_len = fraw->getDataLength(); + if (fcomp->getDataLength() < smaller_len) { + smaller_len = fcomp->getDataLength(); + } + + uint8_t* d_raw = new uint8_t[fraw->getDataLength()]; + uint8_t* d_comp = new uint8_t[fcomp->getDataLength()]; + fraw->readInto(d_raw,fraw->getDataLength()); + fcomp->readInto(d_comp,fcomp->getDataLength()); + //std::cout << "scanning data..." << std::endl; + for (unsigned int i = 0; i < smaller_len; i++) { + uint8_t rawc = d_raw[i]; + uint8_t compc = d_comp[i]; + CHECK_EQUAL(compc, rawc); + //std::cout + // << "raw: " << std::setbase(16) << rawc + // << " comp: " << std::setbase(16) << compc << std::endl; + break; + + + } + //std::cout << "scanning finished" << std::endl; + + delete[] d_raw; + delete[] d_comp; + delete fraw; + delete fcomp; +} + +int main() { + return UnitTest::RunAllTests(); +}
--- a/tests/core_tests/test_dat2++.cpp Sun Jul 13 07:46:49 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005-2008 by the FIFE team * - * http://www.fifengine.de * - * This file is part of FIFE. * - * * - * FIFE 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, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ - -// Standard C++ library includes -#include <iostream> -#include <iomanip> - -// Platform specific includes -#include "fife_unittest++.h" - -// 3rd party library includes - -// FIFE includes -// These includes are split up in two parts, separated by one empty line -// First block: files included from the FIFE root src directory -// Second block: files included from the same folder -#include "vfs/vfs.h" -#include "vfs/vfsdirectory.h" -#include "vfs/dat/dat2.h" -#include "vfs/raw/rawdata.h" -#include "util/base/exception.h" -#include "util/time/timemanager.h" - -using namespace FIFE; - -static const std::string COMPRESSED_FILE = "../data/dat2vfstest.dat"; -static const std::string RAW_FILE = "../data/test.map"; -TEST(DAT2_test){ - - boost::shared_ptr<TimeManager> timemanager(new TimeManager()); - - boost::shared_ptr<VFS> vfs(new VFS()); - vfs->addSource(new VFSDirectory(vfs.get())); - CHECK(vfs->exists(COMPRESSED_FILE)); - - try { - std::cout << "adding Source" << std::endl; - vfs->addSource(new DAT2(vfs.get(), COMPRESSED_FILE)); - std::cout << "added Source" << std::endl; - } - catch (Exception& e) - { - std::cout << e.getMessage() << std::endl; - } - - CHECK(vfs->exists(RAW_FILE)); - CHECK(vfs->exists("dat2vfstest.map")); - - FIFE::RawData* fraw = vfs->open(RAW_FILE); - FIFE::RawData* fcomp = vfs->open("dat2vfstest.map"); - - CHECK_EQUAL(fraw->getDataLength(), fcomp->getDataLength()); - //std::cout << "data length match, length = " << fcomp->getDataLength() << std::endl; - - unsigned int smaller_len = fraw->getDataLength(); - if (fcomp->getDataLength() < smaller_len) { - smaller_len = fcomp->getDataLength(); - } - - uint8_t* d_raw = new uint8_t[fraw->getDataLength()]; - uint8_t* d_comp = new uint8_t[fcomp->getDataLength()]; - fraw->readInto(d_raw,fraw->getDataLength()); - fcomp->readInto(d_comp,fcomp->getDataLength()); - //std::cout << "scanning data..." << std::endl; - for (unsigned int i = 0; i < smaller_len; i++) { - uint8_t rawc = d_raw[i]; - uint8_t compc = d_comp[i]; - CHECK_EQUAL(compc, rawc); - //std::cout - // << "raw: " << std::setbase(16) << rawc - // << " comp: " << std::setbase(16) << compc << std::endl; - break; - - - } - //std::cout << "scanning finished" << std::endl; - - delete[] d_raw; - delete[] d_comp; - delete fraw; - delete fcomp; - -} - -int main() { - return UnitTest::RunAllTests(); -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/core_tests/test_dat2.cpp Sun Jul 13 07:52:58 2008 +0000 @@ -0,0 +1,105 @@ +/*************************************************************************** + * Copyright (C) 2005-2008 by the FIFE team * + * http://www.fifengine.de * + * This file is part of FIFE. * + * * + * FIFE 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, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * + ***************************************************************************/ + +// Standard C++ library includes +#include <iostream> +#include <iomanip> + +// Platform specific includes +#include "fife_unittest++.h" + +// 3rd party library includes + +// FIFE includes +// These includes are split up in two parts, separated by one empty line +// First block: files included from the FIFE root src directory +// Second block: files included from the same folder +#include "vfs/vfs.h" +#include "vfs/vfsdirectory.h" +#include "vfs/dat/dat2.h" +#include "vfs/raw/rawdata.h" +#include "util/base/exception.h" +#include "util/time/timemanager.h" + +using namespace FIFE; + +static const std::string COMPRESSED_FILE = "../data/dat2vfstest.dat"; +static const std::string RAW_FILE = "../data/test.map"; +TEST(DAT2_test){ + + boost::shared_ptr<TimeManager> timemanager(new TimeManager()); + + boost::shared_ptr<VFS> vfs(new VFS()); + vfs->addSource(new VFSDirectory(vfs.get())); + CHECK(vfs->exists(COMPRESSED_FILE)); + + try { + std::cout << "adding Source" << std::endl; + vfs->addSource(new DAT2(vfs.get(), COMPRESSED_FILE)); + std::cout << "added Source" << std::endl; + } + catch (Exception& e) + { + std::cout << e.getMessage() << std::endl; + } + + CHECK(vfs->exists(RAW_FILE)); + CHECK(vfs->exists("dat2vfstest.map")); + + FIFE::RawData* fraw = vfs->open(RAW_FILE); + FIFE::RawData* fcomp = vfs->open("dat2vfstest.map"); + + CHECK_EQUAL(fraw->getDataLength(), fcomp->getDataLength()); + //std::cout << "data length match, length = " << fcomp->getDataLength() << std::endl; + + unsigned int smaller_len = fraw->getDataLength(); + if (fcomp->getDataLength() < smaller_len) { + smaller_len = fcomp->getDataLength(); + } + + uint8_t* d_raw = new uint8_t[fraw->getDataLength()]; + uint8_t* d_comp = new uint8_t[fcomp->getDataLength()]; + fraw->readInto(d_raw,fraw->getDataLength()); + fcomp->readInto(d_comp,fcomp->getDataLength()); + //std::cout << "scanning data..." << std::endl; + for (unsigned int i = 0; i < smaller_len; i++) { + uint8_t rawc = d_raw[i]; + uint8_t compc = d_comp[i]; + CHECK_EQUAL(compc, rawc); + //std::cout + // << "raw: " << std::setbase(16) << rawc + // << " comp: " << std::setbase(16) << compc << std::endl; + break; + + + } + //std::cout << "scanning finished" << std::endl; + + delete[] d_raw; + delete[] d_comp; + delete fraw; + delete fcomp; + +} + +int main() { + return UnitTest::RunAllTests(); +}
--- a/tests/core_tests/test_gui++.cpp Sun Jul 13 07:46:49 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,134 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005-2008 by the FIFE team * - * http://www.fifengine.de * - * This file is part of FIFE. * - * * - * FIFE 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, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ - -// Standard C++ library includes - -// Platform specific includes -#include "fife_unittest++.h" - -// 3rd party library includes -#include <boost/scoped_ptr.hpp> -#include <boost/shared_ptr.hpp> -#include <SDL.h> -#include <guichan.hpp> - -#include "vfs/vfs.h" -#include "util/structures/rect.h" -#include "util/time/timemanager.h" -#include "vfs/vfs.h" -#include "vfs/vfsdirectory.h" -#include "vfs/raw/rawdata.h" -#include "video/image_location.h" -#include "video/image.h" -#include "video/imagepool.h" -#include "video/sdl/renderbackendsdl.h" -#include "video/opengl/renderbackendopengl.h" -#include "loaders/native/video_loaders/image_loader.h" -#include "loaders/native/video_loaders/subimage_loader.h" -#include "util/base/exception.h" -#include "gui/base/opengl/opengl_gui_graphics.h" -#include "gui/base/sdl/sdl_gui_graphics.h" -#include "gui/base/gui_image.h" -#include "gui/base/gui_imageloader.h" - -using namespace FIFE; - -static const std::string IMAGE_FILE = "../../tests/data/beach_e1.png"; -static const std::string SUBIMAGE_FILE = "../../tests/data/rpg_tiles_01.png"; -struct environment { - boost::shared_ptr<TimeManager> timemanager; - - environment() - : timemanager(new TimeManager()) { - if (SDL_Init(SDL_INIT_NOPARACHUTE | SDL_INIT_TIMER) < 0) { - throw SDLException(SDL_GetError()); - } - } -}; - -void test_gui_image(RenderBackend& renderbackend, gcn::Graphics& graphics, ImagePool& pool) { - boost::scoped_ptr<VFS> vfs(new VFS()); - vfs->addSource(new VFSDirectory(vfs.get())); - - pool.addResourceLoader(new SubImageLoader()); - pool.addResourceLoader(new ImageLoader(vfs.get())); - - GuiImageLoader imageloader(pool); - gcn::Image::setImageLoader(&imageloader); - - - gcn::Container* top = new gcn::Container(); - top->setDimension(gcn::Rectangle(0, 0, 200, 300)); - gcn::Gui* gui = new gcn::Gui(); - gui->setGraphics(&graphics); - gui->setTop(top); - gcn::Label* label = new gcn::Label("Label"); - - gcn::Image* guiimage = gcn::Image::load(IMAGE_FILE); - gcn::Icon* icon = new gcn::Icon(guiimage); - - top->add(label, 10, 10); - top->add(icon, 10, 30); - - ImageLoader provider(vfs.get()); - boost::scoped_ptr<Image> img(dynamic_cast<Image*>(provider.loadResource(ImageLocation(IMAGE_FILE)))); - - int h = img->getHeight(); - int w = img->getWidth(); - for (int i = 0; i < 100; i+=2) { - renderbackend.startFrame(); - img->render(Rect(i, i, w, h)); - gui->logic(); - gui->draw(); - renderbackend.endFrame(); - } - delete label; - delete icon; - delete guiimage; - } - - -TEST(test_sdl_gui_image) -{ - environment env; - RenderBackendSDL renderbackend; - renderbackend.init(); - ImagePool pool; - Image* screen = renderbackend.createMainScreen(800, 600, 0, false); - SdlGuiGraphics graphics(pool); - graphics.setTarget(screen->getSurface()); - test_gui_image(renderbackend, graphics, pool); -} - -TEST(test_ogl_gui_image) -{ - environment env; - RenderBackendOpenGL renderbackend; - renderbackend.init(); - ImagePool pool; - renderbackend.createMainScreen(800, 600, 0, false); - OpenGLGuiGraphics graphics(pool); - test_gui_image(renderbackend, graphics, pool); -} - -int main() { - return UnitTest::RunAllTests(); -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/core_tests/test_gui.cpp Sun Jul 13 07:52:58 2008 +0000 @@ -0,0 +1,134 @@ +/*************************************************************************** + * Copyright (C) 2005-2008 by the FIFE team * + * http://www.fifengine.de * + * This file is part of FIFE. * + * * + * FIFE 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, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * + ***************************************************************************/ + +// Standard C++ library includes + +// Platform specific includes +#include "fife_unittest++.h" + +// 3rd party library includes +#include <boost/scoped_ptr.hpp> +#include <boost/shared_ptr.hpp> +#include <SDL.h> +#include <guichan.hpp> + +#include "vfs/vfs.h" +#include "util/structures/rect.h" +#include "util/time/timemanager.h" +#include "vfs/vfs.h" +#include "vfs/vfsdirectory.h" +#include "vfs/raw/rawdata.h" +#include "video/image_location.h" +#include "video/image.h" +#include "video/imagepool.h" +#include "video/sdl/renderbackendsdl.h" +#include "video/opengl/renderbackendopengl.h" +#include "loaders/native/video_loaders/image_loader.h" +#include "loaders/native/video_loaders/subimage_loader.h" +#include "util/base/exception.h" +#include "gui/base/opengl/opengl_gui_graphics.h" +#include "gui/base/sdl/sdl_gui_graphics.h" +#include "gui/base/gui_image.h" +#include "gui/base/gui_imageloader.h" + +using namespace FIFE; + +static const std::string IMAGE_FILE = "../../tests/data/beach_e1.png"; +static const std::string SUBIMAGE_FILE = "../../tests/data/rpg_tiles_01.png"; +struct environment { + boost::shared_ptr<TimeManager> timemanager; + + environment() + : timemanager(new TimeManager()) { + if (SDL_Init(SDL_INIT_NOPARACHUTE | SDL_INIT_TIMER) < 0) { + throw SDLException(SDL_GetError()); + } + } +}; + +void test_gui_image(RenderBackend& renderbackend, gcn::Graphics& graphics, ImagePool& pool) { + boost::scoped_ptr<VFS> vfs(new VFS()); + vfs->addSource(new VFSDirectory(vfs.get())); + + pool.addResourceLoader(new SubImageLoader()); + pool.addResourceLoader(new ImageLoader(vfs.get())); + + GuiImageLoader imageloader(pool); + gcn::Image::setImageLoader(&imageloader); + + + gcn::Container* top = new gcn::Container(); + top->setDimension(gcn::Rectangle(0, 0, 200, 300)); + gcn::Gui* gui = new gcn::Gui(); + gui->setGraphics(&graphics); + gui->setTop(top); + gcn::Label* label = new gcn::Label("Label"); + + gcn::Image* guiimage = gcn::Image::load(IMAGE_FILE); + gcn::Icon* icon = new gcn::Icon(guiimage); + + top->add(label, 10, 10); + top->add(icon, 10, 30); + + ImageLoader provider(vfs.get()); + boost::scoped_ptr<Image> img(dynamic_cast<Image*>(provider.loadResource(ImageLocation(IMAGE_FILE)))); + + int h = img->getHeight(); + int w = img->getWidth(); + for (int i = 0; i < 100; i+=2) { + renderbackend.startFrame(); + img->render(Rect(i, i, w, h)); + gui->logic(); + gui->draw(); + renderbackend.endFrame(); + } + delete label; + delete icon; + delete guiimage; + } + + +TEST(test_sdl_gui_image) +{ + environment env; + RenderBackendSDL renderbackend; + renderbackend.init(); + ImagePool pool; + Image* screen = renderbackend.createMainScreen(800, 600, 0, false); + SdlGuiGraphics graphics(pool); + graphics.setTarget(screen->getSurface()); + test_gui_image(renderbackend, graphics, pool); +} + +TEST(test_ogl_gui_image) +{ + environment env; + RenderBackendOpenGL renderbackend; + renderbackend.init(); + ImagePool pool; + renderbackend.createMainScreen(800, 600, 0, false); + OpenGLGuiGraphics graphics(pool); + test_gui_image(renderbackend, graphics, pool); +} + +int main() { + return UnitTest::RunAllTests(); +}
--- a/tests/core_tests/test_imagepool++.cpp Sun Jul 13 07:46:49 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,137 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005-2008 by the FIFE team * - * http://www.fifengine.de * - * This file is part of FIFE. * - * * - * FIFE 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, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ - -// Standard C++ library includes -#include <iostream> -#include <iomanip> - -// Platform specific includes -#include "fife_unittest++.h" - -// 3rd party library includes -#include <boost/scoped_ptr.hpp> -#include <boost/shared_ptr.hpp> -#include <SDL.h> - -// FIFE includes -// These includes are split up in two parts, separated by one empty line -// First block: files included from the FIFE root src directory -// Second block: files included from the same folder -#include "vfs/vfs.h" -#include "util/structures/rect.h" -#include "util/time/timemanager.h" -#include "vfs/vfsdirectory.h" -#include "vfs/raw/rawdata.h" -#include "video/image_location.h" -#include "video/image.h" -#include "video/imagepool.h" -#include "video/sdl/renderbackendsdl.h" -#include "video/opengl/renderbackendopengl.h" -#include "loaders/native/video_loaders/image_loader.h" -#include "loaders/native/video_loaders/subimage_loader.h" -#include "util/base/exception.h" - -using namespace FIFE; - -static const std::string IMAGE_FILE = "../../tests/data/beach_e1.png"; -static const std::string SUBIMAGE_FILE = "../../tests/data/rpg_tiles_01.png"; -static const std::string ANIM_FILE = "../../tests/data/crate_full_001.xml"; - -// Environment -struct environment { - boost::shared_ptr<TimeManager> timemanager; - boost::shared_ptr<VFS> vfs; - - environment() - : timemanager(new TimeManager()) { - if (SDL_Init(SDL_INIT_NOPARACHUTE | SDL_INIT_TIMER) < 0) { - throw SDLException(SDL_GetError()); - } - } -}; - -TEST(test_image_pool) -{ - environment env; - RenderBackendSDL renderbackend; - - boost::scoped_ptr<VFS> vfs(new VFS()); - vfs->addSource(new VFSDirectory(vfs.get())); - - renderbackend.init(); - renderbackend.createMainScreen(800, 600, 0, false); - ImagePool pool; - pool.addResourceLoader(new SubImageLoader()); - pool.addResourceLoader(new ImageLoader(vfs.get())); - - CHECK_EQUAL(0, pool.getResourceCount(RES_LOADED)); - CHECK_EQUAL(0, pool.getResourceCount(RES_NON_LOADED)); - - pool.addResourceFromLocation(ImageLocation(IMAGE_FILE)); - CHECK_EQUAL(0, pool.getResourceCount(RES_LOADED)); - CHECK_EQUAL(1, pool.getResourceCount(RES_NON_LOADED)); - ImageLocation location(SUBIMAGE_FILE); - ImageLoader imgprovider(vfs.get()); - int fullImgInd = pool.addResourceFromLocation(ImageLocation(SUBIMAGE_FILE)); - CHECK_EQUAL(0, pool.getResourceCount(RES_LOADED)); - CHECK_EQUAL(2, pool.getResourceCount(RES_NON_LOADED)); - Image& img = pool.getImage(fullImgInd); - CHECK_EQUAL(1, pool.getResourceCount(RES_LOADED)); - CHECK_EQUAL(1, pool.getResourceCount(RES_NON_LOADED)); - - location.setParentSource(&img); - int W = img.getWidth(); - int w = W / 12; - int H = img.getHeight(); - int h = H / 12; - location.setWidth(w); - location.setHeight(h); - pool.addResourceFromLocation(location); - - CHECK_EQUAL(1, pool.getResourceCount(RES_LOADED)); - CHECK_EQUAL(2, pool.getResourceCount(RES_NON_LOADED)); - - for (int k = 0; k < 3; k++) { - for (int j = 0, s = pool.getResourceCount(RES_LOADED | RES_NON_LOADED); j < s; j++) { - std::cout << j << std::endl; - Image& r = dynamic_cast<Image&>(pool.get(j)); - int h = r.getHeight(); - int w = r.getWidth(); - for (int i = 20; i > 0; i-=2) { - renderbackend.startFrame(); - r.render(Rect(i, i, w, h)); - renderbackend.endFrame(); - TimeManager::instance()->update(); - } - } - CHECK_EQUAL(3, pool.getResourceCount(RES_LOADED)); - CHECK_EQUAL(0, pool.getResourceCount(RES_NON_LOADED)); - } - CHECK_EQUAL(3, pool.getResourceCount(RES_LOADED)); - CHECK_EQUAL(0, pool.getResourceCount(RES_NON_LOADED)); - pool.clear(); - CHECK_EQUAL(0, pool.getResourceCount(RES_LOADED)); - CHECK_EQUAL(0, pool.getResourceCount(RES_NON_LOADED)); -} - -int main() { - return UnitTest::RunAllTests(); -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/core_tests/test_imagepool.cpp Sun Jul 13 07:52:58 2008 +0000 @@ -0,0 +1,137 @@ +/*************************************************************************** + * Copyright (C) 2005-2008 by the FIFE team * + * http://www.fifengine.de * + * This file is part of FIFE. * + * * + * FIFE 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, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * + ***************************************************************************/ + +// Standard C++ library includes +#include <iostream> +#include <iomanip> + +// Platform specific includes +#include "fife_unittest++.h" + +// 3rd party library includes +#include <boost/scoped_ptr.hpp> +#include <boost/shared_ptr.hpp> +#include <SDL.h> + +// FIFE includes +// These includes are split up in two parts, separated by one empty line +// First block: files included from the FIFE root src directory +// Second block: files included from the same folder +#include "vfs/vfs.h" +#include "util/structures/rect.h" +#include "util/time/timemanager.h" +#include "vfs/vfsdirectory.h" +#include "vfs/raw/rawdata.h" +#include "video/image_location.h" +#include "video/image.h" +#include "video/imagepool.h" +#include "video/sdl/renderbackendsdl.h" +#include "video/opengl/renderbackendopengl.h" +#include "loaders/native/video_loaders/image_loader.h" +#include "loaders/native/video_loaders/subimage_loader.h" +#include "util/base/exception.h" + +using namespace FIFE; + +static const std::string IMAGE_FILE = "../../tests/data/beach_e1.png"; +static const std::string SUBIMAGE_FILE = "../../tests/data/rpg_tiles_01.png"; +static const std::string ANIM_FILE = "../../tests/data/crate_full_001.xml"; + +// Environment +struct environment { + boost::shared_ptr<TimeManager> timemanager; + boost::shared_ptr<VFS> vfs; + + environment() + : timemanager(new TimeManager()) { + if (SDL_Init(SDL_INIT_NOPARACHUTE | SDL_INIT_TIMER) < 0) { + throw SDLException(SDL_GetError()); + } + } +}; + +TEST(test_image_pool) +{ + environment env; + RenderBackendSDL renderbackend; + + boost::scoped_ptr<VFS> vfs(new VFS()); + vfs->addSource(new VFSDirectory(vfs.get())); + + renderbackend.init(); + renderbackend.createMainScreen(800, 600, 0, false); + ImagePool pool; + pool.addResourceLoader(new SubImageLoader()); + pool.addResourceLoader(new ImageLoader(vfs.get())); + + CHECK_EQUAL(0, pool.getResourceCount(RES_LOADED)); + CHECK_EQUAL(0, pool.getResourceCount(RES_NON_LOADED)); + + pool.addResourceFromLocation(ImageLocation(IMAGE_FILE)); + CHECK_EQUAL(0, pool.getResourceCount(RES_LOADED)); + CHECK_EQUAL(1, pool.getResourceCount(RES_NON_LOADED)); + ImageLocation location(SUBIMAGE_FILE); + ImageLoader imgprovider(vfs.get()); + int fullImgInd = pool.addResourceFromLocation(ImageLocation(SUBIMAGE_FILE)); + CHECK_EQUAL(0, pool.getResourceCount(RES_LOADED)); + CHECK_EQUAL(2, pool.getResourceCount(RES_NON_LOADED)); + Image& img = pool.getImage(fullImgInd); + CHECK_EQUAL(1, pool.getResourceCount(RES_LOADED)); + CHECK_EQUAL(1, pool.getResourceCount(RES_NON_LOADED)); + + location.setParentSource(&img); + int W = img.getWidth(); + int w = W / 12; + int H = img.getHeight(); + int h = H / 12; + location.setWidth(w); + location.setHeight(h); + pool.addResourceFromLocation(location); + + CHECK_EQUAL(1, pool.getResourceCount(RES_LOADED)); + CHECK_EQUAL(2, pool.getResourceCount(RES_NON_LOADED)); + + for (int k = 0; k < 3; k++) { + for (int j = 0, s = pool.getResourceCount(RES_LOADED | RES_NON_LOADED); j < s; j++) { + std::cout << j << std::endl; + Image& r = dynamic_cast<Image&>(pool.get(j)); + int h = r.getHeight(); + int w = r.getWidth(); + for (int i = 20; i > 0; i-=2) { + renderbackend.startFrame(); + r.render(Rect(i, i, w, h)); + renderbackend.endFrame(); + TimeManager::instance()->update(); + } + } + CHECK_EQUAL(3, pool.getResourceCount(RES_LOADED)); + CHECK_EQUAL(0, pool.getResourceCount(RES_NON_LOADED)); + } + CHECK_EQUAL(3, pool.getResourceCount(RES_LOADED)); + CHECK_EQUAL(0, pool.getResourceCount(RES_NON_LOADED)); + pool.clear(); + CHECK_EQUAL(0, pool.getResourceCount(RES_LOADED)); + CHECK_EQUAL(0, pool.getResourceCount(RES_NON_LOADED)); +} + +int main() { + return UnitTest::RunAllTests(); +}
--- a/tests/core_tests/test_images++.cpp Sun Jul 13 07:46:49 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,201 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005-2008 by the FIFE team * - * http://www.fifengine.de * - * This file is part of FIFE. * - * * - * FIFE 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, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ - -// Standard C++ library includes -#include <iostream> -#include <iomanip> - -// Platform specific includes -#include "fife_unittest++.h" - -// 3rd party library includes -#include <boost/scoped_ptr.hpp> -#include <boost/shared_ptr.hpp> -#include <SDL.h> - -// FIFE includes -// These includes are split up in two parts, separated by one empty line -// First block: files included from the FIFE root src directory -// Second block: files included from the same folder -#include "vfs/vfs.h" -#include "util/structures/rect.h" -#include "util/time/timemanager.h" -#include "vfs/vfsdirectory.h" -#include "vfs/raw/rawdata.h" -#include "video/image_location.h" -#include "video/image.h" -#include "video/imagepool.h" -#include "video/sdl/renderbackendsdl.h" -#include "video/opengl/renderbackendopengl.h" -#include "loaders/native/video_loaders/image_loader.h" -#include "loaders/native/video_loaders/subimage_loader.h" -#include "util/base/exception.h" - -using namespace FIFE; - -static const std::string IMAGE_FILE = "../../tests/data/beach_e1.png"; -static const std::string ALPHA_IMAGE_FILE = "../../tests/data/alpha_fidgit.png"; -static const std::string SUBIMAGE_FILE = "../../tests/data/rpg_tiles_01.png"; - -// Environment -struct environment { - boost::shared_ptr<TimeManager> timemanager; - boost::shared_ptr<VFS> vfs; - - environment() - : timemanager(new TimeManager()), - vfs(new VFS()) { - vfs->addSource(new VFSDirectory(vfs.get())); - if (SDL_Init(SDL_INIT_NOPARACHUTE | SDL_INIT_TIMER) < 0) { - throw SDLException(SDL_GetError()); - } - } -}; - -void test_image(VFS* vfs, RenderBackend& renderbackend) { - renderbackend.init(); - renderbackend.createMainScreen(800, 600, 0, false); - - ImageLoader provider(vfs); - boost::scoped_ptr<Image> img(dynamic_cast<Image*>(provider.loadResource(ImageLocation(IMAGE_FILE)))); - - int h = img->getHeight(); - int w = img->getWidth(); - for (int i = 0; i < 100; i++) { - renderbackend.startFrame(); - img->render(Rect(i, i, w, h)); - renderbackend.endFrame(); - } - for (int j = 0; j < 5; j++) { - for (int i = -10; i < 10; i++) { - renderbackend.startFrame(); - img->setXShift(i); - img->setYShift(i); - img->render(Rect(200, 200, w, h)); - renderbackend.endFrame(); - } - } -} - -void test_subimage(VFS* vfs, RenderBackend& renderbackend) { - renderbackend.init(); - renderbackend.createMainScreen(800, 600, 0, false); - - ImageLoader imgprovider(vfs); - boost::scoped_ptr<Image> img(dynamic_cast<Image*>(imgprovider.loadResource(ImageLocation(SUBIMAGE_FILE)))); - - ImageLocation location(SUBIMAGE_FILE); - location.setParentSource(&*img); - int W = img->getWidth(); - int w = W / 12; - int H = img->getHeight(); - int h = H / 12; - location.setWidth(w); - location.setHeight(h); - std::vector<Image*> subimages; - - SubImageLoader subprovider; - for (int x = 0; x < (W - w); x+=w) { - for (int y = 0; y < (H - h); y+=h) { - location.setXShift(x); - location.setYShift(y); - Image* sub = dynamic_cast<Image*>(subprovider.loadResource(location)); - subimages.push_back(sub); - } - } - - for (unsigned int i = 0; i < 200; i++) { - renderbackend.startFrame(); - subimages[i / 40]->render(Rect(200, 200, w, h)); - renderbackend.endFrame(); - } - std::vector<Image*>::iterator i = subimages.begin(); - while (i != subimages.end()) { - delete *i; - i++; - } - -} - -TEST(test_sdl_alphaoptimize) -{ - environment env; - RenderBackendSDL renderbackend; - renderbackend.init(); - renderbackend.createMainScreen(800, 600, 0, false); - renderbackend.setAlphaOptimizerEnabled(true); - - ImageLoader provider(env.vfs.get()); - env.vfs.get()->exists(IMAGE_FILE); - boost::scoped_ptr<Image> img(dynamic_cast<Image*>(provider.loadResource(ImageLocation(IMAGE_FILE)))); - env.vfs.get()->exists(ALPHA_IMAGE_FILE); - boost::scoped_ptr<Image> alpha_img(dynamic_cast<Image*>(provider.loadResource(ImageLocation(ALPHA_IMAGE_FILE)))); - - int h0 = img->getHeight(); - int w0 = img->getWidth(); - - int h1 = alpha_img->getHeight(); - int w1 = alpha_img->getWidth(); - for(int i=0; i != 200; ++i) { - renderbackend.startFrame(); - img->render(Rect(i, i, w0, h0)); - alpha_img->render(Rect(i, i, w1, h1)); - alpha_img->render(Rect(i, h0+i, w1, h1)); - img->render(Rect(i, h0+i, w0, h0)); - renderbackend.endFrame(); - } - - CHECK(img->getSurface()->format->Amask == 0); - CHECK(alpha_img->getSurface()->format->Amask != 0); -} - -TEST(test_sdl_image) -{ - environment env; - RenderBackendSDL renderbackend; - test_image(env.vfs.get(), renderbackend); -} - -TEST(test_ogl_image) -{ - environment env; - RenderBackendOpenGL renderbackend; - test_image(env.vfs.get(), renderbackend); -} - -TEST(test_sdl_subimage) -{ - environment env; - RenderBackendSDL renderbackend; - CHECK(env.vfs.get()->exists(IMAGE_FILE)); - test_subimage(env.vfs.get(), renderbackend); -} - -TEST(test_ogl_subimage) -{ - environment env; - RenderBackendOpenGL renderbackend; - test_subimage(env.vfs.get(), renderbackend); -} - -int main() { - return UnitTest::RunAllTests(); -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/core_tests/test_images.cpp Sun Jul 13 07:52:58 2008 +0000 @@ -0,0 +1,201 @@ +/*************************************************************************** + * Copyright (C) 2005-2008 by the FIFE team * + * http://www.fifengine.de * + * This file is part of FIFE. * + * * + * FIFE 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, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * + ***************************************************************************/ + +// Standard C++ library includes +#include <iostream> +#include <iomanip> + +// Platform specific includes +#include "fife_unittest++.h" + +// 3rd party library includes +#include <boost/scoped_ptr.hpp> +#include <boost/shared_ptr.hpp> +#include <SDL.h> + +// FIFE includes +// These includes are split up in two parts, separated by one empty line +// First block: files included from the FIFE root src directory +// Second block: files included from the same folder +#include "vfs/vfs.h" +#include "util/structures/rect.h" +#include "util/time/timemanager.h" +#include "vfs/vfsdirectory.h" +#include "vfs/raw/rawdata.h" +#include "video/image_location.h" +#include "video/image.h" +#include "video/imagepool.h" +#include "video/sdl/renderbackendsdl.h" +#include "video/opengl/renderbackendopengl.h" +#include "loaders/native/video_loaders/image_loader.h" +#include "loaders/native/video_loaders/subimage_loader.h" +#include "util/base/exception.h" + +using namespace FIFE; + +static const std::string IMAGE_FILE = "../../tests/data/beach_e1.png"; +static const std::string ALPHA_IMAGE_FILE = "../../tests/data/alpha_fidgit.png"; +static const std::string SUBIMAGE_FILE = "../../tests/data/rpg_tiles_01.png"; + +// Environment +struct environment { + boost::shared_ptr<TimeManager> timemanager; + boost::shared_ptr<VFS> vfs; + + environment() + : timemanager(new TimeManager()), + vfs(new VFS()) { + vfs->addSource(new VFSDirectory(vfs.get())); + if (SDL_Init(SDL_INIT_NOPARACHUTE | SDL_INIT_TIMER) < 0) { + throw SDLException(SDL_GetError()); + } + } +}; + +void test_image(VFS* vfs, RenderBackend& renderbackend) { + renderbackend.init(); + renderbackend.createMainScreen(800, 600, 0, false); + + ImageLoader provider(vfs); + boost::scoped_ptr<Image> img(dynamic_cast<Image*>(provider.loadResource(ImageLocation(IMAGE_FILE)))); + + int h = img->getHeight(); + int w = img->getWidth(); + for (int i = 0; i < 100; i++) { + renderbackend.startFrame(); + img->render(Rect(i, i, w, h)); + renderbackend.endFrame(); + } + for (int j = 0; j < 5; j++) { + for (int i = -10; i < 10; i++) { + renderbackend.startFrame(); + img->setXShift(i); + img->setYShift(i); + img->render(Rect(200, 200, w, h)); + renderbackend.endFrame(); + } + } +} + +void test_subimage(VFS* vfs, RenderBackend& renderbackend) { + renderbackend.init(); + renderbackend.createMainScreen(800, 600, 0, false); + + ImageLoader imgprovider(vfs); + boost::scoped_ptr<Image> img(dynamic_cast<Image*>(imgprovider.loadResource(ImageLocation(SUBIMAGE_FILE)))); + + ImageLocation location(SUBIMAGE_FILE); + location.setParentSource(&*img); + int W = img->getWidth(); + int w = W / 12; + int H = img->getHeight(); + int h = H / 12; + location.setWidth(w); + location.setHeight(h); + std::vector<Image*> subimages; + + SubImageLoader subprovider; + for (int x = 0; x < (W - w); x+=w) { + for (int y = 0; y < (H - h); y+=h) { + location.setXShift(x); + location.setYShift(y); + Image* sub = dynamic_cast<Image*>(subprovider.loadResource(location)); + subimages.push_back(sub); + } + } + + for (unsigned int i = 0; i < 200; i++) { + renderbackend.startFrame(); + subimages[i / 40]->render(Rect(200, 200, w, h)); + renderbackend.endFrame(); + } + std::vector<Image*>::iterator i = subimages.begin(); + while (i != subimages.end()) { + delete *i; + i++; + } + +} + +TEST(test_sdl_alphaoptimize) +{ + environment env; + RenderBackendSDL renderbackend; + renderbackend.init(); + renderbackend.createMainScreen(800, 600, 0, false); + renderbackend.setAlphaOptimizerEnabled(true); + + ImageLoader provider(env.vfs.get()); + env.vfs.get()->exists(IMAGE_FILE); + boost::scoped_ptr<Image> img(dynamic_cast<Image*>(provider.loadResource(ImageLocation(IMAGE_FILE)))); + env.vfs.get()->exists(ALPHA_IMAGE_FILE); + boost::scoped_ptr<Image> alpha_img(dynamic_cast<Image*>(provider.loadResource(ImageLocation(ALPHA_IMAGE_FILE)))); + + int h0 = img->getHeight(); + int w0 = img->getWidth(); + + int h1 = alpha_img->getHeight(); + int w1 = alpha_img->getWidth(); + for(int i=0; i != 200; ++i) { + renderbackend.startFrame(); + img->render(Rect(i, i, w0, h0)); + alpha_img->render(Rect(i, i, w1, h1)); + alpha_img->render(Rect(i, h0+i, w1, h1)); + img->render(Rect(i, h0+i, w0, h0)); + renderbackend.endFrame(); + } + + CHECK(img->getSurface()->format->Amask == 0); + CHECK(alpha_img->getSurface()->format->Amask != 0); +} + +TEST(test_sdl_image) +{ + environment env; + RenderBackendSDL renderbackend; + test_image(env.vfs.get(), renderbackend); +} + +TEST(test_ogl_image) +{ + environment env; + RenderBackendOpenGL renderbackend; + test_image(env.vfs.get(), renderbackend); +} + +TEST(test_sdl_subimage) +{ + environment env; + RenderBackendSDL renderbackend; + CHECK(env.vfs.get()->exists(IMAGE_FILE)); + test_subimage(env.vfs.get(), renderbackend); +} + +TEST(test_ogl_subimage) +{ + environment env; + RenderBackendOpenGL renderbackend; + test_subimage(env.vfs.get(), renderbackend); +} + +int main() { + return UnitTest::RunAllTests(); +}
--- a/tests/core_tests/test_rect++.cpp Sun Jul 13 07:46:49 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005-2008 by the FIFE team * - * http://www.fifengine.de * - * This file is part of FIFE. * - * * - * FIFE 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, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ - -// Standard C++ library includes -#include <ctime> -#include <vector> - -// Platform specific includes -#include "fife_unittest++.h" - -// 3rd party library includes - -// FIFE includes -// These includes are split up in two parts, separated by one empty line -// First block: files included from the FIFE root src directory -// Second block: files included from the same folder -#include "util/structures/rect.h" - -using namespace FIFE; - -TEST(rectangle_interesection) -{ - Rect a(0,0,10,10); - - std::vector<Rect> do_intersect; - #define ADD_RECT(x,y,w,h) do_intersect.push_back( Rect(x,y,w,h) ) - - ADD_RECT(5,5,10,10); - ADD_RECT(-5,5,10,10); - ADD_RECT(-5,-5,10,10); - ADD_RECT(5,-5,10,10); - - ADD_RECT(-5,5,20,1); - ADD_RECT(-5,5,10,1); - - ADD_RECT(5,-5,1,20); - ADD_RECT(5,-5,1,10); - - ADD_RECT(5,5,3,3); - - ADD_RECT(-5,-5,30,30); - - for(size_t i=0; i<do_intersect.size(); ++i) { - CHECK(a.intersects(do_intersect[i])); - CHECK(do_intersect[i].intersects(a)); - } - - std::vector<Rect> dont_intersect; - - #undef ADD_RECT - #define ADD_RECT(x,y,w,h) dont_intersect.push_back( Rect(x,y,w,h) ) - - ADD_RECT(-5,-5,4,4); - ADD_RECT(-5,-5,40,4); - ADD_RECT(-5,-5,4,40); - ADD_RECT(-5,-5,4,4); - - ADD_RECT(15,15,4,4); - ADD_RECT(15,15,40,4); - ADD_RECT(15,15,4,40); - - for(size_t i=0; i<dont_intersect.size(); ++i) { - CHECK(!a.intersects(dont_intersect[i])); - CHECK(!dont_intersect[i].intersects(a)); - } -} - -int main() { - return UnitTest::RunAllTests(); -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/core_tests/test_rect.cpp Sun Jul 13 07:52:58 2008 +0000 @@ -0,0 +1,88 @@ +/*************************************************************************** + * Copyright (C) 2005-2008 by the FIFE team * + * http://www.fifengine.de * + * This file is part of FIFE. * + * * + * FIFE 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, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * + ***************************************************************************/ + +// Standard C++ library includes +#include <ctime> +#include <vector> + +// Platform specific includes +#include "fife_unittest++.h" + +// 3rd party library includes + +// FIFE includes +// These includes are split up in two parts, separated by one empty line +// First block: files included from the FIFE root src directory +// Second block: files included from the same folder +#include "util/structures/rect.h" + +using namespace FIFE; + +TEST(rectangle_interesection) +{ + Rect a(0,0,10,10); + + std::vector<Rect> do_intersect; + #define ADD_RECT(x,y,w,h) do_intersect.push_back( Rect(x,y,w,h) ) + + ADD_RECT(5,5,10,10); + ADD_RECT(-5,5,10,10); + ADD_RECT(-5,-5,10,10); + ADD_RECT(5,-5,10,10); + + ADD_RECT(-5,5,20,1); + ADD_RECT(-5,5,10,1); + + ADD_RECT(5,-5,1,20); + ADD_RECT(5,-5,1,10); + + ADD_RECT(5,5,3,3); + + ADD_RECT(-5,-5,30,30); + + for(size_t i=0; i<do_intersect.size(); ++i) { + CHECK(a.intersects(do_intersect[i])); + CHECK(do_intersect[i].intersects(a)); + } + + std::vector<Rect> dont_intersect; + + #undef ADD_RECT + #define ADD_RECT(x,y,w,h) dont_intersect.push_back( Rect(x,y,w,h) ) + + ADD_RECT(-5,-5,4,4); + ADD_RECT(-5,-5,40,4); + ADD_RECT(-5,-5,4,40); + ADD_RECT(-5,-5,4,4); + + ADD_RECT(15,15,4,4); + ADD_RECT(15,15,40,4); + ADD_RECT(15,15,4,40); + + for(size_t i=0; i<dont_intersect.size(); ++i) { + CHECK(!a.intersects(dont_intersect[i])); + CHECK(!dont_intersect[i].intersects(a)); + } +} + +int main() { + return UnitTest::RunAllTests(); +}
--- a/tests/core_tests/test_vfs++.cpp Sun Jul 13 07:46:49 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005-2008 by the FIFE team * - * http://www.fifengine.de * - * This file is part of FIFE. * - * * - * FIFE 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, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ - -// Standard C++ library includes - -// Platform specific includes -#include "fife_unittest++.h" - -// 3rd party library includes -#include <boost/scoped_ptr.hpp> -#include <boost/shared_ptr.hpp> -#include <boost/filesystem/convenience.hpp> - -// FIFE includes -// These includes are split up in two parts, separated by one empty line -// First block: files included from the FIFE root src directory -// Second block: files included from the same folder -#include "vfs/vfs.h" -#include "util/structures/rect.h" -#include "vfs/vfs.h" -#include "vfs/vfsdirectory.h" -#include "vfs/raw/rawdata.h" -#include "util/base/exception.h" -#include "vfs/directoryprovider.h" - -static const std::string FIFE_TEST_DIR = "fifetestdir"; -using namespace FIFE; - -TEST(test_is_directory) -{ - boost::shared_ptr<VFS> vfs(new VFS()); - vfs->addSource(new VFSDirectory(vfs.get())); - - if(boost::filesystem::exists(FIFE_TEST_DIR+"/"+FIFE_TEST_DIR)) { - boost::filesystem::remove(FIFE_TEST_DIR+"/"+FIFE_TEST_DIR); - } - - if(boost::filesystem::exists(FIFE_TEST_DIR)) { - boost::filesystem::remove(FIFE_TEST_DIR); - } - CHECK(vfs->isDirectory("")); - CHECK(vfs->isDirectory("/")); - - CHECK(!vfs->isDirectory(FIFE_TEST_DIR)); - boost::filesystem::create_directory(FIFE_TEST_DIR); - CHECK(vfs->isDirectory(FIFE_TEST_DIR)); - CHECK(!vfs->isDirectory(FIFE_TEST_DIR+"/"+FIFE_TEST_DIR)); - boost::filesystem::create_directories(FIFE_TEST_DIR+"/"+FIFE_TEST_DIR); - CHECK(vfs->isDirectory(FIFE_TEST_DIR+"/"+FIFE_TEST_DIR)); - -} - -int main() { - return UnitTest::RunAllTests(); -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/core_tests/test_vfs.cpp Sun Jul 13 07:52:58 2008 +0000 @@ -0,0 +1,73 @@ +/*************************************************************************** + * Copyright (C) 2005-2008 by the FIFE team * + * http://www.fifengine.de * + * This file is part of FIFE. * + * * + * FIFE 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, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * + ***************************************************************************/ + +// Standard C++ library includes + +// Platform specific includes +#include "fife_unittest++.h" + +// 3rd party library includes +#include <boost/scoped_ptr.hpp> +#include <boost/shared_ptr.hpp> +#include <boost/filesystem/convenience.hpp> + +// FIFE includes +// These includes are split up in two parts, separated by one empty line +// First block: files included from the FIFE root src directory +// Second block: files included from the same folder +#include "vfs/vfs.h" +#include "util/structures/rect.h" +#include "vfs/vfs.h" +#include "vfs/vfsdirectory.h" +#include "vfs/raw/rawdata.h" +#include "util/base/exception.h" +#include "vfs/directoryprovider.h" + +static const std::string FIFE_TEST_DIR = "fifetestdir"; +using namespace FIFE; + +TEST(test_is_directory) +{ + boost::shared_ptr<VFS> vfs(new VFS()); + vfs->addSource(new VFSDirectory(vfs.get())); + + if(boost::filesystem::exists(FIFE_TEST_DIR+"/"+FIFE_TEST_DIR)) { + boost::filesystem::remove(FIFE_TEST_DIR+"/"+FIFE_TEST_DIR); + } + + if(boost::filesystem::exists(FIFE_TEST_DIR)) { + boost::filesystem::remove(FIFE_TEST_DIR); + } + CHECK(vfs->isDirectory("")); + CHECK(vfs->isDirectory("/")); + + CHECK(!vfs->isDirectory(FIFE_TEST_DIR)); + boost::filesystem::create_directory(FIFE_TEST_DIR); + CHECK(vfs->isDirectory(FIFE_TEST_DIR)); + CHECK(!vfs->isDirectory(FIFE_TEST_DIR+"/"+FIFE_TEST_DIR)); + boost::filesystem::create_directories(FIFE_TEST_DIR+"/"+FIFE_TEST_DIR); + CHECK(vfs->isDirectory(FIFE_TEST_DIR+"/"+FIFE_TEST_DIR)); + +} + +int main() { + return UnitTest::RunAllTests(); +}
--- a/tests/core_tests/test_zip++.cpp Sun Jul 13 07:46:49 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005-2008 by the FIFE team * - * http://www.fifengine.de * - * This file is part of FIFE. * - * * - * FIFE 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, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ - -// Standard C++ library includes -#include <iostream> -#include <iomanip> - -// Platform specific includes -#include "fife_unittest++.h" - -// 3rd party library includes - -// FIFE includes -// These includes are split up in two parts, separated by one empty line -// First block: files included from the FIFE root src directory -// Second block: files included from the same folder -#include "vfs/vfs.h" -#include "util/time/timemanager.h" -#include "vfs/vfs.h" -#include "vfs/vfsdirectory.h" -#include "vfs/zip/zipsource.h" -#include "vfs/raw/rawdata.h" -#include "util/base/exception.h" - -using namespace FIFE; - -// Environment -struct environment { - boost::shared_ptr<TimeManager> timemanager; - - environment() - : timemanager(new TimeManager()) {} -}; - -using namespace FIFE; - -static const std::string COMPRESSED_FILE = "../../tests/data/testmap.zip"; -static const std::string RAW_FILE = "../../tests/data/test.map"; - -TEST(test_decoder) { - environment env; - boost::shared_ptr<VFS> vfs(new VFS()); - vfs->addSource(new VFSDirectory(vfs.get())); - - CHECK(vfs->exists(COMPRESSED_FILE)); - vfs->addSource(new ZipSource(vfs.get(), COMPRESSED_FILE)); - - CHECK_THROW(vfs->open("does-not-exist"), NotFound); - std::set<std::string> dirlist = vfs->listDirectories("ziptest_content"); - - CHECK(dirlist.size() == 4); - CHECK(std::find(dirlist.begin(), dirlist.end(), "maps") != dirlist.end()); - CHECK(std::find(dirlist.begin(), dirlist.end(), "testdir1") != dirlist.end()); - CHECK(std::find(dirlist.begin(), dirlist.end(), "testdir2") != dirlist.end()); - CHECK(std::find(dirlist.begin(), dirlist.end(), "testdir3") != dirlist.end()); - - std::set<std::string> filelist = vfs->listFiles("ziptest_content"); - CHECK(filelist.size() == 0); - filelist = vfs->listFiles("ziptest_content/testdir1"); - - CHECK(filelist.size() == 4); - CHECK(std::find(filelist.begin(), filelist.end(), "file") != filelist.end()); - CHECK(std::find(filelist.begin(), filelist.end(), "file-a") != filelist.end()); - CHECK(std::find(filelist.begin(), filelist.end(), "file-b") != filelist.end()); - CHECK(std::find(filelist.begin(), filelist.end(), "file-c") != filelist.end()); - - CHECK(vfs->listFiles("ziptest_content/testdir3").size() == 0); - CHECK(vfs->listDirectories("ziptest_content/testdir1").size() == 0); - - CHECK(vfs->exists(RAW_FILE) && vfs->exists("ziptest_content/maps/test.map")); - RawData* fraw = vfs->open(RAW_FILE); - RawData* fcomp = vfs->open("ziptest_content/maps/test.map"); - - CHECK(fraw->getDataLength() == fcomp->getDataLength()); - std::cout << "9" << std::endl; - unsigned int smaller_len = fraw->getDataLength(); - if (fcomp->getDataLength() < smaller_len) { - smaller_len = fcomp->getDataLength(); - } - - uint8_t* d_raw = new uint8_t[fraw->getDataLength()]; - uint8_t* d_comp = new uint8_t[fcomp->getDataLength()]; - fraw->readInto(d_raw,fraw->getDataLength()); - fcomp->readInto(d_comp,fcomp->getDataLength()); - - std::cout << "scanning data..." << std::endl; - for (unsigned int i = 0; i < smaller_len; i++) { - uint8_t rawc = d_raw[i]; - uint8_t compc = d_comp[i]; - CHECK(rawc == compc); - - } - std::cout << "scanning finished" << std::endl; - delete[] d_raw; - delete[] d_comp; - delete fraw; - delete fcomp; -} - -int main() { - return UnitTest::RunAllTests(); -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/core_tests/test_zip.cpp Sun Jul 13 07:52:58 2008 +0000 @@ -0,0 +1,120 @@ +/*************************************************************************** + * Copyright (C) 2005-2008 by the FIFE team * + * http://www.fifengine.de * + * This file is part of FIFE. * + * * + * FIFE 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, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * + ***************************************************************************/ + +// Standard C++ library includes +#include <iostream> +#include <iomanip> + +// Platform specific includes +#include "fife_unittest++.h" + +// 3rd party library includes + +// FIFE includes +// These includes are split up in two parts, separated by one empty line +// First block: files included from the FIFE root src directory +// Second block: files included from the same folder +#include "vfs/vfs.h" +#include "util/time/timemanager.h" +#include "vfs/vfs.h" +#include "vfs/vfsdirectory.h" +#include "vfs/zip/zipsource.h" +#include "vfs/raw/rawdata.h" +#include "util/base/exception.h" + +using namespace FIFE; + +// Environment +struct environment { + boost::shared_ptr<TimeManager> timemanager; + + environment() + : timemanager(new TimeManager()) {} +}; + +using namespace FIFE; + +static const std::string COMPRESSED_FILE = "../../tests/data/testmap.zip"; +static const std::string RAW_FILE = "../../tests/data/test.map"; + +TEST(test_decoder) { + environment env; + boost::shared_ptr<VFS> vfs(new VFS()); + vfs->addSource(new VFSDirectory(vfs.get())); + + CHECK(vfs->exists(COMPRESSED_FILE)); + vfs->addSource(new ZipSource(vfs.get(), COMPRESSED_FILE)); + + CHECK_THROW(vfs->open("does-not-exist"), NotFound); + std::set<std::string> dirlist = vfs->listDirectories("ziptest_content"); + + CHECK(dirlist.size() == 4); + CHECK(std::find(dirlist.begin(), dirlist.end(), "maps") != dirlist.end()); + CHECK(std::find(dirlist.begin(), dirlist.end(), "testdir1") != dirlist.end()); + CHECK(std::find(dirlist.begin(), dirlist.end(), "testdir2") != dirlist.end()); + CHECK(std::find(dirlist.begin(), dirlist.end(), "testdir3") != dirlist.end()); + + std::set<std::string> filelist = vfs->listFiles("ziptest_content"); + CHECK(filelist.size() == 0); + filelist = vfs->listFiles("ziptest_content/testdir1"); + + CHECK(filelist.size() == 4); + CHECK(std::find(filelist.begin(), filelist.end(), "file") != filelist.end()); + CHECK(std::find(filelist.begin(), filelist.end(), "file-a") != filelist.end()); + CHECK(std::find(filelist.begin(), filelist.end(), "file-b") != filelist.end()); + CHECK(std::find(filelist.begin(), filelist.end(), "file-c") != filelist.end()); + + CHECK(vfs->listFiles("ziptest_content/testdir3").size() == 0); + CHECK(vfs->listDirectories("ziptest_content/testdir1").size() == 0); + + CHECK(vfs->exists(RAW_FILE) && vfs->exists("ziptest_content/maps/test.map")); + RawData* fraw = vfs->open(RAW_FILE); + RawData* fcomp = vfs->open("ziptest_content/maps/test.map"); + + CHECK(fraw->getDataLength() == fcomp->getDataLength()); + std::cout << "9" << std::endl; + unsigned int smaller_len = fraw->getDataLength(); + if (fcomp->getDataLength() < smaller_len) { + smaller_len = fcomp->getDataLength(); + } + + uint8_t* d_raw = new uint8_t[fraw->getDataLength()]; + uint8_t* d_comp = new uint8_t[fcomp->getDataLength()]; + fraw->readInto(d_raw,fraw->getDataLength()); + fcomp->readInto(d_comp,fcomp->getDataLength()); + + std::cout << "scanning data..." << std::endl; + for (unsigned int i = 0; i < smaller_len; i++) { + uint8_t rawc = d_raw[i]; + uint8_t compc = d_comp[i]; + CHECK(rawc == compc); + + } + std::cout << "scanning finished" << std::endl; + delete[] d_raw; + delete[] d_comp; + delete fraw; + delete fcomp; +} + +int main() { + return UnitTest::RunAllTests(); +}