diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 166414ebb..ee02d7e96 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -443,6 +443,7 @@ endfunction() find_unittests(base base-lib ${sys_libs}) find_unittests(gfx gfx-lib base-lib ${sys_libs}) find_unittests(gui gui-lib gfx-lib base-lib ${libs3rdparty} ${sys_libs}) +find_unittests(file ${all_libs}) find_unittests(app ${all_libs}) find_unittests(. ${all_libs}) diff --git a/src/file/file_unittest.cpp b/src/file/file_unittest.cpp new file mode 100644 index 000000000..5ac5ce44b --- /dev/null +++ b/src/file/file_unittest.cpp @@ -0,0 +1,90 @@ +/* ASEPRITE + * Copyright (C) 2001-2012 David Capello + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include "config.h" + +#include "app.h" +#include "document.h" +#include "file/file.h" +#include "file/file_formats_manager.h" +#include "raster/raster.h" +#include "scoped_allegro.h" + +#include +#include +#include + +TEST(File, SeveralSizes) +{ + ScopedAllegro allegro; + // Register all possible image formats. + FileFormatsManager::instance().registerAllFormats(); + std::vector fn(256); + + for (int w=10; w<=10+503*2; w+=503) { + for (int h=10; h<=10+503*2; h+=503) { + //std::sprintf(&fn[0], "test_%dx%d.ase", w, h); + std::sprintf(&fn[0], "test.ase"); + + { + UniquePtr doc(Document::createBasicDocument(IMAGE_INDEXED, w, h, 256)); + doc->setFilename(&fn[0]); + + // Random pixels + Image* image = doc->getSprite()->getCurrentImage(); + std::srand(w*h); + int c = std::rand()%256; + for (int y=0; y(image, x, y, c); + if ((std::rand()&4) == 0) + c = std::rand()%256; + } + } + + save_document(doc); + } + + { + UniquePtr doc(load_document(&fn[0])); + ASSERT_EQ(w, doc->getSprite()->getWidth()); + ASSERT_EQ(h, doc->getSprite()->getHeight()); + + // Same random pixels (see the seed) + Image* image = doc->getSprite()->getCurrentImage(); + std::srand(w*h); + int c = std::rand()%256; + for (int y=0; y(image, x, y)); + if ((std::rand()&4) == 0) + c = std::rand()%256; + } + } + } + } + } +} + +int main(int argc, char** argv) +{ + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +}