mirror of
https://github.com/aseprite/aseprite.git
synced 2024-12-27 03:16:58 +00:00
Add file_unittest.cpp with a basic test to load/save .ase file.
This commit is contained in:
parent
6c780db89b
commit
ccb4f11cc3
@ -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})
|
||||
|
||||
|
90
src/file/file_unittest.cpp
Normal file
90
src/file/file_unittest.cpp
Normal file
@ -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 <gtest/gtest.h>
|
||||
|
||||
#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 <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <vector>
|
||||
|
||||
TEST(File, SeveralSizes)
|
||||
{
|
||||
ScopedAllegro allegro;
|
||||
// Register all possible image formats.
|
||||
FileFormatsManager::instance().registerAllFormats();
|
||||
std::vector<char> 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<Document> 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<h; y++) {
|
||||
for (int x=0; x<w; x++) {
|
||||
image_putpixel_fast<IndexedTraits>(image, x, y, c);
|
||||
if ((std::rand()&4) == 0)
|
||||
c = std::rand()%256;
|
||||
}
|
||||
}
|
||||
|
||||
save_document(doc);
|
||||
}
|
||||
|
||||
{
|
||||
UniquePtr<Document> 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<h; y++) {
|
||||
for (int x=0; x<w; x++) {
|
||||
ASSERT_EQ(c, image_getpixel_fast<IndexedTraits>(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();
|
||||
}
|
Loading…
Reference in New Issue
Block a user