vec_test.cpp revision 595ea77f6bdb5e9d0ddd3305da7a44b56f326b2c
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 19595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian#include <stdlib.h> 20595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian#include <ui/Region.h> 21595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian#include <ui/Rect.h> 22595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian#include <gtest/gtest.h> 23595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 24595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian#include <ui/vec4.h> 25595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 26595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopiannamespace android { 27595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 28595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopianclass VecTest : public testing::Test { 29595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopianprotected: 30595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian}; 31595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 32595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias AgopianTEST_F(VecTest, Basics) { 33595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v4; 34595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec3& v3(v4.xyz); 35595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 36595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(sizeof(vec4), sizeof(float)*4); 37595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(sizeof(vec3), sizeof(float)*3); 38595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(sizeof(vec2), sizeof(float)*2); 39595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ((void*)&v3, (void*)&v4); 40595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian} 41595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 42595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias AgopianTEST_F(VecTest, Constructors) { 43595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v0; 44595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 0); 45595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 0); 46595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 0); 47595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 0); 48595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 49595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v1(1); 50595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.x, 1); 51595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.y, 1); 52595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.z, 1); 53595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.w, 1); 54595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 55595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v2(1,2,3,4); 56595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.x, 1); 57595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.y, 2); 58595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.z, 3); 59595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.w, 4); 60595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 61595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v3(v2); 62595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v3.x, 1); 63595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v3.y, 2); 64595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v3.z, 3); 65595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v3.w, 4); 66595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 67595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v4(v3.xyz, 42); 68595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v4.x, 1); 69595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v4.y, 2); 70595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v4.z, 3); 71595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v4.w, 42); 72595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 73595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v5(vec3(v2.xy, 42), 24); 74595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v5.x, 1); 75595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v5.y, 2); 76595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v5.z, 42); 77595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v5.w, 24); 78595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 79595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian tvec4<double> vd(2); 80595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(vd.x, 2); 81595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(vd.y, 2); 82595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(vd.z, 2); 83595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(vd.w, 2); 84595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian} 85595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 86595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias AgopianTEST_F(VecTest, Access) { 87595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v0(1,2,3,4); 88595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0.x = 10; 89595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0.y = 20; 90595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0.z = 30; 91595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0.w = 40; 92595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 10); 93595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 20); 94595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 30); 95595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 40); 96595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 97595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0[0] = 100; 98595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0[1] = 200; 99595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0[2] = 300; 100595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0[3] = 400; 101595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 100); 102595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 200); 103595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 300); 104595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 400); 105595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 106595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0.xyz = vec3(1,2,3); 107595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 1); 108595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 2); 109595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 3); 110595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 400); 111595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian} 112595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 113595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias AgopianTEST_F(VecTest, UnaryOps) { 114595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v0(1,2,3,4); 115595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 116595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 += 1; 117595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 2); 118595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 3); 119595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 4); 120595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 5); 121595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 122595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 -= 1; 123595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 1); 124595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 2); 125595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 3); 126595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 4); 127595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 128595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 *= 2; 129595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 2); 130595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 4); 131595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 6); 132595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 8); 133595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 134595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 /= 2; 135595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 1); 136595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 2); 137595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 3); 138595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 4); 139595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 140595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v1(10, 20, 30, 40); 141595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 142595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 += v1; 143595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 11); 144595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 22); 145595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 33); 146595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 44); 147595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 148595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 -= v1; 149595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 1); 150595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 2); 151595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 3); 152595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 4); 153595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 154595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 *= v1; 155595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 10); 156595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 40); 157595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 90); 158595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 160); 159595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 160595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 /= v1; 161595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 1); 162595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 2); 163595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 3); 164595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 4); 165595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 166595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian ++v0; 167595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 2); 168595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 3); 169595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 4); 170595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 5); 171595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 172595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian ++++v0; 173595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 4); 174595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 5); 175595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 6); 176595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 7); 177595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 178595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian --v1; 179595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.x, 9); 180595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.y, 19); 181595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.z, 29); 182595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.w, 39); 183595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 184595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v1 = -v1; 185595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.x, -9); 186595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.y, -19); 187595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.z, -29); 188595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.w, -39); 189595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 190595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian tvec4<double> dv(1,2,3,4); 191595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v1 += dv; 192595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.x, -8); 193595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.y, -17); 194595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.z, -26); 195595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v1.w, -35); 196595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian} 197595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 198595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias AgopianTEST_F(VecTest, ComparisonOps) { 199595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v0(1,2,3,4); 200595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v1(10,20,30,40); 201595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 202595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_TRUE(v0 == v0); 203595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_TRUE(v0 != v1); 204595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_FALSE(v0 != v0); 205595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_FALSE(v0 == v1); 206595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian} 207595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 208595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias AgopianTEST_F(VecTest, ArithmeticOps) { 209595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v0(1,2,3,4); 210595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v1(10,20,30,40); 211595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 212595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec4 v2(v0 + v1); 213595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.x, 11); 214595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.y, 22); 215595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.z, 33); 216595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v2.w, 44); 217595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 218595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 = v1 * 2; 219595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 20); 220595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 40); 221595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 60); 222595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 80); 223595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 224595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 = 2 * v1; 225595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 20); 226595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 40); 227595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 60); 228595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 80); 229595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 230595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian tvec4<double> vd(2); 231595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian v0 = v1 * vd; 232595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.x, 20); 233595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.y, 40); 234595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.z, 60); 235595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(v0.w, 80); 236595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian} 237595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 238595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias AgopianTEST_F(VecTest, ArithmeticFunc) { 239595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec3 east(1, 0, 0); 240595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec3 north(0, 1, 0); 241595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec3 up( cross(east, north) ); 242595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(up, vec3(0,0,1)); 243595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(dot(east, north), 0); 244595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(length(east), 1); 245595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(distance(east, north), sqrtf(2)); 246595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 247595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec3 v0(1,2,3); 248595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian vec3 vn(normalize(v0)); 249595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_FLOAT_EQ(1, length(vn)); 250595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_FLOAT_EQ(length(v0), dot(v0, vn)); 251595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 252595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian tvec3<double> vd(east); 253595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian EXPECT_EQ(length(vd), 1); 254595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian} 255595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian 256595ea77f6bdb5e9d0ddd3305da7a44b56f326b2cMathias Agopian}; // namespace android 257