aseprite/src/app/file/file_tests.cpp

80 lines
2.1 KiB
C++
Raw Normal View History

2015-02-12 23:16:25 +08:00
// Aseprite
// Copyright (C) 2001-2018 David Capello
2015-02-12 23:16:25 +08:00
//
2016-08-27 04:02:58 +08:00
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
#include "tests/test.h"
#include "app/app.h"
#include "app/context.h"
#include "app/document.h"
#include "app/file/file.h"
#include "app/file/file_formats_manager.h"
#include "base/unique_ptr.h"
#include "doc/doc.h"
#include <cstdio>
#include <cstdlib>
#include <vector>
2014-07-07 09:10:48 +08:00
using namespace app;
TEST(File, SeveralSizes)
{
// Register all possible image formats.
std::vector<char> fn(256);
app::Context ctx;
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");
{
base::UniquePtr<app::Document> doc(ctx.documents().add(w, h, doc::ColorMode::INDEXED, 256));
doc->setFilename(&fn[0]);
// Random pixels
2016-06-08 06:38:56 +08:00
Layer* layer = doc->sprite()->root()->firstLayer();
2013-03-29 22:01:11 +08:00
ASSERT_TRUE(layer != NULL);
Image* image = layer->cel(frame_t(0))->image();
std::srand(w*h);
int c = std::rand()%256;
for (int y=0; y<h; y++) {
for (int x=0; x<w; x++) {
put_pixel_fast<IndexedTraits>(image, x, y, c);
if ((std::rand()&4) == 0)
c = std::rand()%256;
}
}
save_document(&ctx, doc.get());
2014-07-30 12:45:59 +08:00
doc->close();
}
{
base::UniquePtr<app::Document> doc(load_document(&ctx, &fn[0]));
ASSERT_EQ(w, doc->sprite()->width());
ASSERT_EQ(h, doc->sprite()->height());
// Same random pixels (see the seed)
2016-06-08 06:38:56 +08:00
Layer* layer = doc->sprite()->root()->firstLayer();
ASSERT_TRUE(layer != nullptr);
Image* image = layer->cel(frame_t(0))->image();
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, get_pixel_fast<IndexedTraits>(image, x, y));
if ((std::rand()&4) == 0)
c = std::rand()%256;
}
}
2014-07-30 12:45:59 +08:00
doc->close();
}
}
}
}