| // Copyright 2019 The Fuchsia 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 "src/ui/lib/escher/geometry/interval.h" |
| |
| #include <lib/syslog/cpp/macros.h> |
| |
| #include <gtest/gtest.h> |
| |
| #include "src/ui/lib/escher/geometry/intersection.h" |
| #include "src/ui/lib/escher/geometry/types.h" |
| |
| namespace { |
| |
| using namespace escher; |
| |
| TEST(Interval, Construct) { |
| Interval interval; // empty. |
| Interval interval2(30, 50); |
| |
| EXPECT_TRUE(interval.is_empty()); |
| EXPECT_EQ(interval2.min(), 30); |
| EXPECT_EQ(interval2.max(), 50); |
| } |
| |
| TEST(Interval, Join) { |
| Interval interval_1(10, 20); |
| Interval interval_2(50, 60); |
| |
| Interval result = interval_1.Join(interval_2); |
| EXPECT_TRUE(result == Interval(10, 60)); |
| } |
| |
| TEST(Interval, Intersect) { |
| Interval empty; |
| Interval first(10, 20); |
| Interval second(12, 19); |
| Interval third(30, 40); |
| Interval fourth(35, 45); |
| |
| EXPECT_TRUE(empty.Intersect(first) == Interval()); |
| EXPECT_TRUE(first.Intersect(empty) == Interval()); |
| |
| EXPECT_TRUE(first.Intersect(second) == second); |
| EXPECT_TRUE(second.Intersect(first) == second); |
| |
| EXPECT_TRUE(first.Intersect(third) == Interval()); |
| EXPECT_TRUE(third.Intersect(first) == Interval()); |
| |
| // Partially intersecting intervals. |
| EXPECT_TRUE(third.Intersect(fourth) == Interval(35, 40)); |
| EXPECT_TRUE(fourth.Intersect(third) == Interval(35, 40)); |
| } |
| |
| TEST(Interval, Contains) { |
| Interval interval(0, 100); |
| Interval interval2(0, 90); |
| Interval interval3(50, 70); |
| Interval interval4(90, 110); |
| |
| EXPECT_TRUE(interval.Contains(35)); |
| EXPECT_FALSE(interval.Contains(200)); |
| |
| // Checks to make sure intervals are closed. |
| EXPECT_TRUE(interval.Contains(interval2)); |
| |
| EXPECT_TRUE(interval.Contains(interval3)); |
| EXPECT_TRUE(interval2.Contains(interval3)); |
| |
| EXPECT_FALSE(interval.Contains(interval4)); |
| } |
| |
| } // namespace |