blob: 9c1a65eebc00e82fd3438227798083102b8cfacf [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "gtest/gtest.h"
#include "flutter/impeller/geometry/size.h"
namespace impeller {
namespace testing {
TEST(SizeTest, SizeIsEmpty) {
auto nan = std::numeric_limits<Scalar>::quiet_NaN();
// Non-empty
EXPECT_FALSE(Size(10.5, 7.2).IsEmpty());
// Empty both width and height both 0 or negative, in all combinations
EXPECT_TRUE(Size(0.0, 0.0).IsEmpty());
EXPECT_TRUE(Size(-1.0, -1.0).IsEmpty());
EXPECT_TRUE(Size(-1.0, 0.0).IsEmpty());
EXPECT_TRUE(Size(0.0, -1.0).IsEmpty());
// Empty for 0 or negative width or height (but not both at the same time)
EXPECT_TRUE(Size(10.5, 0.0).IsEmpty());
EXPECT_TRUE(Size(10.5, -1.0).IsEmpty());
EXPECT_TRUE(Size(0.0, 7.2).IsEmpty());
EXPECT_TRUE(Size(-1.0, 7.2).IsEmpty());
// Empty for NaN in width or height or both
EXPECT_TRUE(Size(10.5, nan).IsEmpty());
EXPECT_TRUE(Size(nan, 7.2).IsEmpty());
EXPECT_TRUE(Size(nan, nan).IsEmpty());
}
TEST(SizeTest, ISizeIsEmpty) {
// Non-empty
EXPECT_FALSE(ISize(10, 7).IsEmpty());
// Empty both width and height both 0 or negative, in all combinations
EXPECT_TRUE(ISize(0, 0).IsEmpty());
EXPECT_TRUE(ISize(-1, -1).IsEmpty());
EXPECT_TRUE(ISize(-1, 0).IsEmpty());
EXPECT_TRUE(ISize(0, -1).IsEmpty());
// Empty for 0 or negative width or height (but not both at the same time)
EXPECT_TRUE(ISize(10, 0).IsEmpty());
EXPECT_TRUE(ISize(10, -1).IsEmpty());
EXPECT_TRUE(ISize(0, 7).IsEmpty());
EXPECT_TRUE(ISize(-1, 7).IsEmpty());
}
TEST(SizeTest, IsSquare) {
EXPECT_TRUE(Size(20, 20).IsSquare());
EXPECT_FALSE(Size(20, 19).IsSquare());
EXPECT_FALSE(Size(19, 20).IsSquare());
EXPECT_TRUE(ISize(20, 20).IsSquare());
EXPECT_FALSE(ISize(20, 19).IsSquare());
EXPECT_FALSE(ISize(19, 20).IsSquare());
}
TEST(SizeTest, MaxDimension) {
EXPECT_EQ(Size(20, 20).MaxDimension(), 20);
EXPECT_EQ(Size(20, 19).MaxDimension(), 20);
EXPECT_EQ(Size(19, 20).MaxDimension(), 20);
EXPECT_EQ(Size(20, 21).MaxDimension(), 21);
EXPECT_EQ(Size(21, 20).MaxDimension(), 21);
EXPECT_EQ(ISize(20, 20).MaxDimension(), 20);
EXPECT_EQ(ISize(20, 19).MaxDimension(), 20);
EXPECT_EQ(ISize(19, 20).MaxDimension(), 20);
EXPECT_EQ(ISize(20, 21).MaxDimension(), 21);
EXPECT_EQ(ISize(21, 20).MaxDimension(), 21);
}
TEST(SizeTest, NegationOperator) {
EXPECT_EQ(-Size(10, 20), Size(-10, -20));
EXPECT_EQ(-Size(-10, 20), Size(10, -20));
EXPECT_EQ(-Size(10, -20), Size(-10, 20));
EXPECT_EQ(-Size(-10, -20), Size(10, 20));
}
} // namespace testing
} // namespace impeller