blob: ef52e4ffd9daf758ae75098e13e56e0860796144 [file] [log] [blame]
// Copyright 2016 The Cobalt Authors. All Rights Reserved.
//
// 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.
#include "cobalt/layout/layout_unit.h"
#include <cstring>
#include <functional>
#include "base/logging.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace cobalt {
namespace layout {
TEST(LayoutUnitTest, DefaultConstructorOrDestructorInitializesToZero) {
LayoutUnit value_a(5);
value_a.~LayoutUnit();
LayoutUnit* value_b = new (&value_a) LayoutUnit();
EXPECT_FLOAT_EQ(value_b->toFloat(), 0.0f);
}
TEST(LayoutUnitTest, DefaultConstructorInitializesToZero) {
union {
char* bytes;
LayoutUnit* value;
} value_data;
char bytes[sizeof(LayoutUnit)];
value_data.bytes = bytes;
// Initialize the variable data with nonzero bytes. Test for each nonzero byte
// value.
for (int byte_value = 1; byte_value < 256; ++byte_value) {
memset(value_data.bytes, byte_value, sizeof(LayoutUnit));
LayoutUnit* value = new (value_data.bytes) LayoutUnit();
EXPECT_FLOAT_EQ(value->toFloat(), 0.0f);
value_data.value->~LayoutUnit();
}
}
TEST(LayoutUnitTest, IntConstructor) {
LayoutUnit value(5);
EXPECT_FLOAT_EQ(value.toFloat(), 5.0f);
}
TEST(LayoutUnitTest, FloatConstructor) {
LayoutUnit value(5.0f);
EXPECT_FLOAT_EQ(value.toFloat(), 5.0f);
}
TEST(LayoutUnitTest, CopyConstructor) {
LayoutUnit value_a(5.0f);
LayoutUnit value_b(value_a);
EXPECT_FLOAT_EQ(value_b.toFloat(), 5.0f);
}
TEST(LayoutUnitTest, Swap) {
LayoutUnit value_a(5.0f);
LayoutUnit value_b(35.0f);
value_a.swap(value_b);
EXPECT_FLOAT_EQ(value_a.toFloat(), 35.0f);
EXPECT_FLOAT_EQ(value_b.toFloat(), 5.0f);
}
TEST(LayoutUnitTest, Assignment) {
LayoutUnit value_a(5.0f);
LayoutUnit value_b;
LayoutUnit value_c;
value_c = value_b = value_a;
EXPECT_FLOAT_EQ(value_b.toFloat(), 5.0f);
EXPECT_FLOAT_EQ(value_c.toFloat(), 5.0f);
}
TEST(LayoutUnitTest, EqualOperator) {
EXPECT_TRUE(LayoutUnit(-8192) == LayoutUnit(-8192));
EXPECT_FALSE(LayoutUnit(-8192) == LayoutUnit(-1));
EXPECT_FALSE(LayoutUnit(-8192) == LayoutUnit(0));
EXPECT_FALSE(LayoutUnit(-8192) == LayoutUnit(1));
EXPECT_FALSE(LayoutUnit(-8192) == LayoutUnit(8192));
EXPECT_FALSE(LayoutUnit(-1) == LayoutUnit(-8192));
EXPECT_TRUE(LayoutUnit(-1) == LayoutUnit(-1));
EXPECT_FALSE(LayoutUnit(-1) == LayoutUnit(0));
EXPECT_FALSE(LayoutUnit(-1) == LayoutUnit(1));
EXPECT_FALSE(LayoutUnit(-1) == LayoutUnit(8192));
EXPECT_FALSE(LayoutUnit(0) == LayoutUnit(-8192));
EXPECT_FALSE(LayoutUnit(0) == LayoutUnit(-1));
EXPECT_TRUE(LayoutUnit(0) == LayoutUnit(0));
EXPECT_FALSE(LayoutUnit(0) == LayoutUnit(1));
EXPECT_FALSE(LayoutUnit(0) == LayoutUnit(8192));
EXPECT_FALSE(LayoutUnit(1) == LayoutUnit(-8192));
EXPECT_FALSE(LayoutUnit(1) == LayoutUnit(-1));
EXPECT_FALSE(LayoutUnit(1) == LayoutUnit(0));
EXPECT_TRUE(LayoutUnit(1) == LayoutUnit(1));
EXPECT_FALSE(LayoutUnit(1) == LayoutUnit(8192));
EXPECT_FALSE(LayoutUnit(8192) == LayoutUnit(-8192));
EXPECT_FALSE(LayoutUnit(8192) == LayoutUnit(-1));
EXPECT_FALSE(LayoutUnit(8192) == LayoutUnit(0));
EXPECT_FALSE(LayoutUnit(8192) == LayoutUnit(1));
EXPECT_TRUE(LayoutUnit(8192) == LayoutUnit(8192));
}
TEST(LayoutUnitTest, NotEqualOperator) {
EXPECT_FALSE(LayoutUnit(-8192) != LayoutUnit(-8192));
EXPECT_TRUE(LayoutUnit(-8192) != LayoutUnit(-1));
EXPECT_TRUE(LayoutUnit(-8192) != LayoutUnit(0));
EXPECT_TRUE(LayoutUnit(-8192) != LayoutUnit(1));
EXPECT_TRUE(LayoutUnit(-8192) != LayoutUnit(8192));
EXPECT_TRUE(LayoutUnit(-1) != LayoutUnit(-8192));
EXPECT_FALSE(LayoutUnit(-1) != LayoutUnit(-1));
EXPECT_TRUE(LayoutUnit(-1) != LayoutUnit(0));
EXPECT_TRUE(LayoutUnit(-1) != LayoutUnit(1));
EXPECT_TRUE(LayoutUnit(-1) != LayoutUnit(8192));
EXPECT_TRUE(LayoutUnit(0) != LayoutUnit(-8192));
EXPECT_TRUE(LayoutUnit(0) != LayoutUnit(-1));
EXPECT_FALSE(LayoutUnit(0) != LayoutUnit(0));
EXPECT_TRUE(LayoutUnit(0) != LayoutUnit(1));
EXPECT_TRUE(LayoutUnit(0) != LayoutUnit(8192));
EXPECT_TRUE(LayoutUnit(1) != LayoutUnit(-8192));
EXPECT_TRUE(LayoutUnit(1) != LayoutUnit(-1));
EXPECT_TRUE(LayoutUnit(1) != LayoutUnit(0));
EXPECT_FALSE(LayoutUnit(1) != LayoutUnit(1));
EXPECT_TRUE(LayoutUnit(1) != LayoutUnit(8192));
EXPECT_TRUE(LayoutUnit(8192) != LayoutUnit(-8192));
EXPECT_TRUE(LayoutUnit(8192) != LayoutUnit(-1));
EXPECT_TRUE(LayoutUnit(8192) != LayoutUnit(0));
EXPECT_TRUE(LayoutUnit(8192) != LayoutUnit(1));
EXPECT_FALSE(LayoutUnit(8192) != LayoutUnit(8192));
}
TEST(LayoutUnitTest, GreaterEqualOperator) {
EXPECT_TRUE(LayoutUnit(-8192) >= LayoutUnit(-8192));
EXPECT_FALSE(LayoutUnit(-8192) >= LayoutUnit(-1));
EXPECT_FALSE(LayoutUnit(-8192) >= LayoutUnit(0));
EXPECT_FALSE(LayoutUnit(-8192) >= LayoutUnit(1));
EXPECT_FALSE(LayoutUnit(-8192) >= LayoutUnit(8192));
EXPECT_TRUE(LayoutUnit(-1) >= LayoutUnit(-8192));
EXPECT_TRUE(LayoutUnit(-1) >= LayoutUnit(-1));
EXPECT_FALSE(LayoutUnit(-1) >= LayoutUnit(0));
EXPECT_FALSE(LayoutUnit(-1) >= LayoutUnit(1));
EXPECT_FALSE(LayoutUnit(-1) >= LayoutUnit(8192));
EXPECT_TRUE(LayoutUnit(0) >= LayoutUnit(-8192));
EXPECT_TRUE(LayoutUnit(0) >= LayoutUnit(-1));
EXPECT_TRUE(LayoutUnit(0) >= LayoutUnit(0));
EXPECT_FALSE(LayoutUnit(0) >= LayoutUnit(1));
EXPECT_FALSE(LayoutUnit(0) >= LayoutUnit(8192));
EXPECT_TRUE(LayoutUnit(1) >= LayoutUnit(-8192));
EXPECT_TRUE(LayoutUnit(1) >= LayoutUnit(-1));
EXPECT_TRUE(LayoutUnit(1) >= LayoutUnit(0));
EXPECT_TRUE(LayoutUnit(1) >= LayoutUnit(1));
EXPECT_FALSE(LayoutUnit(1) >= LayoutUnit(8192));
EXPECT_TRUE(LayoutUnit(8192) >= LayoutUnit(-8192));
EXPECT_TRUE(LayoutUnit(8192) >= LayoutUnit(-1));
EXPECT_TRUE(LayoutUnit(8192) >= LayoutUnit(0));
EXPECT_TRUE(LayoutUnit(8192) >= LayoutUnit(1));
EXPECT_TRUE(LayoutUnit(8192) >= LayoutUnit(8192));
}
TEST(LayoutUnitTest, LessEqualOperator) {
EXPECT_TRUE(LayoutUnit(-8192) <= LayoutUnit(-8192));
EXPECT_TRUE(LayoutUnit(-8192) <= LayoutUnit(-1));
EXPECT_TRUE(LayoutUnit(-8192) <= LayoutUnit(0));
EXPECT_TRUE(LayoutUnit(-8192) <= LayoutUnit(1));
EXPECT_TRUE(LayoutUnit(-8192) <= LayoutUnit(8192));
EXPECT_FALSE(LayoutUnit(-1) <= LayoutUnit(-8192));
EXPECT_TRUE(LayoutUnit(-1) <= LayoutUnit(-1));
EXPECT_TRUE(LayoutUnit(-1) <= LayoutUnit(0));
EXPECT_TRUE(LayoutUnit(-1) <= LayoutUnit(1));
EXPECT_TRUE(LayoutUnit(-1) <= LayoutUnit(8192));
EXPECT_FALSE(LayoutUnit(0) <= LayoutUnit(-8192));
EXPECT_FALSE(LayoutUnit(0) <= LayoutUnit(-1));
EXPECT_TRUE(LayoutUnit(0) <= LayoutUnit(0));
EXPECT_TRUE(LayoutUnit(0) <= LayoutUnit(1));
EXPECT_TRUE(LayoutUnit(0) <= LayoutUnit(8192));
EXPECT_FALSE(LayoutUnit(1) <= LayoutUnit(-8192));
EXPECT_FALSE(LayoutUnit(1) <= LayoutUnit(-1));
EXPECT_FALSE(LayoutUnit(1) <= LayoutUnit(0));
EXPECT_TRUE(LayoutUnit(1) <= LayoutUnit(1));
EXPECT_TRUE(LayoutUnit(1) <= LayoutUnit(8192));
EXPECT_FALSE(LayoutUnit(8192) <= LayoutUnit(-8192));
EXPECT_FALSE(LayoutUnit(8192) <= LayoutUnit(-1));
EXPECT_FALSE(LayoutUnit(8192) <= LayoutUnit(0));
EXPECT_FALSE(LayoutUnit(8192) <= LayoutUnit(1));
EXPECT_TRUE(LayoutUnit(8192) <= LayoutUnit(8192));
}
TEST(LayoutUnitTest, GreaterOperator) {
EXPECT_FALSE(LayoutUnit(-8192) > LayoutUnit(-8192));
EXPECT_FALSE(LayoutUnit(-8192) > LayoutUnit(-1));
EXPECT_FALSE(LayoutUnit(-8192) > LayoutUnit(0));
EXPECT_FALSE(LayoutUnit(-8192) > LayoutUnit(1));
EXPECT_FALSE(LayoutUnit(-8192) > LayoutUnit(8192));
EXPECT_TRUE(LayoutUnit(-1) > LayoutUnit(-8192));
EXPECT_FALSE(LayoutUnit(-1) > LayoutUnit(-1));
EXPECT_FALSE(LayoutUnit(-1) > LayoutUnit(0));
EXPECT_FALSE(LayoutUnit(-1) > LayoutUnit(1));
EXPECT_FALSE(LayoutUnit(-1) > LayoutUnit(8192));
EXPECT_TRUE(LayoutUnit(0) > LayoutUnit(-8192));
EXPECT_TRUE(LayoutUnit(0) > LayoutUnit(-1));
EXPECT_FALSE(LayoutUnit(0) > LayoutUnit(0));
EXPECT_FALSE(LayoutUnit(0) > LayoutUnit(1));
EXPECT_FALSE(LayoutUnit(0) > LayoutUnit(8192));
EXPECT_TRUE(LayoutUnit(1) > LayoutUnit(-8192));
EXPECT_TRUE(LayoutUnit(1) > LayoutUnit(-1));
EXPECT_TRUE(LayoutUnit(1) > LayoutUnit(0));
EXPECT_FALSE(LayoutUnit(1) > LayoutUnit(1));
EXPECT_FALSE(LayoutUnit(1) > LayoutUnit(8192));
EXPECT_TRUE(LayoutUnit(8192) > LayoutUnit(-8192));
EXPECT_TRUE(LayoutUnit(8192) > LayoutUnit(-1));
EXPECT_TRUE(LayoutUnit(8192) > LayoutUnit(0));
EXPECT_TRUE(LayoutUnit(8192) > LayoutUnit(1));
EXPECT_FALSE(LayoutUnit(8192) > LayoutUnit(8192));
}
TEST(LayoutUnitTest, LessOperator) {
EXPECT_FALSE(LayoutUnit(-8192) < LayoutUnit(-8192));
EXPECT_TRUE(LayoutUnit(-8192) < LayoutUnit(-1));
EXPECT_TRUE(LayoutUnit(-8192) < LayoutUnit(0));
EXPECT_TRUE(LayoutUnit(-8192) < LayoutUnit(1));
EXPECT_TRUE(LayoutUnit(-8192) < LayoutUnit(8192));
EXPECT_FALSE(LayoutUnit(-1) < LayoutUnit(-8192));
EXPECT_FALSE(LayoutUnit(-1) < LayoutUnit(-1));
EXPECT_TRUE(LayoutUnit(-1) < LayoutUnit(0));
EXPECT_TRUE(LayoutUnit(-1) < LayoutUnit(1));
EXPECT_TRUE(LayoutUnit(-1) < LayoutUnit(8192));
EXPECT_FALSE(LayoutUnit(0) < LayoutUnit(-8192));
EXPECT_FALSE(LayoutUnit(0) < LayoutUnit(-1));
EXPECT_FALSE(LayoutUnit(0) < LayoutUnit(0));
EXPECT_TRUE(LayoutUnit(0) < LayoutUnit(1));
EXPECT_TRUE(LayoutUnit(0) < LayoutUnit(8192));
EXPECT_FALSE(LayoutUnit(1) < LayoutUnit(-8192));
EXPECT_FALSE(LayoutUnit(1) < LayoutUnit(-1));
EXPECT_FALSE(LayoutUnit(1) < LayoutUnit(0));
EXPECT_FALSE(LayoutUnit(1) < LayoutUnit(1));
EXPECT_TRUE(LayoutUnit(1) < LayoutUnit(8192));
EXPECT_FALSE(LayoutUnit(8192) < LayoutUnit(-8192));
EXPECT_FALSE(LayoutUnit(8192) < LayoutUnit(-1));
EXPECT_FALSE(LayoutUnit(8192) < LayoutUnit(0));
EXPECT_FALSE(LayoutUnit(8192) < LayoutUnit(1));
EXPECT_FALSE(LayoutUnit(8192) < LayoutUnit(8192));
}
TEST(LayoutUnitTest, PlusOperator) {
LayoutUnit value_a1(-5.0f);
LayoutUnit value_b1(5.0f);
LayoutUnit value_a2 = +value_a1;
LayoutUnit value_b2 = +value_b1;
EXPECT_FLOAT_EQ(value_a1.toFloat(), -5.0f);
EXPECT_FLOAT_EQ(value_b1.toFloat(), 5.0f);
EXPECT_FLOAT_EQ(value_a2.toFloat(), -5.0f);
EXPECT_FLOAT_EQ(value_b2.toFloat(), 5.0f);
}
TEST(LayoutUnitTest, MinusOperator) {
LayoutUnit value_a1(-5.0f);
LayoutUnit value_b1(5.0f);
LayoutUnit value_a2 = -value_a1;
LayoutUnit value_b2 = -value_b1;
EXPECT_FLOAT_EQ(value_a1.toFloat(), -5.0f);
EXPECT_FLOAT_EQ(value_b1.toFloat(), 5.0f);
EXPECT_FLOAT_EQ(value_a2.toFloat(), 5.0f);
EXPECT_FLOAT_EQ(value_b2.toFloat(), -5.0f);
}
TEST(LayoutUnitTest, AdditionAssignmentOperator) {
LayoutUnit value_a(5.0f);
LayoutUnit value_b(10.0f);
value_a += value_b;
EXPECT_FLOAT_EQ(value_b.toFloat(), 10.0f);
EXPECT_FLOAT_EQ(value_a.toFloat(), 15.0f);
}
TEST(LayoutUnitTest, AdditionOperator) {
EXPECT_EQ(LayoutUnit(-8192) + LayoutUnit(-8192), LayoutUnit(-8192 + -8192));
EXPECT_EQ(LayoutUnit(-8192) + LayoutUnit(-1), LayoutUnit(-8192 + -1));
EXPECT_EQ(LayoutUnit(-8192) + LayoutUnit(0), LayoutUnit(-8192 + 0));
EXPECT_EQ(LayoutUnit(-8192) + LayoutUnit(1), LayoutUnit(-8192 + 1));
EXPECT_EQ(LayoutUnit(-8192) + LayoutUnit(8192), LayoutUnit(-8192 + 8192));
EXPECT_EQ(LayoutUnit(-1) + LayoutUnit(-8192), LayoutUnit(-1 + -8192));
EXPECT_EQ(LayoutUnit(-1) + LayoutUnit(-1), LayoutUnit(-1 + -1));
EXPECT_EQ(LayoutUnit(-1) + LayoutUnit(0), LayoutUnit(-1 + 0));
EXPECT_EQ(LayoutUnit(-1) + LayoutUnit(1), LayoutUnit(-1 + 1));
EXPECT_EQ(LayoutUnit(-1) + LayoutUnit(8192), LayoutUnit(-1 + 8192));
EXPECT_EQ(LayoutUnit(0) + LayoutUnit(-8192), LayoutUnit(0 + -8192));
EXPECT_EQ(LayoutUnit(0) + LayoutUnit(-1), LayoutUnit(0 + -1));
EXPECT_EQ(LayoutUnit(0) + LayoutUnit(0), LayoutUnit(0 + 0));
EXPECT_EQ(LayoutUnit(0) + LayoutUnit(1), LayoutUnit(0 + 1));
EXPECT_EQ(LayoutUnit(0) + LayoutUnit(8192), LayoutUnit(0 + 8192));
EXPECT_EQ(LayoutUnit(1) + LayoutUnit(-8192), LayoutUnit(1 + -8192));
EXPECT_EQ(LayoutUnit(1) + LayoutUnit(-1), LayoutUnit(1 + -1));
EXPECT_EQ(LayoutUnit(1) + LayoutUnit(0), LayoutUnit(1 + 0));
EXPECT_EQ(LayoutUnit(1) + LayoutUnit(1), LayoutUnit(1 + 1));
EXPECT_EQ(LayoutUnit(1) + LayoutUnit(8192), LayoutUnit(1 + 8192));
EXPECT_EQ(LayoutUnit(8192) + LayoutUnit(-8192), LayoutUnit(8192 + -8192));
EXPECT_EQ(LayoutUnit(8192) + LayoutUnit(-1), LayoutUnit(8192 + -1));
EXPECT_EQ(LayoutUnit(8192) + LayoutUnit(0), LayoutUnit(8192 + 0));
EXPECT_EQ(LayoutUnit(8192) + LayoutUnit(1), LayoutUnit(8192 + 1));
EXPECT_EQ(LayoutUnit(8192) + LayoutUnit(8192), LayoutUnit(8192 + 8192));
}
TEST(LayoutUnitTest, SubtractionAssignmentOperator) {
LayoutUnit value_a(5.0f);
LayoutUnit value_b(10.0f);
value_a -= value_b;
EXPECT_FLOAT_EQ(value_b.toFloat(), 10.0f);
EXPECT_FLOAT_EQ(value_a.toFloat(), -5.0f);
}
TEST(LayoutUnitTest, SubtractionOperator) {
EXPECT_EQ(LayoutUnit(-8192) - LayoutUnit(-8192), LayoutUnit(-8192 - -8192));
EXPECT_EQ(LayoutUnit(-8192) - LayoutUnit(-1), LayoutUnit(-8192 - -1));
EXPECT_EQ(LayoutUnit(-8192) - LayoutUnit(0), LayoutUnit(-8192 - 0));
EXPECT_EQ(LayoutUnit(-8192) - LayoutUnit(1), LayoutUnit(-8192 - 1));
EXPECT_EQ(LayoutUnit(-8192) - LayoutUnit(8192), LayoutUnit(-8192 - 8192));
EXPECT_EQ(LayoutUnit(-1) - LayoutUnit(-8192), LayoutUnit(-1 - -8192));
EXPECT_EQ(LayoutUnit(-1) - LayoutUnit(-1), LayoutUnit(-1 - -1));
EXPECT_EQ(LayoutUnit(-1) - LayoutUnit(0), LayoutUnit(-1 - 0));
EXPECT_EQ(LayoutUnit(-1) - LayoutUnit(1), LayoutUnit(-1 - 1));
EXPECT_EQ(LayoutUnit(-1) - LayoutUnit(8192), LayoutUnit(-1 - 8192));
EXPECT_EQ(LayoutUnit(0) - LayoutUnit(-8192), LayoutUnit(0 - -8192));
EXPECT_EQ(LayoutUnit(0) - LayoutUnit(-1), LayoutUnit(0 - -1));
EXPECT_EQ(LayoutUnit(0) - LayoutUnit(0), LayoutUnit(0 - 0));
EXPECT_EQ(LayoutUnit(0) - LayoutUnit(1), LayoutUnit(0 - 1));
EXPECT_EQ(LayoutUnit(0) - LayoutUnit(8192), LayoutUnit(0 - 8192));
EXPECT_EQ(LayoutUnit(1) - LayoutUnit(-8192), LayoutUnit(1 - -8192));
EXPECT_EQ(LayoutUnit(1) - LayoutUnit(-1), LayoutUnit(1 - -1));
EXPECT_EQ(LayoutUnit(1) - LayoutUnit(0), LayoutUnit(1 - 0));
EXPECT_EQ(LayoutUnit(1) - LayoutUnit(1), LayoutUnit(1 - 1));
EXPECT_EQ(LayoutUnit(1) - LayoutUnit(8192), LayoutUnit(1 - 8192));
EXPECT_EQ(LayoutUnit(8192) - LayoutUnit(-8192), LayoutUnit(8192 - -8192));
EXPECT_EQ(LayoutUnit(8192) - LayoutUnit(-1), LayoutUnit(8192 - -1));
EXPECT_EQ(LayoutUnit(8192) - LayoutUnit(0), LayoutUnit(8192 - 0));
EXPECT_EQ(LayoutUnit(8192) - LayoutUnit(1), LayoutUnit(8192 - 1));
EXPECT_EQ(LayoutUnit(8192) - LayoutUnit(8192), LayoutUnit(8192 - 8192));
}
// Integer scaling math operators.
TEST(LayoutUnitTest, IntegerMultiplicationAssignmentOperator) {
LayoutUnit value_a(5.0f);
int value_b = 10;
value_a *= value_b;
EXPECT_EQ(value_b, 10);
EXPECT_FLOAT_EQ(value_a.toFloat(), 50.0f);
}
TEST(LayoutUnitTest, IntegerMultiplicationOperator) {
EXPECT_EQ(LayoutUnit(-128) * -128, LayoutUnit(-128 * -128));
EXPECT_EQ(LayoutUnit(-128) * -8, LayoutUnit(-128 * -8));
EXPECT_EQ(LayoutUnit(-128) * 0, LayoutUnit(-128 * 0));
EXPECT_EQ(LayoutUnit(-128) * 8, LayoutUnit(-128 * 8));
EXPECT_EQ(LayoutUnit(-128) * 128, LayoutUnit(-128 * 128));
EXPECT_EQ(LayoutUnit(-8) * -128, LayoutUnit(-8 * -128));
EXPECT_EQ(LayoutUnit(-8) * -8, LayoutUnit(-8 * -8));
EXPECT_EQ(LayoutUnit(-8) * 0, LayoutUnit(-8 * 0));
EXPECT_EQ(LayoutUnit(-8) * 8, LayoutUnit(-8 * 8));
EXPECT_EQ(LayoutUnit(-8) * 128, LayoutUnit(-8 * 128));
EXPECT_EQ(LayoutUnit(0) * -128, LayoutUnit(0 * -128));
EXPECT_EQ(LayoutUnit(0) * -8, LayoutUnit(0 * -8));
EXPECT_EQ(LayoutUnit(0) * 0, LayoutUnit(0 * 0));
EXPECT_EQ(LayoutUnit(0) * 8, LayoutUnit(0 * 8));
EXPECT_EQ(LayoutUnit(0) * 128, LayoutUnit(0 * 128));
EXPECT_EQ(LayoutUnit(8) * -128, LayoutUnit(8 * -128));
EXPECT_EQ(LayoutUnit(8) * -8, LayoutUnit(8 * -8));
EXPECT_EQ(LayoutUnit(8) * 0, LayoutUnit(8 * 0));
EXPECT_EQ(LayoutUnit(8) * 8, LayoutUnit(8 * 8));
EXPECT_EQ(LayoutUnit(8) * 128, LayoutUnit(8 * 128));
EXPECT_EQ(LayoutUnit(128) * -128, LayoutUnit(128 * -128));
EXPECT_EQ(LayoutUnit(128) * -8, LayoutUnit(128 * -8));
EXPECT_EQ(LayoutUnit(128) * 0, LayoutUnit(128 * 0));
EXPECT_EQ(LayoutUnit(128) * 8, LayoutUnit(128 * 8));
EXPECT_EQ(LayoutUnit(128) * 128, LayoutUnit(128 * 128));
EXPECT_EQ(-128 * LayoutUnit(-128), LayoutUnit(-128 * -128));
EXPECT_EQ(-128 * LayoutUnit(-8), LayoutUnit(-128 * -8));
EXPECT_EQ(-128 * LayoutUnit(0), LayoutUnit(-128 * 0));
EXPECT_EQ(-128 * LayoutUnit(8), LayoutUnit(-128 * 8));
EXPECT_EQ(-128 * LayoutUnit(128), LayoutUnit(-128 * 128));
EXPECT_EQ(-8 * LayoutUnit(-128), LayoutUnit(-8 * -128));
EXPECT_EQ(-8 * LayoutUnit(-8), LayoutUnit(-8 * -8));
EXPECT_EQ(-8 * LayoutUnit(0), LayoutUnit(-8 * 0));
EXPECT_EQ(-8 * LayoutUnit(8), LayoutUnit(-8 * 8));
EXPECT_EQ(-8 * LayoutUnit(128), LayoutUnit(-8 * 128));
EXPECT_EQ(0 * LayoutUnit(-128), LayoutUnit(0 * -128));
EXPECT_EQ(0 * LayoutUnit(-8), LayoutUnit(0 * -8));
EXPECT_EQ(0 * LayoutUnit(0), LayoutUnit(0 * 0));
EXPECT_EQ(0 * LayoutUnit(8), LayoutUnit(0 * 8));
EXPECT_EQ(0 * LayoutUnit(128), LayoutUnit(0 * 128));
EXPECT_EQ(8 * LayoutUnit(-128), LayoutUnit(8 * -128));
EXPECT_EQ(8 * LayoutUnit(-8), LayoutUnit(8 * -8));
EXPECT_EQ(8 * LayoutUnit(0), LayoutUnit(8 * 0));
EXPECT_EQ(8 * LayoutUnit(8), LayoutUnit(8 * 8));
EXPECT_EQ(8 * LayoutUnit(128), LayoutUnit(8 * 128));
EXPECT_EQ(128 * LayoutUnit(-128), LayoutUnit(128 * -128));
EXPECT_EQ(128 * LayoutUnit(-8), LayoutUnit(128 * -8));
EXPECT_EQ(128 * LayoutUnit(0), LayoutUnit(128 * 0));
EXPECT_EQ(128 * LayoutUnit(8), LayoutUnit(128 * 8));
EXPECT_EQ(128 * LayoutUnit(128), LayoutUnit(128 * 128));
}
TEST(LayoutUnitTest, IntegerDivisionAssignmentOperator) {
LayoutUnit value_a(50.0f);
int value_b = 10;
value_a /= value_b;
EXPECT_EQ(value_b, 10);
EXPECT_FLOAT_EQ(value_a.toFloat(), 5.0f);
}
TEST(LayoutUnitTest, IntegerDivisionOperator) {
EXPECT_EQ(LayoutUnit(-64) / -64, LayoutUnit(-64.0f / -64));
EXPECT_EQ(LayoutUnit(-64) / -4, LayoutUnit(-64.0f / -4));
EXPECT_EQ(LayoutUnit(-64) / 1, LayoutUnit(-64.0f / 1));
EXPECT_EQ(LayoutUnit(-64) / 4, LayoutUnit(-64.0f / 4));
EXPECT_EQ(LayoutUnit(-64) / 64, LayoutUnit(-64.0f / 64));
EXPECT_EQ(LayoutUnit(-4) / -64, LayoutUnit(-4.0f / -64));
EXPECT_EQ(LayoutUnit(-4) / -4, LayoutUnit(-4.0f / -4));
EXPECT_EQ(LayoutUnit(-4) / 1, LayoutUnit(-4.0f / 1));
EXPECT_EQ(LayoutUnit(-4) / 4, LayoutUnit(-4.0f / 4));
EXPECT_EQ(LayoutUnit(-4) / 64, LayoutUnit(-4.0f / 64));
EXPECT_EQ(LayoutUnit(1) / -64, LayoutUnit(1.0f / -64));
EXPECT_EQ(LayoutUnit(1) / -4, LayoutUnit(1.0f / -4));
EXPECT_EQ(LayoutUnit(1) / 1, LayoutUnit(1.0f / 1));
EXPECT_EQ(LayoutUnit(1) / 4, LayoutUnit(1.0f / 4));
EXPECT_EQ(LayoutUnit(1) / 64, LayoutUnit(1.0f / 64));
EXPECT_EQ(LayoutUnit(4) / -64, LayoutUnit(4.0f / -64));
EXPECT_EQ(LayoutUnit(4) / -4, LayoutUnit(4.0f / -4));
EXPECT_EQ(LayoutUnit(4) / 1, LayoutUnit(4.0f / 1));
EXPECT_EQ(LayoutUnit(4) / 4, LayoutUnit(4.0f / 4));
EXPECT_EQ(LayoutUnit(4) / 64, LayoutUnit(4.0f / 64));
EXPECT_EQ(LayoutUnit(64) / -64, LayoutUnit(64.0f / -64));
EXPECT_EQ(LayoutUnit(64) / -4, LayoutUnit(64.0f / -4));
EXPECT_EQ(LayoutUnit(64) / 1, LayoutUnit(64.0f / 1));
EXPECT_EQ(LayoutUnit(64) / 4, LayoutUnit(64.0f / 4));
EXPECT_EQ(LayoutUnit(64) / 64, LayoutUnit(64.0f / 64));
}
// Floating point scaling math operators.
TEST(LayoutUnitTest, FloatingPointMultiplicationAssignmentOperator) {
LayoutUnit value_a(5.0f);
float value_b = 10.0f;
value_a *= value_b;
EXPECT_FLOAT_EQ(value_b, 10.0f);
EXPECT_FLOAT_EQ(value_a.toFloat(), 50.0f);
}
TEST(LayoutUnitTest, FloatingPointMultiplicationOperator) {
EXPECT_EQ(LayoutUnit(-128) * -128.0f, LayoutUnit(-128 * -128));
EXPECT_EQ(LayoutUnit(-128) * -8.0f, LayoutUnit(-128 * -8));
EXPECT_EQ(LayoutUnit(-128) * 0.0f, LayoutUnit(-128 * 0));
EXPECT_EQ(LayoutUnit(-128) * 8.0f, LayoutUnit(-128 * 8));
EXPECT_EQ(LayoutUnit(-128) * 128.0f, LayoutUnit(-128 * 128));
EXPECT_EQ(LayoutUnit(-8) * -128.0f, LayoutUnit(-8 * -128));
EXPECT_EQ(LayoutUnit(-8) * -8.0f, LayoutUnit(-8 * -8));
EXPECT_EQ(LayoutUnit(-8) * 0.0f, LayoutUnit(-8 * 0));
EXPECT_EQ(LayoutUnit(-8) * 8.0f, LayoutUnit(-8 * 8));
EXPECT_EQ(LayoutUnit(-8) * 128.0f, LayoutUnit(-8 * 128));
EXPECT_EQ(LayoutUnit(0) * -128.0f, LayoutUnit(0 * -128));
EXPECT_EQ(LayoutUnit(0) * -8.0f, LayoutUnit(0 * -8));
EXPECT_EQ(LayoutUnit(0) * 0.0f, LayoutUnit(0 * 0));
EXPECT_EQ(LayoutUnit(0) * 8.0f, LayoutUnit(0 * 8));
EXPECT_EQ(LayoutUnit(0) * 128.0f, LayoutUnit(0 * 128));
EXPECT_EQ(LayoutUnit(8) * -128.0f, LayoutUnit(8 * -128));
EXPECT_EQ(LayoutUnit(8) * -8.0f, LayoutUnit(8 * -8));
EXPECT_EQ(LayoutUnit(8) * 0.0f, LayoutUnit(8 * 0));
EXPECT_EQ(LayoutUnit(8) * 8.0f, LayoutUnit(8 * 8));
EXPECT_EQ(LayoutUnit(8) * 128.0f, LayoutUnit(8 * 128));
EXPECT_EQ(LayoutUnit(128) * -128.0f, LayoutUnit(128 * -128));
EXPECT_EQ(LayoutUnit(128) * -8.0f, LayoutUnit(128 * -8));
EXPECT_EQ(LayoutUnit(128) * 0.0f, LayoutUnit(128 * 0));
EXPECT_EQ(LayoutUnit(128) * 8.0f, LayoutUnit(128 * 8));
EXPECT_EQ(LayoutUnit(128) * 128.0f, LayoutUnit(128 * 128));
EXPECT_EQ(-128.0f * LayoutUnit(-128), LayoutUnit(-128 * -128));
EXPECT_EQ(-128.0f * LayoutUnit(-8), LayoutUnit(-128 * -8));
EXPECT_EQ(-128.0f * LayoutUnit(0), LayoutUnit(-128 * 0));
EXPECT_EQ(-128.0f * LayoutUnit(8), LayoutUnit(-128 * 8));
EXPECT_EQ(-128.0f * LayoutUnit(128), LayoutUnit(-128 * 128));
EXPECT_EQ(-8.0f * LayoutUnit(-128), LayoutUnit(-8 * -128));
EXPECT_EQ(-8.0f * LayoutUnit(-8), LayoutUnit(-8 * -8));
EXPECT_EQ(-8.0f * LayoutUnit(0), LayoutUnit(-8 * 0));
EXPECT_EQ(-8.0f * LayoutUnit(8), LayoutUnit(-8 * 8));
EXPECT_EQ(-8.0f * LayoutUnit(128), LayoutUnit(-8 * 128));
EXPECT_EQ(0.0f * LayoutUnit(-128), LayoutUnit(0 * -128));
EXPECT_EQ(0.0f * LayoutUnit(-8), LayoutUnit(0 * -8));
EXPECT_EQ(0.0f * LayoutUnit(0), LayoutUnit(0 * 0));
EXPECT_EQ(0.0f * LayoutUnit(8), LayoutUnit(0 * 8));
EXPECT_EQ(0.0f * LayoutUnit(128), LayoutUnit(0 * 128));
EXPECT_EQ(8.0f * LayoutUnit(-128), LayoutUnit(8 * -128));
EXPECT_EQ(8.0f * LayoutUnit(-8), LayoutUnit(8 * -8));
EXPECT_EQ(8.0f * LayoutUnit(0), LayoutUnit(8 * 0));
EXPECT_EQ(8.0f * LayoutUnit(8), LayoutUnit(8 * 8));
EXPECT_EQ(8.0f * LayoutUnit(128), LayoutUnit(8 * 128));
EXPECT_EQ(128.0f * LayoutUnit(-128), LayoutUnit(128 * -128));
EXPECT_EQ(128.0f * LayoutUnit(-8), LayoutUnit(128 * -8));
EXPECT_EQ(128.0f * LayoutUnit(0), LayoutUnit(128 * 0));
EXPECT_EQ(128.0f * LayoutUnit(8), LayoutUnit(128 * 8));
EXPECT_EQ(128.0f * LayoutUnit(128), LayoutUnit(128 * 128));
}
TEST(LayoutUnitTest, FloatingPointDivisionAssignmentOperator) {
LayoutUnit value_a(50.0f);
float value_b = 10.0f;
value_a /= value_b;
EXPECT_FLOAT_EQ(value_b, 10.0f);
EXPECT_FLOAT_EQ(value_a.toFloat(), 5.0f);
}
TEST(LayoutUnitTest, FloatingPointDivisionOperator) {
EXPECT_EQ(LayoutUnit(-64) / -64.0f, LayoutUnit(-64.0f / -64.0f));
EXPECT_EQ(LayoutUnit(-64) / -4.0f, LayoutUnit(-64.0f / -4.0f));
EXPECT_EQ(LayoutUnit(-64) / 1.0f, LayoutUnit(-64.0f / 1.0f));
EXPECT_EQ(LayoutUnit(-64) / 4.0f, LayoutUnit(-64.0f / 4.0f));
EXPECT_EQ(LayoutUnit(-64) / 64.0f, LayoutUnit(-64.0f / 64.0f));
EXPECT_EQ(LayoutUnit(-4) / -64.0f, LayoutUnit(-4.0f / -64.0f));
EXPECT_EQ(LayoutUnit(-4) / -4.0f, LayoutUnit(-4.0f / -4.0f));
EXPECT_EQ(LayoutUnit(-4) / 1.0f, LayoutUnit(-4.0f / 1.0f));
EXPECT_EQ(LayoutUnit(-4) / 4.0f, LayoutUnit(-4.0f / 4.0f));
EXPECT_EQ(LayoutUnit(-4) / 64.0f, LayoutUnit(-4.0f / 64.0f));
EXPECT_EQ(LayoutUnit(1) / -64.0f, LayoutUnit(1.0f / -64.0f));
EXPECT_EQ(LayoutUnit(1) / -4.0f, LayoutUnit(1.0f / -4.0f));
EXPECT_EQ(LayoutUnit(1) / 1.0f, LayoutUnit(1.0f / 1.0f));
EXPECT_EQ(LayoutUnit(1) / 4.0f, LayoutUnit(1.0f / 4.0f));
EXPECT_EQ(LayoutUnit(1) / 64.0f, LayoutUnit(1.0f / 64.0f));
EXPECT_EQ(LayoutUnit(4) / -64.0f, LayoutUnit(4.0f / -64.0f));
EXPECT_EQ(LayoutUnit(4) / -4.0f, LayoutUnit(4.0f / -4.0f));
EXPECT_EQ(LayoutUnit(4) / 1.0f, LayoutUnit(4.0f / 1.0f));
EXPECT_EQ(LayoutUnit(4) / 4.0f, LayoutUnit(4.0f / 4.0f));
EXPECT_EQ(LayoutUnit(4) / 64.0f, LayoutUnit(4.0f / 64.0f));
EXPECT_EQ(LayoutUnit(64) / -64.0f, LayoutUnit(64.0f / -64.0f));
EXPECT_EQ(LayoutUnit(64) / -4.0f, LayoutUnit(64.0f / -4.0f));
EXPECT_EQ(LayoutUnit(64) / 1.0f, LayoutUnit(64.0f / 1.0f));
EXPECT_EQ(LayoutUnit(64) / 4.0f, LayoutUnit(64.0f / 4.0f));
EXPECT_EQ(LayoutUnit(64) / 64.0f, LayoutUnit(64.0f / 64.0f));
}
} // namespace layout
} // namespace cobalt