blob: fad92c276f417a323a2f0324c621176f016dde44 [file] [log] [blame]
// Copyright 2023 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <gtest/gtest.h>
#include <vector>
#include "screen-capture-utils/egl_capture.h"
namespace screenshot {
TEST(EglCaptureTest, Rotate) {
// The buffer is a screen of width = 4, height = 3:
//
// 0 1 2 3
// 4 5 6 7
// 8 9 a b
std::vector<uint32_t> buffer = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xa, 0xb,
};
// After rotation by 90 degree clockwise, it should be a screen of
// width = 3 and height = 4:
//
// 8 4 0
// 9 5 1
// a 6 2
// b 7 3
const std::vector<uint32_t> kExpected = {
8, 4, 0, 9, 5, 1, 0xa, 6, 2, 0xb, 7, 3,
};
DisplayBuffer::Result result{
.width = 4, .height = 3, .stride = 16, .buffer = buffer.data()};
std::vector<uint32_t> tmp;
EglDisplayBuffer::Rotate(result, tmp);
EXPECT_EQ(kExpected, buffer);
// Geometoric parameters should be updated accordingly.
EXPECT_EQ(3, result.width);
EXPECT_EQ(4, result.height);
EXPECT_EQ(3 * kBytesPerPixel, result.stride);
}
} // namespace screenshot