1261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik/* 2261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik * Copyright (C) 2016 The Android Open Source Project 3261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik * 4261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik * Licensed under the Apache License, Version 2.0 (the "License"); 5261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik * you may not use this file except in compliance with the License. 6261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik * You may obtain a copy of the License at 7261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik * 8261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik * http://www.apache.org/licenses/LICENSE-2.0 9261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik * 10261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik * Unless required by applicable law or agreed to in writing, software 11261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik * distributed under the License is distributed on an "AS IS" BASIS, 12261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik * See the License for the specific language governing permissions and 14261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik * limitations under the License. 15261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik */ 16261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik 17261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik#include <gtest/gtest.h> 18261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik 19261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik#include "Matrix.h" 20261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik#include "Rect.h" 21261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik 22261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craikusing namespace android::uirenderer; 23261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik 24034a10bf216cdef251928edf72d93668d81515f8Chris CraikTEST(Matrix, mapRect_emptyScaleSkew) { 25261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik // Skew, so we don't hit identity/translate/simple fast paths 26034a10bf216cdef251928edf72d93668d81515f8Chris Craik Matrix4 scaleMatrix; 27034a10bf216cdef251928edf72d93668d81515f8Chris Craik scaleMatrix.loadScale(10, 10, 1); 28034a10bf216cdef251928edf72d93668d81515f8Chris Craik scaleMatrix.skew(0.1f, 0.1f); 29261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik 30261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik // non-zero empty rect, so sorting x/y would make rect non-empty 31034a10bf216cdef251928edf72d93668d81515f8Chris Craik Rect empty(15, 20, 15, 100); 32261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik ASSERT_TRUE(empty.isEmpty()); 33034a10bf216cdef251928edf72d93668d81515f8Chris Craik scaleMatrix.mapRect(empty); 34034a10bf216cdef251928edf72d93668d81515f8Chris Craik EXPECT_EQ(Rect(170, 215, 250, 1015), empty); 351bcacfdcab0eaa0cee92bd7f5a1b5e271dd68e52John Reck EXPECT_FALSE(empty.isEmpty()) << "Empty 'line' rect doesn't remain empty when skewed."; 36034a10bf216cdef251928edf72d93668d81515f8Chris Craik} 37034a10bf216cdef251928edf72d93668d81515f8Chris Craik 38034a10bf216cdef251928edf72d93668d81515f8Chris CraikTEST(Matrix, mapRect_emptyRotate) { 39034a10bf216cdef251928edf72d93668d81515f8Chris Craik // Skew, so we don't hit identity/translate/simple fast paths 40034a10bf216cdef251928edf72d93668d81515f8Chris Craik Matrix4 skewMatrix; 41034a10bf216cdef251928edf72d93668d81515f8Chris Craik skewMatrix.loadRotate(45); 42034a10bf216cdef251928edf72d93668d81515f8Chris Craik 43034a10bf216cdef251928edf72d93668d81515f8Chris Craik // non-zero empty rect, so sorting x/y would make rect non-empty 44034a10bf216cdef251928edf72d93668d81515f8Chris Craik Rect lineRect(0, 100); 45034a10bf216cdef251928edf72d93668d81515f8Chris Craik ASSERT_TRUE(lineRect.isEmpty()); 46034a10bf216cdef251928edf72d93668d81515f8Chris Craik skewMatrix.mapRect(lineRect); 471bcacfdcab0eaa0cee92bd7f5a1b5e271dd68e52John Reck EXPECT_FALSE(lineRect.isEmpty()) << "Empty 'line' rect doesn't remain empty when rotated."; 48261725fdb2962271c222a049fcdf57bbdc8363c7Chris Craik} 49