/* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // TODO(b/129481165): remove the #pragma below and fix conversion issues #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wconversion" #include "LayerTransactionTest.h" namespace android { class SetGeometryTest : public LayerTransactionTest { protected: void SetUp() { LayerTransactionTest::SetUp(); ASSERT_EQ(NO_ERROR, mClient->initCheck()); mLayer = createLayer("Layer", mLayerWidth, mLayerHeight); fillBufferQueueLayerColor(mLayer, Color::RED, mLayerWidth, mLayerHeight); asTransaction([&](Transaction& t) { t.setLayer(mLayer, INT32_MAX - 1).show(mLayer); }); { SCOPED_TRACE("init"); ScreenCapture::captureScreen(&sc); sc->expectColor(Rect(0, 0, mLayerWidth, mLayerHeight), Color::RED); sc->expectBorder(Rect(0, 0, mLayerWidth, mLayerHeight), Color::BLACK); } } void TearDown() { LayerTransactionTest::TearDown(); sc = 0; mLayer = 0; } std::unique_ptr sc; sp mLayer; const int mLayerWidth = 100; const int mLayerHeight = 200; }; TEST_F(SetGeometryTest, SourceAtZeroNoScale) { Rect source = Rect(0, 0, 30, 30); Rect dest = Rect(60, 60, 90, 90); Transaction{}.setGeometry(mLayer, source, dest, 0).apply(); { SCOPED_TRACE("geometry applied"); ScreenCapture::captureScreen(&sc); sc->expectColor(dest, Color::RED); sc->expectBorder(dest, Color::BLACK); } } TEST_F(SetGeometryTest, SourceNotAtZero) { Rect source = Rect(40, 40, 70, 70); Rect dest = Rect(60, 60, 90, 90); Transaction{}.setGeometry(mLayer, source, dest, 0).apply(); { SCOPED_TRACE("geometry applied"); ScreenCapture::captureScreen(&sc); sc->expectColor(dest, Color::RED); sc->expectBorder(dest, Color::BLACK); } } TEST_F(SetGeometryTest, Scale) { Rect source = Rect(0, 0, 100, 200); Rect dest = Rect(0, 0, 200, 400); Transaction{}.setGeometry(mLayer, source, dest, 0).apply(); { SCOPED_TRACE("Scaled by 2"); ScreenCapture::captureScreen(&sc); sc->expectColor(dest, Color::RED); sc->expectBorder(dest, Color::BLACK); } dest = Rect(0, 0, 50, 100); Transaction{}.setGeometry(mLayer, source, dest, 0).apply(); { SCOPED_TRACE("Scaled by .5"); ScreenCapture::captureScreen(&sc); sc->expectColor(dest, Color::RED); sc->expectBorder(dest, Color::BLACK); } } } // namespace android // TODO(b/129481165): remove the #pragma below and fix conversion issues #pragma clang diagnostic pop // ignored "-Wconversion"