1595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian/* 2595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian * Copyright 2013 The Android Open Source Project 3595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian * 4595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian * Licensed under the Apache License, Version 2.0 (the "License"); 5595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian * you may not use this file except in compliance with the License. 6595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian * You may obtain a copy of the License at 7595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian * 8595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian * http://www.apache.org/licenses/LICENSE-2.0 9595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian * 10595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian * Unless required by applicable law or agreed to in writing, software 11595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian * distributed under the License is distributed on an "AS IS" BASIS, 12595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian * See the License for the specific language governing permissions and 14595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian * limitations under the License. 15595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian */ 16595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 17595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian#define LOG_TAG "RegionTest" 18595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 19ed7d193ae95ce72a014c8ba1ab177f3abf958765Dan Albert#include <math.h> 20595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian#include <stdlib.h> 21ed7d193ae95ce72a014c8ba1ab177f3abf958765Dan Albert 22595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian#include <ui/Region.h> 23595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian#include <ui/Rect.h> 24595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian#include <ui/vec4.h> 25595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 26ed7d193ae95ce72a014c8ba1ab177f3abf958765Dan Albert#include <gtest/gtest.h> 27ed7d193ae95ce72a014c8ba1ab177f3abf958765Dan Albert 28595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopiannamespace android { 29595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 30595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopianclass VecTest : public testing::Test { 31595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian}; 32595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 33595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias AgopianTEST_F(VecTest, Basics) { 34595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v4; 35595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec3& v3(v4.xyz); 36595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 37595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(sizeof(vec4), sizeof(float)*4); 38595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(sizeof(vec3), sizeof(float)*3); 39595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(sizeof(vec2), sizeof(float)*2); 40595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ((void*)&v3, (void*)&v4); 41595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian} 42595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 43595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias AgopianTEST_F(VecTest, Constructors) { 44595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v0; 45595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 0); 46595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 0); 47595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 0); 48595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 0); 49595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 50595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v1(1); 51595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.x, 1); 52595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.y, 1); 53595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.z, 1); 54595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.w, 1); 55595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 56595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v2(1,2,3,4); 57595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.x, 1); 58595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.y, 2); 59595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.z, 3); 60595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.w, 4); 61595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 62595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v3(v2); 63595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v3.x, 1); 64595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v3.y, 2); 65595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v3.z, 3); 66595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v3.w, 4); 67595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 68595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v4(v3.xyz, 42); 69595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v4.x, 1); 70595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v4.y, 2); 71595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v4.z, 3); 72595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v4.w, 42); 73595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 74595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v5(vec3(v2.xy, 42), 24); 75595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v5.x, 1); 76595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v5.y, 2); 77595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v5.z, 42); 78595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v5.w, 24); 79595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 80595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian tvec4<double> vd(2); 81595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(vd.x, 2); 82595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(vd.y, 2); 83595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(vd.z, 2); 84595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(vd.w, 2); 85595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian} 86595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 87595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias AgopianTEST_F(VecTest, Access) { 88595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v0(1,2,3,4); 89595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0.x = 10; 90595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0.y = 20; 91595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0.z = 30; 92595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0.w = 40; 93595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 10); 94595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 20); 95595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 30); 96595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 40); 97595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 98595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0[0] = 100; 99595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0[1] = 200; 100595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0[2] = 300; 101595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0[3] = 400; 102595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 100); 103595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 200); 104595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 300); 105595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 400); 106595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 107595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0.xyz = vec3(1,2,3); 108595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 1); 109595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 2); 110595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 3); 111595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 400); 112595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian} 113595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 114595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias AgopianTEST_F(VecTest, UnaryOps) { 115595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v0(1,2,3,4); 116595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 117595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 += 1; 118595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 2); 119595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 3); 120595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 4); 121595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 5); 122595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 123595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 -= 1; 124595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 1); 125595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 2); 126595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 3); 127595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 4); 128595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 129595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 *= 2; 130595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 2); 131595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 4); 132595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 6); 133595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 8); 134595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 135595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 /= 2; 136595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 1); 137595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 2); 138595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 3); 139595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 4); 140595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 141595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v1(10, 20, 30, 40); 142595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 143595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 += v1; 144595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 11); 145595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 22); 146595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 33); 147595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 44); 148595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 149595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 -= v1; 150595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 1); 151595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 2); 152595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 3); 153595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 4); 154595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 155595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 *= v1; 156595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 10); 157595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 40); 158595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 90); 159595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 160); 160595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 161595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 /= v1; 162595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 1); 163595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 2); 164595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 3); 165595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 4); 166595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 167595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian ++v0; 168595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 2); 169595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 3); 170595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 4); 171595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 5); 172595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 173595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian ++++v0; 174595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 4); 175595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 5); 176595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 6); 177595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 7); 178595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 179595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian --v1; 180595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.x, 9); 181595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.y, 19); 182595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.z, 29); 183595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.w, 39); 184595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 185595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v1 = -v1; 186595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.x, -9); 187595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.y, -19); 188595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.z, -29); 189595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.w, -39); 190595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 191595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian tvec4<double> dv(1,2,3,4); 192595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v1 += dv; 193595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.x, -8); 194595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.y, -17); 195595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.z, -26); 196595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.w, -35); 197595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian} 198595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 199595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias AgopianTEST_F(VecTest, ComparisonOps) { 200595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v0(1,2,3,4); 201595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v1(10,20,30,40); 202595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 203595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_TRUE(v0 == v0); 204595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_TRUE(v0 != v1); 205595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_FALSE(v0 != v0); 206595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_FALSE(v0 == v1); 207595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian} 208595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 209595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias AgopianTEST_F(VecTest, ArithmeticOps) { 210595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v0(1,2,3,4); 211595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v1(10,20,30,40); 212595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 213595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v2(v0 + v1); 214595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.x, 11); 215595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.y, 22); 216595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.z, 33); 217595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.w, 44); 218595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 219595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 = v1 * 2; 220595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 20); 221595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 40); 222595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 60); 223595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 80); 224595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 225595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 = 2 * v1; 226595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 20); 227595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 40); 228595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 60); 229595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 80); 230595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 231595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian tvec4<double> vd(2); 232595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 = v1 * vd; 233595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 20); 234595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 40); 235595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 60); 236595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 80); 237595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian} 238595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 239595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias AgopianTEST_F(VecTest, ArithmeticFunc) { 240595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec3 east(1, 0, 0); 241595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec3 north(0, 1, 0); 242595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec3 up( cross(east, north) ); 243595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(up, vec3(0,0,1)); 244595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(dot(east, north), 0); 245595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(length(east), 1); 246595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(distance(east, north), sqrtf(2)); 247595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 248595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec3 v0(1,2,3); 249595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec3 vn(normalize(v0)); 250595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_FLOAT_EQ(1, length(vn)); 251595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_FLOAT_EQ(length(v0), dot(v0, vn)); 252595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 253595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian tvec3<double> vd(east); 254595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(length(vd), 1); 255595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian} 256595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 257595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian}; // namespace android 258