mirror of
https://github.com/aseprite/aseprite.git
synced 2025-02-19 15:40:31 +00:00
Tests for new function make_aligned_mask
This commit is contained in:
parent
68730c1c1b
commit
e12233a19d
@ -1,5 +1,5 @@
|
||||
// Aseprite Document Library
|
||||
// Copyright (c) 2019 Igara Studio S.A.
|
||||
// Copyright (c) 2019-2024 Igara Studio S.A.
|
||||
//
|
||||
// This file is released under the terms of the MIT license.
|
||||
// Read LICENSE.txt for more information.
|
||||
@ -11,6 +11,8 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "doc/grid.h"
|
||||
#include "doc/mask.h"
|
||||
#include "doc/util.h"
|
||||
#include "gfx/rect_io.h"
|
||||
#include "gfx/region.h"
|
||||
|
||||
@ -79,6 +81,80 @@ TEST(Grid, RectWithOffset)
|
||||
EXPECT_EQ(Rect(1, 1, 1, 1), grid.canvasToTile(Rect(30, 30, 1, 1)));
|
||||
}
|
||||
|
||||
TEST(Grid, MakeAlignedMask)
|
||||
{
|
||||
auto grid = Grid::MakeRect(Size(4, 4));
|
||||
grid.origin(gfx::Point(1,1));
|
||||
auto mask = Mask();
|
||||
mask.replace(gfx::Rect(3, 3, 4, 4));
|
||||
auto gridAlignedMask = make_aligned_mask(&grid, &mask);
|
||||
EXPECT_EQ(gfx::Rect(1,1,8,8), gridAlignedMask.bounds());
|
||||
|
||||
mask.replace(gfx::Rect(1, 1, 4, 4));
|
||||
auto gridAlignedMask2 = make_aligned_mask(&grid, &mask);
|
||||
EXPECT_EQ(gfx::Rect(1,1,4,4), gridAlignedMask2.bounds());
|
||||
|
||||
mask.add(gfx::Rect(8, 4, 1, 1));
|
||||
mask.add(gfx::Rect(7, 7, 1, 1));
|
||||
auto gridAlignedMask3 = make_aligned_mask(&grid, &mask);
|
||||
const bool _ = false;
|
||||
const bool X = true;
|
||||
bool expected[8*8] = {
|
||||
X, X, X, X, X, X, X, X,
|
||||
X, X, X, X, X, X, X, X,
|
||||
X, X, X, X, X, X, X, X,
|
||||
X, X, X, X, X, X, X, X,
|
||||
|
||||
_, _, _, _, X, X, X, X,
|
||||
_, _, _, _, X, X, X, X,
|
||||
_, _, _, _, X, X, X, X,
|
||||
_, _, _, _, X, X, X, X,
|
||||
};
|
||||
int c=0;
|
||||
for (int j=0; j<8; ++j)
|
||||
for (int i=0; i<8; ++i)
|
||||
EXPECT_EQ(expected[c++], gridAlignedMask3.bitmap()->getPixel(i, j));
|
||||
|
||||
mask.replace(gfx::Rect(4, 4, 1, 1));
|
||||
mask.add(gfx::Rect(5, 5, 1, 1));
|
||||
mask.add(gfx::Rect(8, 4, 1, 1));
|
||||
mask.add(gfx::Rect(9, 1, 1, 1));
|
||||
auto gridAlignedMask4 = make_aligned_mask(&grid, &mask);
|
||||
bool expected2[12*8] = {
|
||||
X, X, X, X, X, X, X, X, X, X, X, X,
|
||||
X, X, X, X, X, X, X, X, X, X, X, X,
|
||||
X, X, X, X, X, X, X, X, X, X, X, X,
|
||||
X, X, X, X, X, X, X, X, X, X, X, X,
|
||||
|
||||
_, _, _, _, X, X, X, X, _, _, _, _,
|
||||
_, _, _, _, X, X, X, X, _, _, _, _,
|
||||
_, _, _, _, X, X, X, X, _, _, _, _,
|
||||
_, _, _, _, X, X, X, X, _, _, _, _,
|
||||
};
|
||||
c=0;
|
||||
for (int j=0; j<8; ++j)
|
||||
for (int i=0; i<12; ++i)
|
||||
EXPECT_EQ(expected2[c++], gridAlignedMask4.bitmap()->getPixel(i, j));
|
||||
|
||||
grid.origin(gfx::Point(2,1));
|
||||
auto gridAlignedMask5 = make_aligned_mask(&grid, &mask);
|
||||
bool expected3[8*8] = {
|
||||
X, X, X, X, X, X, X, X,
|
||||
X, X, X, X, X, X, X, X,
|
||||
X, X, X, X, X, X, X, X,
|
||||
X, X, X, X, X, X, X, X,
|
||||
|
||||
X, X, X, X, _, _, _, _,
|
||||
X, X, X, X, _, _, _, _,
|
||||
X, X, X, X, _, _, _, _,
|
||||
X, X, X, X, _, _, _, _,
|
||||
};
|
||||
c=0;
|
||||
for (int j=0; j<8; ++j)
|
||||
for (int i=0; i<8; ++i)
|
||||
EXPECT_EQ(expected3[c++], gridAlignedMask5.bitmap()->getPixel(i, j));
|
||||
}
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
|
Loading…
x
Reference in New Issue
Block a user